首页 axis2_webservice

axis2_webservice

举报
开通vip

axis2_webserviceAxis2 webservice配置 此种方法配置可以部署在任务机器上,不管你是部署在web容器中还是非web容器中,只要你机器上有jvm就可以运行。具体看下面这个图。 大概需要四块地方,一个是我们要写的接口类;还有就是axis2.xml这个配置文件(主要是配置端口),还有就是libs里面的jar包;另外就是reposrtory的几个包,addression-1.5.mar这个包可以不用管,webservice.aar这外包自己打的,里面主要是一个services.xml文件。我们先一个一个说说。 1、 所需...

axis2_webservice
Axis2 webservice配置 此种方法配置可以部署在任务机器上,不管你是部署在web容器中还是非web容器中,只要你机器上有jvm就可以运行。具体看下面这个图。 大概需要四块地方,一个是我们要写的接口类;还有就是axis2.xml这个配置文件(主要是配置端口),还有就是libs里面的jar包;另外就是reposrtory的几个包,addression-1.5.mar这个包可以不用管,webservice.aar这外包自己打的,里面主要是一个services.xml文件。我们先一个一个说说。 1、 所需jar包 自己去下吧,我把所需的列出来。 还是蛮多的,可能有些是不需要的,自己试着看吧。 2、 axis2.xml 这个文件只改一下端口就行,把端口改成你自己的。其他的都不需要改 true false false false false admin axis2 false false 8099 HTTP/1.1 chunked HTTP/1.1 chunked true true multicast apache.axis2.domain apache.axis2.application.domain true 10 228.0.0.4 45564 500 3000 127.0.0.1 127.0.0.1 4000 true true 127.0.0.1 4000 127.0.0.1 4001 3、 repository目录配置 这个目录下必须包含上图中的两个目录,里面的文件就需要改webservice.aar(这里的名字可以改成自己的,后缀为aar就行),把这个文件用解压缩软件打开,把里面的services.xml文件解压出来修改,修改好后再放进去。 上面三个地方分别是名称,描述,和你的webservice接口类,改一下就OK了。 WebService com.webservice.ws.service.WebServiceNode 4、 webservice接口类 WebServiceNode.java package com.webservice.ws.service; import java.util.ArrayList; import java.util.List; import com.webservice.ws.model.User; public class WebServiceNode { public String getString(){ return "sssssssssss"; } public User getUser(){ User user = new User(); user.setUserCode("test"); user.setUserName("userName"); return user; } public List getUserList(){ List list = new ArrayList(); User user = new User(); user.setUserCode("test1"); user.setUserName("userName1"); list.add(user); user = new User(); user.setUserCode("test2"); user.setUserName("userName2"); list.add(user); return list; } } 看到了吧,就普通的类的,只要把想要的东西返回去就行了,这里需要注意一点, 在返回集合的时候,比如我这里是List,在我这里没有问题,但是有时候可能会有问题,问题在于你返的list中包含的是一个对象。这个对象必须是其他webservice方法中或者是参数中出现过。什么意思?比如我这里的User类因为在第二个方法public User getUser()中的返回类型中出现了,所以后面返回的list没问题,如果我将第二个方法注释掉,第三个方法就会有问题。因为对象User没有被解释,客户端在把它转成User的时候就会报错,如果把第二方法加上,那么就把User解释成xml文件了,第三个方法传到客户端就能解释。这里也就是要求list中的对象必须在你的webservice接口中的返回值中或是参数中出现过。 我们看看他的解释。如下图, 看已经解释了,如果这里没解释,客户端就不能把它转成Userod 。这个类就说到这里 还有一个重要类 WebService类,这个类也可以不要,因为这个类是继承axis2的,如果不要我们就直接用他的父类。因为我们继承他也没做任何事。所以可以不要。 package com.webservice.ws.service; import org.apache.axis2.AxisFault; import org.apache.axis2.transport.SimpleAxis2Server; public class WebService extends SimpleAxis2Server { public WebService(String repoLocation, String confLocation) throws Exception { super(repoLocation, confLocation); } public void start() throws AxisFault { super.start(); } } 就两个方法都是父类的,如果不要,我们就直接用SimpleAxis2Server这个父类。下面看如何启动webservice。写一个main方法调用这里的start就可以了,只不过在调用前实例化时需要传两个参数,这两个参数就是axis2.xml和repository的路径。 如果不要这个类就用SimpleAxis2Server ws = new SimpleAxis2Server(repository,axis2); package com.webservice.ws.main; import java.io.File; import com.webservice.ws.service.WebService; public class Main { /** * @param args */ public static void main(String[] args) { try { String path = System.getProperty("user.dir"); String axis2 = path+File.separator+"conf"+File.separator+"axis2.xml"; String repository = path+File.separator+"repository"; WebService webService = new WebService(repository,axis2); webService.start(); } catch (Exception e) { e.printStackTrace(); } } } 启动这个类这样webservice服务就启起来了,客户端就可以调了。所以你可以完全不用web容器来部署。 客户端的调用,这里就不多说了,把类直接贴出来吧 package com.webservice.ws; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.xml.namespace.QName; 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.databinding.utils.BeanUtil; import org.apache.axis2.engine.DefaultObjectSupplier; import org.apache.axis2.rpc.client.RPCServiceClient; import com.webservice.ws.model.User; public class TestWs { @SuppressWarnings("unchecked") public void testWs_String() { try { RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference( "http://localhost:8099/axis2/services/WebService "); options.setTo(targetEPR); QName getValue = new QName("http://service.ws.webservice.com ", "getString "); Object[] obj = {}; OMElement tt = serviceClient.invokeBlocking(getValue, obj); Iterator elemetns = tt.getChildElements(); String str = new String(); while (elemetns.hasNext()) { OMElement tmp = (OMElement) elemetns.next(); str = (String) BeanUtil.processObject(tmp, String.class , null, true, new DefaultObjectSupplier()); } System.out.println(str); } catch (AxisFault e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") public void testWs_bean() { try { RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference( "http://localhost:8099/axis2/services/WebService"); options.setTo(targetEPR); QName getValue = new QName("http://service.ws.webservice.com", "getUser"); Object[
本文档为【axis2_webservice】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_043384
暂无简介~
格式:doc
大小:251KB
软件:Word
页数:17
分类:互联网
上传时间:2012-12-29
浏览量:39