1. ?首先,先编写服务端代码?
?? ??
- public?class?ReturnObjectService?{??
- ??
- ??????
- ????public?User?getUser(String?name)?{??
- ????????User?user?=?new?User();??
- ????????user.setUsername(name);??
- ????????return?user;??
- ????}??
- ??????
- }??
public class ReturnObjectService { public User getUser(String name) { User user = new User(); user.setUsername(name); return user; } }
- package?server.object;??
- ??
- import?java.io.Serializable;??
- ??
- ??
- public?class?User?implements?Serializable{??
- ??
- ????private?String?username;??
- ??
- ????public?String?getUsername()?{??
- ????????return?username;??
- ????}??
- ??
- ????public?void?setUsername(String?username)?{??
- ????????this.username?=?username;??
- ????}??
- ??????
- }??
package server.object; import java.io.Serializable; public class User implements Serializable{ private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
2. ?进行手动打包过程。 ?新建一个文件夹,放入对应的服务端class(要求带入文件路径)。新建一个META-INF文件夹,并在其中编写services.xml文件,具体内容如下:
?
??
- <service?name="returnObjectService">??
- ????<parameter?name="ServiceClass">??
- ????????server.object.ReturnObjectService?????
- ????</parameter>??
- ????<messageReceivers>??
- ????????<messageReceiver?mep="http://www.w3.org/2004/08/wsdl/in-out"??
- ????????????????class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"?/>??
- ????????<messageReceiver?mep="http://www.w3.org/2004/08/wsdl/in-only"??
- ????????????????class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"?/>??
- ????</messageReceivers>??
- </service>??
<service name="returnObjectService"> <parameter name="ServiceClass"> server.object.ReturnObjectService </parameter> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> </messageReceivers> </service>
?? ?
?
?? ? ? 可以用开始进行打包处理,打包语句如下:进入需要打包的文件路径,直接执行 jar cvf ?打包后名字.aar . (后面有个点,表示当前路径),
或者jar cvf 打包后名字.aar ?文件夹名 ?文件夹名 ? 等两种方式都可以。
?? ? ?打包后,把对应的aar包放入Tomcat6.0\webapps\axis2\WEB-INF\services 路径之下,就可以了。?? ? ? ?
?
3. ?编写客户端代码:
?? ??
- package?client;??
- ??
- import?javax.xml.namespace.QName;??
- ??
- import?org.apache.axis2.AxisFault;??
- import?org.apache.axis2.addressing.EndpointReference;??
- import?org.apache.axis2.client.Options;??
- import?org.apache.axis2.rpc.client.RPCServiceClient;??
- ??
- public?class?ReturnObjectTest?{??
- ??
- ??????
- ????public?static?void?main(String[]?args)?throws?AxisFault?{??
- ????????String?target?=?"http://localhost:8080/axis2/services/returnObjectService";??
- ????????RPCServiceClient?client?=?new?RPCServiceClient();??
- ????????Options?options?=?client.getOptions();??
- ????????options.setManageSession(true);??
- ??
- ????????EndpointReference?epr?=?new?EndpointReference(target);??
- ????????options.setTo(epr);??
- ??
- ????????QName?qname?=?new?QName("http://object.server",?"getUser");??
- ????????Object[]?result?=?client.invokeBlocking(qname,?new?Object[]?{"linwei"},new?Class[]?{?User.class?});??
- ????????User?user?=?(User)result[0];??
- ????????System.out.println("user.username?is?"?+?user.getUsername());??
- ????}??
- ??????
- }??