文章一出自:axis2发布WebService(应用.aar文件发布)
http://blog.sina.com.cn/s/blog_6b1c9ed50100lskk.html
基于Axis2开发Web Service一般采用两种方法:
第一种方法直接实现业务逻辑,它通常包括提供服务实现类 (implementation class)、编写服务描述文件services.xml、将服务实现类和描述文件打成aar (Axis ARchive) 包、部署服务四个步骤;
两种方法的具体的过程可以参考Axis2用户手册。
简单说下一下第一种方法的实现,主要分享下个人的经验.首先编写POJO类(即WebService服务类,如hello.java类),然后将其编译成.class文件,然后编写基于服务的services.xml文件,建立类似的目录结构:
D:/ws/hello/hello.class 与D:/ws/META-INF/services.xml,然后在cmd命令行下面,转到d:/ds目录下面,输入 jar cvf ws.aar .(最后一个"."不要忘记哦),拷贝ws.aar文件到%TOMCAT_HOME%/axis2/web-inf/services中,启动Tomcat即可发布我们的服务,发布方法同POJO类类似.
该方法的好处在与灵活性高,因为可以将服务封装在包中,而在POJO中不能封装在包,导致其灵活性较差(但部署发布简单,只需要将服务类对应的.Java文件改成.class文件放在%TOMCAT_HOME%\axis2\WEB-INF/pojo中即可以发布服务)。.aar文件的难点在于services.xml文件的编写,需要xml,axis2方面的知识积累。
文章二出自:Webservice用来传递参数,并返回对象(采用手动打成aar包)
1. 首先,先编写服务端代码
[java] view plain copy
1. public class ReturnObjectService {
2.
3.
4. public User getUser(String name) {
5. new User();
6. user.setUsername(name);
7. return user;
8. }
9.
10. }
[java] view plain copy
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. }
2. 进行手动打包过程。 新建一个文件夹,放入对应的服务端class(要求带入文件路径)。新建一个META-INF文件夹,并在其中编写services.xml文件,具体内容如下:
[html] view plain copy
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>
可以用开始进行打包处理,打包语句如下:进入需要打包的文件路径,直接执行 jar cvf 打包后名字.aar . (后面有个点,表示当前路径),
或者jar cvf 打包后名字.aar 文件夹名 文件夹名 等两种方式都可以。
3. 编写客户端代码:
[java] view plain copy
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. "http://localhost:8080/axis2/services/returnObjectService";
15. new RPCServiceClient();
16. Options options = client.getOptions();
17. true);
18.
19. new EndpointReference(target);
20. options.setTo(epr);
21.
22. new QName("http://object.server", "getUser");
23. new Object[] {"linwei"},new Class[] { User.class });
24. 0];
25. "user.username is " + user.getUsername());
26. }
27.
28. }
















