文章一出自: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. }