axis2 传递List对象
下载jar包:axis2-1.5.4-bin.zip 下载war包:axis2-1.5.4-war.zip 路径网上有 服务端目录: 客户端目录: ? 解压axis2-1.5.4-war.zip,获取axis2.war包,放到tomcat下,启动tomcat 1.tomcat.0webappsaxis2WEB-INF,复制该路径下的conf文件夹与services文件夹到,服务端的WEB-INF中 2.在services文件夹下建立对应目录。新建service.xml文件,复制下面service.xml代码 3.注释WEB-INFconfaxis2.xml 下“<module ref="addressing"/>” 大概在237行 4.复制axis2-1.5.4-bin.zip解压后lib包下的所有jar到服务端和客户端(后面再筛选必须的jar包) 4.在web.xml中添加 ? web.xml代码 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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_2_5.xsd"> <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>/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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
? 服务端service.xml代码 <serviceGroup> <!--下面定义服务名,当在url访问时用到此服务名--> <service name="BOBOService" scope="soapsession"> <description></description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </messageReceivers> <!--ServiceClass指定Java Class的位置,即实现服务的类。 --> <parameter name="ServiceClass" locked="xsd:false"> com.bobo.service.BOBOService </parameter> <!--operation 与Java Class中方法名对应 --> <operation name="receiveUser"> <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" /> <actionMapping>urn:receiveUser</actionMapping> </operation> </service> </serviceGroup>
? 服务端,客户端同样User代码 package com.bobo.entity; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 677484458789332877L; private int id; private String name; private String email; private String address; public User(){} public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return this.id + "#" + this.name + "#" + this.email + "#" + this.address; } }
? ? 客户端BOBOClient代码 package com.bobo.client; import java.util.ArrayList; import java.util.List; import javax.xml.namespace.QName; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axis2.Constants; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient; import org.apache.axis2.databinding.utils.BeanUtil; import org.apache.axis2.transport.http.HTTPConstants; import com.bobo.entity.User; public class BOBOClient { public static void main(String[] args) throws Exception { EndpointReference targetEPR = new EndpointReference("http://localhost:8085/Axis2service/services/BOBOService"); //EndpointReference targetEPR = new EndpointReference("http://localhost:8085/SayHello/services/APIWebService2"); try { Options options = new Options(); options.setTo(targetEPR); options.setTransportInProtocol(Constants.TRANSPORT_HTTP); options.setProperty(HTTPConstants.CHUNKED,"false");//设置不受限制. ServiceClient sender = new ServiceClient(); sender.setOptions(options); System.out.println("webservice start"); OMElement sayHello = doSetOMElement(); OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("",""); OMElement method = fac.createOMElement("receiveUser",omNs); method.addChild(sayHello); OMElement result = sender.sendReceive(method); System.out.println("webservice end"); } catch (Exception e) { e.printStackTrace(); } } /** *创建调用webservice接口所需的参数OMElement对象。 * * @return */ public static OMElement doSetOMElement() { List<User> list = new ArrayList<User>(); User user1 = new User(); user1.setId(1); user1.setName("chenbo"); user1.setAddress("aaaa"); user1.setEmail("ddddddd"); User user2 = new User(); user2.setId(2); user2.setName("chenbo2"); user2.setAddress("aaaa2"); user2.setEmail("ddddddd2"); list.add(user1); list.add(user2); String typeName = "computer"; // 构建 OMFactory 工厂 OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace omNamespace = factory.createOMNamespace("http://service.bob.com","ns"); OMElement omElement = BeanUtil.getOMElement(new QName("root"),list.toArray(),new QName("user"),false,null); omElement.addAttribute("name",typeName,omNamespace); return omElement; } }
? ? 服务端BOBOService代码 package com.bobo.service; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axiom.om.OMNode; import org.apache.axis2.AxisFault; import org.apache.axis2.databinding.utils.BeanUtil; import org.apache.axis2.engine.DefaultObjectSupplier; import com.bobo.entity.User; public class BOBOService { public OMElement receiveUser(OMElement userEle) throws Exception { System.out.println("进入服务端方法!!!!!!!"); List<User> list = getResults(userEle); for (User user : list) { System.out.println(user.getName()); } OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("",""); OMElement soapMain = fac.createOMElement("sendClient",omNs); return soapMain; } private static List<User> getResults(OMElement element) throws AxisFault { if (element == null) { return null; } element = (OMElement) element.getChildElements().next(); // 下个元素 Iterator iterator = element.getChildElements(); List<User> list = new ArrayList<User>(); while (iterator.hasNext()) { OMNode omNode = (OMNode) iterator.next(); if (omNode.getType() == OMNode.ELEMENT_NODE) { OMElement omElement = (OMElement) omNode; System.out.println(omElement.getLocalName()); if (omElement.getLocalName().toLowerCase().equals("user")) { User User = (User) BeanUtil.processObject(omElement,User.class,null,true,new DefaultObjectSupplier()); list.add(User); } } } return list; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- bash – 在Ctrl C之后继续执行脚本
- webservice中经常有这样的问题 JAXB 2.0 API is being load
- angularjs – Express.js和Angular.js项目的文件夹结构
- [linux] shell脚本编程-ubuntu创建vsftpd服务
- 如何在不使用-f的情况下让ssh在后台运行?
- Angular 2 rxjs switchmap返回Observable
- link 与 controller
- Vim 爱好者看过来,12 个实用的 Vim 使用技巧
- angularjs – 替换sinon存根中的多个方法
- ng-conf-2017 - Angular Form Validation