Axis2的部署和应用

Axis2是由大家熟悉的Axis1.x系列演化过来,对它进行了彻底的重写,它使用了新的模块化架构,更方便于功能性的扩展等等。
Axis2支持WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持。
Axis2支持更多的data bindings,包括XMLBeans、JiBX、JaxMe和JaxBRI,以及它原生的data binding(ADB)。

 

一、范例测试环境:

     axis2-1.5.1

     jdk1.5.0_15

     apache-tomcat-5.5.23

 

二、部署步骤

     1、将Axis2的二进制工程axis2-1.5.1-bin.zip解压到C:\axis2-1.5.1。设置环境变量AXIS2_HOME=C:\axis2-1.5.1,在Path环境变量追加“%AXIS2_HOME%\bin”串。

 

     2、新增一个web工程(工程名为axis2),将Axis2自带的axis2.war范例中WEB-INF下的conf、lib、modules、services文件夹拷贝到新工程的WEB-INF下。

 

     3、在web.xml文件中增加以下配置信息:

Xml代码   收藏代码
  1. <servlet>  
  2.         <servlet-name>Axis2Servlet</servlet-name>  
  3.         <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>  
  4.         <load-on-startup>1</load-on-startup>  
  5.     </servlet>  
  6.       
  7.     <servlet-mapping>  
  8.         <servlet-name>Axis2Servlet</servlet-name>  
  9.         <url-pattern>*.jws</url-pattern>  
  10.     </servlet-mapping>  
  11.   
  12.     <servlet-mapping>  
  13.         <servlet-name>Axis2Servlet</servlet-name>  
  14.         <url-pattern>/services/*</url-pattern>  
  15.     </servlet-mapping>  

 

     4、增加一个用于作为WebService发布的Java类,源码如下:

Java代码   收藏代码
  1. package com.achievo.ws;  
  2. import com.achievo.bean.UserBean;  
  3.   
  4. public class SimService {  
  5.     public String sayHello(String name){  
  6.         return "Hello " + name;  
  7.     }  
  8.       
  9.     public Double getPrice(){  
  10.         return 123.45;  
  11.     }  
  12.       
  13.     public String[] getArray(){  
  14.         String[] arr = new String[2];  
  15.         arr[0] = "11111";  
  16.         arr[1] = "22222";  
  17.         return arr;  
  18.     }  
  19.       
  20.     public UserBean getUser(){  
  21.         UserBean user = new UserBean("cjm""123");  
  22.         return user;  
  23.     }  
  24. }  

 

Java代码   收藏代码
  1. package com.achievo.bean;  
  2.   
  3. public class UserBean {  
  4.     private String username;  
  5.     private String password;  
  6.       
  7.     public UserBean(){  
  8.           
  9.     }  
  10.       
  11.     public UserBean(String uid, String pwd){  
  12.         this.username = uid;  
  13.         this.password = pwd;  
  14.     }  
  15.       
  16.     public String getUsername() {  
  17.         return username;  
  18.     }  
  19.       
  20.     public void setUsername(String username) {  
  21.         this.username = username;  
  22.     }  
  23.       
  24.     public String getPassword() {  
  25.         return password;  
  26.     }  
  27.       
  28.     public void setPassword(String password) {  
  29.         this.password = password;  
  30.     }  
  31. }  

 

     5、在WEB-INF\services\目录下新增一个文件夹sim(名称随意),在sim文件夹中增加一个子文件夹META-INF,在META-INF中增加一个名为services.xml的文件,该xml文件的信息如下:

Xml代码   收藏代码
  1. <serviceGroup>  
  2.     <service name="SimService" scope="application">  
  3.         <description>Sim Service</description>  
  4.         <messageReceivers>  
  5.             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>  
  6.             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>  
  7.         </messageReceivers>  
  8.         <parameter name="ServiceClass">com.achievo.ws.SimService</parameter>  
  9.     </service>  
  10. </serviceGroup>  

      表示将com.achievo.ws.SimService类以SimService名称发布为WebService。

 

     6、将新工程部署到Tomcat,并启动Tomcat。在浏览器的地址中输入以下URL:

           http://localhost:8888/axis2/services/SimService?wsdl,如果正常显示wsdl定义信息,则表示部署成功。

 

     7、新工程目录结构

三、应用范例

     1、在DOS中定位到C:\axis2-1.5.1\bin目录,然后执行以下指令:
         wsdl2java -uri http://localhost:8888/axis2/services/SimService?wsdl -p com.achiveo.ws -s -o stub

 

          -url参数:指定了wsdl文件的路径
          -p参数:指定了生成的Java类的包名
          -o参数:指定了生成的一系列文件保存的根目录

 

     2、将生成的SimServiceStub.java文件引用到测试工程中。

 

     3、测试类代码如下:

Java代码   收藏代码
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.         try{  
  4.             SimServiceStub stub = new SimServiceStub();  
  5.               
  6.             //方法返回字符串值  
  7.             SayHello sayHello = new SimServiceStub.SayHello();  
  8.             sayHello.setName("cjm");  
  9.               
  10.             SimServiceStub.SayHelloResponse res = stub.sayHello(sayHello);  
  11.             String result = res.get_return();  
  12.               
  13.             System.out.println(result);  
  14.               
  15.             //方法返回double值  
  16.             System.out.println(stub.getPrice().get_return());  
  17.               
  18.             //方法返回数组  
  19.             String[] arr = stub.getArray().get_return();  
  20.             if(arr!=null && arr.length>0){  
  21.                 for(int i=0;i<arr.length;i++){  
  22.                     System.out.println(arr[i]);  
  23.                 }  
  24.             }  
  25.               
  26.             //方法返回bean对象  
  27.             SimServiceStub.UserBean user = stub.getUser().get_return();  
  28.             System.out.println(user.getUsername() + ", " + user.getPassword());  
  29.               
  30.         }catch(Exception ex){  
  31.             ex.printStackTrace();  
  32.         }  
  33.     }  
  34. }  

  

Java代码   收藏代码
  1. MonicaServicesImplServiceStub stub = new MonicaServicesImplServiceStub();    
  2.   
  3. MonicaServicesImplServiceStub.CreatePnr createPnr = new MonicaServicesImplServiceStub.CreatePnr();  
  4. createPnr.setArg0(companyCode);  
  5. createPnr.setArg1(workNo);  
  6. createPnr.setArg2(officeNo);  
  7. createPnr.setArg3(pid);  
  8. createPnr.setArg4(passengerIds);  
  9. createPnr.setArg5(airCodes);  
  10. createPnr.setArg6(isDomestic);  
  11.   
  12. CreatePnrE createPnrE = new MonicaServicesImplServiceStub.CreatePnrE();  
  13. createPnrE.setCreatePnr(createPnr);  
  14.   
  15. CreatePnrResponseE createPnrResponseE = stub.createPnr(createPnrE);  
  16. String result = createPnrResponseE.getCreatePnrResponse().get_return();  
  17. System.out.println(result);   

 

如果是通过代理访问公网,那么在调用webservice方法之前需要设置代理属性:

Java代码   收藏代码
  1. ProxyProperties proxyProperties = new ProxyProperties();     
  2. proxyProperties.setProxyName("xxx.xxx.xxx.xxx");     
  3. proxyProperties.setProxyPort(80);    
  4.   
  5. options.setProperty(HTTPConstants.PROXY, proxyProperties);  
  6. options.setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10);  
  7. options.setTimeOutInMilliSeconds(10000);  

 

也可以将class类打包成aar文件,然后发布成WebService

     1、将class类和services.xml文件拷贝到一个新的目录中,目录结构如下图: 

          class类与包目录结构一致,services.xml文件放到META-INF文件夹中。

      2、 在DOS中定位到../aar/sim目录中,然后执行以下命令:

            jar cvf SimService.aar . (注意最后那个点哦),将会在../aar/sim目录中生成SimService.aar文件。

 

       3、将SimService.aar文件拷贝到WEB-INF\services\目录下,此时,services目录的结构应该为:
 

 

四、将Axis2整合到spring环境

     1、在web.xml文件中增加以下配置信息:

Xml代码   收藏代码
  1. <context-param>  
  2.     <param-name>contextConfigLocation</param-name>  
  3.     <param-value>WEB-INF/applicationContext.xml</param-value>  
  4. </context-param>  
  5.   
  6. <listener>  
  7.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  8. </listener>  

 

     2、将要作为WebService发布的java类配置为一个bean:

Xml代码   收藏代码
  1. <bean id="simService" class="com.achievo.ws.SimService"/>  

 

     3、将services.xml文件的内容调整为以下信息:

Xml代码   收藏代码
  1. <serviceGroup>  
  2.     <service name="SimService" scope="application">  
  3.         <description>SimService</description>  
  4.         <parameter name="ServiceObjectSupplier">  
  5.             org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier  
  6.         </parameter>  
  7.         <parameter name="SpringBeanName">simService</parameter>  
  8.         <messageReceivers>  
  9.             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>  
  10.             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>  
  11.         </messageReceivers>  
  12.     </service>  
  13. </serviceGroup>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值