WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)
程序员文章站
2024-01-10 23:23:10
还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现。新建一个包:com.aixs2client。目录结构如下: 一、服务端: 1、还是使用com.webservice包里的WebServiceImp.java 文件,但是不使用本地发布,所以需要删除发布代 ......
还是在webservice技术,服务端and客户端jdk-wsimport工具(一)的基础上实现。新建一个包:com.aixs2client。目录结构如下:
一、服务端:
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。
可以看到如下页面:
点击wsdl后面的url,看到wsdl文档:
此时服务端完成,服务已经随着tomcat的启动和关闭,可以使用soap ui进行测试。
二、客户端
1、在com.aixs2client包下新建clientservice.java
1 package com.aixs2client; 2 import org.apache.axiom.om.omelement; 3 import org.apache.axis2.axisfault; 4 import org.apache.axis2.addressing.endpointreference; 5 import org.apache.axis2.client.options; 6 import org.apache.axis2.rpc.client.rpcserviceclient; 7 8 import javax.xml.namespace.qname; 9 public class clientservice { 10 public static string getserviceinfo(string id) throws exception { 11 string result = null; 12 //名称空间 13 string namespace="http://webservice.com/"; 14 //服务的方法 15 string method="getinfo"; 16 //wsdl文档地址 17 string url = "http://127.0.0.1:8080/webservice/webservicedemo?wsdl"; 18 qname qname = new qname(namespace,method); 19 object[] param = new object[] { id }; 20 try { 21 //创建客户端实例 22 rpcserviceclient client = new rpcserviceclient(); 23 options options = new options(); 24 options.setto(new endpointreference(url)); 25 options.setaction(namespace+method);//调用.net等webservice服务是务必加上 26 client.setoptions(options); 27 omelement element = client.invokeblocking(qname, param); 28 //获取服务端返回的结果 29 result = element.getfirstelement().gettext(); 30 system.out.println(result); 31 } catch (axisfault e) { 32 e.printstacktrace(); 33 } 34 return result; 35 } 36 public static void main(string[] args) { 37 try { 38 getserviceinfo("1"); 39 getserviceinfo("3"); 40 getserviceinfo("4"); 41 getserviceinfo("100"); 42 } catch (exception e) { 43 e.printstacktrace(); 44 } 45 } 46 47 } 48 49
运行客户端代码,调用服务端方法,结果如下:
上一篇: java之接口相关知识