WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现。新建一个包:com.aixs2client。目录结构如下:

WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

一、服务端:

  1、还是使用com.webservice包里的WebServiceImp.java 文件,但是不使用本地发布,所以需要删除发布代码。

  WebServiceImp.java:

package com.webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class WebServiceImp {
@WebMethod
public String getInfo(String id){
String info="";
if (id.equals("1")) {
info="张三";
}else if (id.equals("2")) {
info="李四";
}else if(id.equals("3")){
info="王五";
}else if(id.equals("4")) {
info="赵六";
}else {
info="用户不存在";
}
return info;
}
}

 2、WEB-INF下新建一个xml文件,sun-jaxws.xml,内容如下:

endpoint 表示使用此配置文件里的参数发布
name:发布的名称,名字可以随意
implementation:发布的服务的实现类url-pattern:访问wsdl文档时的路径
1 <?xml version="1.0" encoding="UTF-8"?>
2 <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
3 <endpoint name="WebServiceDemo" implementation="com.webservice.WebServiceImp" url-pattern="/WebServiceDemo">
4 </endpoint>
5 </endpoints>

3、在WEB-INF下的web.xml中加入servlet配置.内容如下:

  web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<servlet>
<servlet-name>jaxws</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jaxws</servlet-name>
<url-pattern>/WebServiceDemo</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
load-on-startup:是否应该在web应用程序启动的时候就加载这个servlet,调用servlet中的init()方法,如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载。
url-pattern:请求的路径

4、配置完成后,将项目部署到Tomcat中,并在浏览器地址栏输入servlet请求的地址:http://127.0.0.1:8080/WebService/WebServiceDemo。

可以看到如下页面:WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

点击WSDL后面的url,看到wsdl文档:

WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

此时服务端完成,服务已经随着Tomcat的启动和关闭,可以使用Soap UI进行测试。

二、客户端

1、在com.aixs2client包下新建ClientService.java

 package com.aixs2client;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient; import javax.xml.namespace.QName;
public class ClientService {
public static String getServiceInfo(String Id) throws Exception {
String result = null;
//名称空间
String nameSpace="http://webservice.com/";
//服务的方法
String method="getInfo";
//wsdl文档地址
String Url = "http://127.0.0.1:8080/WebService/WebServiceDemo?wsdl";
QName qname = new QName(nameSpace,method);
Object[] param = new Object[] { Id };
try {
//创建客户端实例
RPCServiceClient client = new RPCServiceClient();
Options options = new Options();
options.setTo(new EndpointReference(Url));
options.setAction(nameSpace+method);//调用.net等webservice服务是务必加上
client.setOptions(options);
OMElement element = client.invokeBlocking(qname, param);
//获取服务端返回的结果
result = element.getFirstElement().getText();
System.out.println(result);
} catch (AxisFault e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
try {
getServiceInfo("1");
getServiceInfo("3");
getServiceInfo("4");
getServiceInfo("100");
} catch (Exception e) {
e.printStackTrace();
}
} }

运行客户端代码,调用服务端方法,结果如下:

WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

上一篇:Unity3D 中的协程


下一篇:甲骨文公司 Oracle