当前位置: 代码迷 >> Web前端 >> Webservice用于传递参数,并返回对象(采用手动打成aar包)
  详细解决方案

Webservice用于传递参数,并返回对象(采用手动打成aar包)

热度:160   发布时间:2012-09-27 11:11:17.0
Webservice用来传递参数,并返回对象(采用手动打成aar包)

1. ?首先,先编写服务端代码?

?? ??

[java] view plaincopyprint?
  1. public?class?ReturnObjectService?{??
  2. ??
  3. ??????
  4. ????public?User?getUser(String?name)?{??
  5. ????????User?user?=?new?User();??
  6. ????????user.setUsername(name);??
  7. ????????return?user;??
  8. ????}??
  9. ??????
  10. }??
public class ReturnObjectService {

	
    public User getUser(String name) {
    	User user = new User();
    	user.setUsername(name);
    	return user;
    }
    
}
[java] view plaincopyprint?
  1. package?server.object;??
  2. ??
  3. import?java.io.Serializable;??
  4. ??
  5. ??
  6. public?class?User?implements?Serializable{??
  7. ??
  8. ????private?String?username;??
  9. ??
  10. ????public?String?getUsername()?{??
  11. ????????return?username;??
  12. ????}??
  13. ??
  14. ????public?void?setUsername(String?username)?{??
  15. ????????this.username?=?username;??
  16. ????}??
  17. ??????
  18. }??
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文件,具体内容如下:

?

??

[html] view plaincopyprint?
  1. <service?name="returnObjectService">??
  2. ????<parameter?name="ServiceClass">??
  3. ????????server.object.ReturnObjectService?????
  4. ????</parameter>??
  5. ????<messageReceivers>??
  6. ????????<messageReceiver?mep="http://www.w3.org/2004/08/wsdl/in-out"??
  7. ????????????????class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"?/>??
  8. ????????<messageReceiver?mep="http://www.w3.org/2004/08/wsdl/in-only"??
  9. ????????????????class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"?/>??
  10. ????</messageReceivers>??
  11. </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. ?编写客户端代码:

?? ??

[java] view plaincopyprint?
  1. package?client;??
  2. ??
  3. import?javax.xml.namespace.QName;??
  4. ??
  5. import?org.apache.axis2.AxisFault;??
  6. import?org.apache.axis2.addressing.EndpointReference;??
  7. import?org.apache.axis2.client.Options;??
  8. import?org.apache.axis2.rpc.client.RPCServiceClient;??
  9. ??
  10. public?class?ReturnObjectTest?{??
  11. ??
  12. ??????
  13. ????public?static?void?main(String[]?args)?throws?AxisFault?{??
  14. ????????String?target?=?"http://localhost:8080/axis2/services/returnObjectService";??
  15. ????????RPCServiceClient?client?=?new?RPCServiceClient();??
  16. ????????Options?options?=?client.getOptions();??
  17. ????????options.setManageSession(true);??
  18. ??
  19. ????????EndpointReference?epr?=?new?EndpointReference(target);??
  20. ????????options.setTo(epr);??
  21. ??
  22. ????????QName?qname?=?new?QName("http://object.server",?"getUser");??
  23. ????????Object[]?result?=?client.invokeBlocking(qname,?new?Object[]?{"linwei"},new?Class[]?{?User.class?});??
  24. ????????User?user?=?(User)result[0];??
  25. ????????System.out.println("user.username?is?"?+?user.getUsername());??
  26. ????}??
  27. ??????
  28. }??
  相关解决方案