webService 从入门到精通,一起打包了

一、接口的初级写法

   可以直接用Eclipse建立一个项目。Flie--->New--->Other---->Dynamic Web Project(java普通项目也可以,我个人喜欢用web项目)

---->输入Project name 其他默认,点下一步就可以了----->在Default output folder输入WebContent\WEB-INF\classes--->项目创建结束。

2、开始编写接口方法(包和类文件创建完毕的情况下)

在编写的类的上方需要添加"@WebService"

 

然后是方法编写的部分:

注意:::这里的方法是提供给人调用的接口,必须要是public修饰。

最后是接口的发布:

运行结果:

注意这里图片中的右上方的小框不能点掉了,不然接下来的测试是看不到结果的!!!!

下面是看发布的成功生成的wsdl文件 在浏览器中输入发布的地址加“?wsdl”就可以了(我的--(http://localhost:8080/service/function?wsdl)--)

2、用这里查看wsdl文件的地址自动生成客户端

首先依照上面的说的步骤新建另一个项目

鼠标点中这个新的项目,然后在项目上点击右键 New-->Other-->选择Web Service Client 

直接点击下一步在Service definition中上面提到的地址复制到这里“http://localhost:8080/service/function?wsdl”直接点击Finish

生成的客户端代码:

这里将生成的test包删掉这里用不到

测试代码的编写

点击运行就可以等待结果了。(这里等待结果一般时间都会很长)

这就是初级的接口

 

二、利用Axis框架进行应用型接口的开发

Axis框架现在用的比较多的版本是Axis1.4   和     Axis2.0   版本的。首先我先聊聊2.0版本的,因为2.0版本简单,而且2.0版本的环境也使用与1.4版本。

1、下载Axis2

Axis下载地址:  http://ws.apache.org/axis2/

在本文使用了目前Axis2的最新版本1.6.4。读者可以下载如下两个zip包:   

   axis2-1..6.4-bin.zip     

   axis2-1.6.4-war.zip 

环境配置(前提Tomcat已经配置好了)解压axis2-1.6.4-war.zip  将目录中的axis2.war文件放到Tomcat服务器的webapps目录中(本文使用 的Tomcat的版本是7.x),并启动Tomcat。(不要偷懒用eclipse启动,因为我不但想过还干过。)

Tomcat启动需要用cmd命令启动

启动成功

在浏览器地址栏中输入如下的URL:     http://localhost:8080/axis2/ 

好了!环境配置好了。接下来需要创建一个java项目(本人创建的是JavaWeb项目),将下载的axis2-1..6.4-bin.zip  解压,将相应的jar包放到我们项目的WEB-INF/lib文件夹下

lib文件夹下

接下来在我们创建的web项目中需要做把配置项目文件建一下:

看图建文件“/WebContent/WEB-INF/services/conf/META-INF/services.xml”

(--在WEB-INF下创建services文件夹然后创建------conf----META-INF----services.xml--)

当然web.xml文件是不可少的。

这是services.xml中的内容

<?xml version="1.0" encoding="UTF-8"?>
<service name="ThreeWS">  <!-- 指定服务名,随便定义 -->
    <description>测试axis2webservices</description><!-- 服务的作用说明,可写可不写 -->
     <!-- 指定要发布的类路径 -->
    <parameter name="ServiceClass">  <!-- 自定义    name-->
           com.thinkgem.jeesite.modules.caseinfo.TheThreeInterfaces.test     <!-- 写的类路径 -->
    </parameter>  
   <!-- 类里面的方法,有其他方法就在写个operation标签 -->
    <operation name="transWords">  <!-- 类里面的方法名 -->
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation>   
</service>
<!-- http://localhost:8080/testaxis2webservice/services/Testservice?wsdl -->

http://localhost:8080/testaxis2webservice/services/Testservice?wsdl

注释:上面的路径是搭建好web项目后要运行的wsdl路径   
1: 指定服务名 =====就是要运行的wsdl路径的?和/之间的那一部分===可以说指定的服务名是wsdl路径的一部分

2:服务的作用说明====这个不用管===就相当于一个注释,说说你要发布的webservice是干啥的

3:指定要发布的类路径======就是你要把那个类做成webservice

4:类里面的方法,有其他方法就在写个operation标签=======配置你写的类里面的方法

 

这是web.xml中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>webservices</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
</web-app>

现在在我们的项目中编写接口方法

编写完成启动项目:

路径的组成:tomcate里配置的ip和端口号 + 项目名 + web.xml里配置的<url-pattern> + service.xml里面指定的服务名

我的项目地址:http://localhost:8080/webservices/services/ThreeWS?wsdl

接下来生成客户端:可以按照初级教程的方法生成客户端

编写测试类:

package com.thinkgem.jeesite.modules.caseinfo.TheThreeInterfaces;

import java.rmi.RemoteException;

public class test {
	public static void main(String[] args) {
		ThreeWSPortTypeProxy proxy = new ThreeWSPortTypeProxy();
		String transWords="";
		try {
			transWords = proxy.transWords("work hard !!!!");
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(transWords);
	}

}

编写好测试类,然后直接测试就可以了

这个是Axis2的教程。

我在实际的开发过程中发现Axis2的环境可以在Axis1.4 中使用。

先看我的开发中Axis项目的文件结构(在进行开发的时候需要将axis-bin-1_4.zip中的jar引入到项目中)

这里的只有两个核心类只有ThreeWS和ThreeImpl文件

代码

/*
 * @(#) Three.java 2016年12月27日
 *
 * Copyright (c) 2016, SIMPO Technology. All Rights Reserved. SIMPO Technology. CONFIDENTIAL
 */
package com.thinkgem.jeesite.modules.caseinfo.TheThreeInterfaces;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.parsers.ParserConfigurationException;

/**
 * @author SandRomance
 * @version 1.0
 * @since 2016年12月27日
 */
@WebService(name ="ThreeWS")
public interface ThreeWS {

    //获取调解员信息
    @WebMethod
    public String getMediators(String arg1,String arg2) throws ParserConfigurationException;

    //保存案件信息
    @WebMethod
    public String saveMediation(String arg1,String arg2) throws ParserConfigurationException;




}

ThreeImpl的ThreeWS接口实现代码:

/*
 * @(#) ThreeImpl.java 2018年7月17日
 *
 * Copyright (c) 2018, SIMPO Technology. All Rights Reserved. SIMPO Technology. CONFIDENTIAL
 */
package com.thinkgem.jeesite.modules.caseinfo.TheThreeInterfaces;

import org.apache.commons.codec.binary.Base64;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.parsers.ParserConfigurationException;

import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;

/**
 * @ClassName: ThreeImpl
 * @Description: 力宇接口
 * @author SandRomance
 * @date 2018年7月18日 上午10:05:31
 */
@WebService(endpointInterface = "com.thinkgem.jeesite.modules.caseinfo.TheThreeInterfaces.ThreeWS")
public class ThreeImpl implements ThreeWS {

	@Override
	public String getMediators(String arg1, String arg2) throws ParserConfigurationException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String saveMediation(String arg1, String arg2) throws ParserConfigurationException {
		// TODO Auto-generated method stub
		return null;
	}}

 下面编写配置文件

先看一下文件结构

在WEB-INF下建server-config.wsdd文件

内容:

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <globalConfiguration>
    <parameter name="sendMultiRefs" value="true"/>
    <parameter name="disablePrettyXML" value="true"/>
    <parameter name="adminPassword" value="admin"/>

    <parameter name="dotNetSoapEncFix" value="true"/>
    <parameter name="enableNamespacePrefixOptimization" value="false"/>
    <parameter name="sendXMLDeclaration" value="true"/>
    <parameter name="sendXsiTypes" value="true"/>
    <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
    <requestFlow>
      <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="session"/>
      </handler>
      <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="request"/>
        <parameter name="extension" value=".jwr"/>
      </handler>
    </requestFlow>
  </globalConfiguration>

  <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
  <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
  <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<!--  <service name="AdminService" provider="java:MSG">
    <parameter name="allowedMethods" value="AdminService"/>
    <parameter name="enableRemoteAdmin" value="false"/>
    <parameter name="className" value="org.apache.axis.utils.Admin"/>
    <namespace>http://xml.apache.org/axis/wsdd/</namespace>
  </service>

  <service name="Version" provider="java:RPC">
    <parameter name="allowedMethods" value="getVersion"/>
    <parameter name="className" value="org.apache.axis.Version"/>
  </service>-->
  <!-- <service name="HelloWorld" provider="java:RPC" style="document" use="literal">
    <parameter name="className" value="example.HelloWorld"/>
    <parameter name="allowedMethods" value="*"/>
    <parameter name="scope" value="Application"/>
    <namespace>http://example</namespace>
  </service>-->
  <!--接口的名字 -->
  <service name="ThreeWS" provider="java:RPC">
    <parameter name="allowedMethods" value="*"/>
    <!--提供外接调用的类-->
    <parameter name="className" value="com.thinkgem.jeesite.modules.caseinfo.TheThreeInterfaces.ThreeImpl" />
    <parameter name="scope" value="Application"/>

  </service>

  <handler name="soapmonitor" type="java:org.apache.axis.handlers.SOAPMonitorHandler">
    <parameter name="wsdlURL" value="/axis/SOAPMonitorService-impl.wsdl"/>
    <parameter name="serviceName" value="ThreeWS"/>
    <parameter name="namespace" value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/>
    <parameter name="portName" value="Demo"/>
 </handler>
  <transport name="http">
    <requestFlow>
      <handler type="URLMapper"/>
      <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>

      <!--comment following line for REMOVING wsdl spying via SOAPMonitor-->
      <handler type="soapmonitor"/>
    </requestFlow>
    <responseFlow>
      <!--comment following line for REMOVING wsdl spying via SOAPMonitor-->
      <handler type="soapmonitor"/>
    </responseFlow>
    <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
    <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
    <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>
    <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>
    <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
    <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
  </transport>
  <transport name="local">
    <responseFlow>
      <handler type="LocalResponder"/>
    </responseFlow>
  </transport>
</deployment>

web.xml的内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>my</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
  </servlet>
  <servlet>
    <display-name>Axis Admin Servlet</display-name>
    <servlet-name>AdminServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet>
    <display-name>SOAPMonitorService</display-name>
    <servlet-name>SOAPMonitorService</servlet-name>
    <servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>
    <init-param>
      <param-name>SOAPMonitorPort</param-name>
      <param-value>5101</param-value>
    </init-param>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/servlet/AxisServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>*.jws</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>SOAPMonitorService</servlet-name>
    <url-pattern>/SOAPMonitor</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/servlet/AdminServlet</url-pattern>
  </servlet-mapping>
  <mime-mapping>
    <extension>wsdl</extension>
    <mime-type>text/xml</mime-type>
  </mime-mapping>
</web-app>

用tomcat运行项目 并访问wsdl文件(“http://localhost:8080/my/services/ThreeWS?wsdl”): 

下面按照上面的方法生成客户端,测试就可以了。两种版本不一样,不能互相访问,可能生成策略不一样。所以需要注意!

 

 

 

 

 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值