zoukankan      html  css  js  c++  java
  • axis2学习, ant 构建axis2 ws

    Axis2 学习

     1,axis2安装(windows)
      . 环境需求:jdk 1.5, tomcat 6, maven 2, ant 

      . 下载(bin表示二进制文件):http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip
       解压到d:/softInstall/axis2/

      . 设置环境变量:AXIS2_HOME=d:/softInstall/axis2/ 
       在path下面添加:AXIS2_HOME/bin;

      . 安装axis2的测试项目,我是这么认为,即得到axis2.war,在$AXIS2_HOME/webapps下面有一个build.xml。
       所以cmd进到 $AXIS2_HOME/webapps 目录下,输入:ant create.war,会在 $AXIS2_HOME/dist下生成:axis2.war

       将axis2.war入到tomcat/webapps下面,启动tomcat,再访问 http://localhost:8080/axis2 说明成功了。

     2,建立第一个webservics.

      . 无配置的webservice (用于第一次建立ws,最快时间内看到效果)

       建立一个HelloWord.java,内容如下:

    //package xm.ws
    public class HelloWord{
        public String getMessage(){
            return "this is my first aixi2 web services";
        }
    
        public void setMessage(String msg){
            System.out.println("message content:"+msg);
        }
    }        


       编译,得到HelloWord.class

       放入:tomcat下面的axis2/WEB-INF/services/pojo目录中,如果没有pojo目录,则自己建立个,但是这样的java是不能有包的。
       输入:http://localhost:8080/Axis2Test/services/listServices 在下面就会发现一个HelloWord的service,

       一般不建议使用上面的方法。

      . 自己定义的web service

      . 把上面的方法package申明取消,得到HelloWord.class文件

      . 建立如下目录树:
       d:/xmws
           |- META-INF
                 |- services
                        |- xm
                        |- ws

      . 建立包级文件夹,如上面的包是:xm.ws,则把HelloWord.class复制到services下面的ws下。

      . 在META-INF下面建立:services.xml内容如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2     <serviceGroup>
     3         <service name="helloword">
     4             <description>这是第一个axis2的web service服务</description>
     5         <parameter name="ServiceClass">xm.ws.HelloWord</parameter>
     6         <messageReceivers>
     7             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" 
     8                 class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
     9             <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  
    10                 class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    11         </messageReceivers>
    12     </service>
    13     
    14     <!--其它webservice服务
    15     <service name="other">
    16     </service>
    17     -->
    18 </serviceGroup>


      . services.xml说明:

       <serviceGroup>: 可以发布多个 webService,如果只有一个webservice,刚可以取消<serviceGroup>节点。<service>作为根节点,

       <service>: 用于发布 Web Service,一个 <service>元素只能发布一个 WebService类, name属性表示 WebService名,
       例子中:name="helloword",即通过:http://localhost:8080/axis2/helloword?wsdl 访问到该服务,
       如果要访问方法则:?getMessage方法名

       <description>: 元素表示当前 Web Service的描述,

       <parameters>: name属性:随便但是必须的,不能少;内容:是指定类名,具体到包

       <messageReceivers>:该元素用于设置处理 WebService方法的处理器。可能不用需要指定到具体的方法,系统自动调用你请求的方法
       例如:
       getMessage()方法有一个返回值,因此,需要使用可处理输入输出的 RPCMessageReceiver类,
       而setMessage()方法没有返回值,因此,需要使用只能处理输入的 RPCInOnlyMessageReceiver类。

      . 打包web service 成 .aar
       cmd命令窗口进入到:d:/xmws 目录下面。输入: jar cvf ws.aar . (注意后的后面还有个 ".")。
       就会在d:/ws下面看到 ws.aar 这个文件,把这个文件复制到tomcat下面的axis2/WEB-INF/services下面。
       重启tomcat,再访问:http://localhost:8080/axis2/helloword?wsdl


      . eclipse下面搭建axis2的web项目


       (1),以下方法有助于认识axis2布署目录和web项目的布署目录


        . 新建web项目:xmWSTest
      |-src
        |- xm.dao
        |- xm.dao.impl
        |- xm.services
        |- xm.ws
          |- MyWebServices.java
        |- xm.util

      . 将axis2.war/WEB-INF 下面的所有文件及文件夹拷贝到xmWSTest/webContent/WEB-INF下面
        将axis2.war/axis2-web文件夹及文件复制到xmWSTest/webContent/下面
        xmWSTestr项目的WEB-INF下面至少有如下目录:

      |-WEB-INF
        |- classes        (项目的class文件)
        |- conf         (放axis2.xml配置文件)
          |- axis2.xml
        |- lib             (项目引用的包,这个大家都知道,axis2的包也放在这下面)
        |- modules       (axis2本来就有的,复制过来就有了)
        |- services       (放置生成的ws的aar包)
          |- services.list   (默认)
          |- version.aar    (默认)
        |- web.xml        (必须是axis2下面的web.xml,如果需要其它配置,可以自己加)

      web.xml配置如下:
     

     1  <!--以下配置:拦截所有:/services/* 与 *.jws 的url 请求 将这些请求识为ws请求-->
     2   <servlet>
     3     <display-name>Apache-Axis Servlet</display-name>
     4     <servlet-name>AxisServlet</servlet-name>
     5     <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
     6   </servlet>
     7   <servlet-mapping>
     8     <servlet-name>AxisServlet</servlet-name>
     9     <url-pattern>/servlet/AxisServlet</url-pattern>
    10   </servlet-mapping>
    11   <servlet-mapping>
    12     <servlet-name>AxisServlet</servlet-name>
    13     <url-pattern>*.jws</url-pattern>
    14   </servlet-mapping>
    15   <servlet-mapping>
    16     <servlet-name>AxisServlet</servlet-name>
    17     <url-pattern>/services/*</url-pattern>
    18   </servlet-mapping>
    19   
    20   <!--以下请求将拦截所有的 /axis2-admin/* 的url请求, 这些请求将进入axis2的后台管理界面,
    21         但是需要,axis2.xml,axis2.policy。这两个配置文件可以在axis2/conf下面找到,放在
    22         WEB-INF/conf 下面
    23   -->
    24   <servlet>
    25     <display-name>Apache-Axis Admin Servlet Web Admin</display-name>
    26     <servlet-name>AxisAdminServlet</servlet-name>
    27     <servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class>
    28     <load-on-startup>100</load-on-startup>
    29   </servlet>
    30   <servlet-mapping>
    31     <servlet-name>AxisAdminServlet</servlet-name>
    32     <url-pattern>/axis2-admin/*</url-pattern>
    33   </servlet-mapping>

      . 接下来构建类似于上面打包ws.aar的目录树,在WEB-INF下面新建:classes 文件夹,并将编译过的class文件这下面,便于快速度发布
       方法:右键项目名-->Build Path-->Configure Build Path-->Source选项卡 最下面:Default output folder 
       -->Browse,指定到新建的classes目录下面;

      . 接下来在services文件夹下新建:(如下)
        |- MyWebServices (和自己项目下面,自己写的web service 类的类名一样)
          |- META-INF
            |- services.xml

      services.xml 文件内容如下:

     1 <service name="figur8WebService" >
     2     <Description>
     3         Please Type your service description here(这里写一些这个webservices的描述,有助于自己或者别人的理解)
     4     </Description>
     5     <messageReceivers>
     6         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
     7         <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
     8     </messageReceivers>
     9     <!--这里指定web services 的类路径-->
    10     <parameter name="ServiceClass" locked="false">xm.ws.MyWebServices</parameter>
    11 </service>

      . 做了如上配置以后,直接可以布署在tomcat中运行了。
       http://localhost:8080/xmWSTest/services/MyWebServices?wsdl


     (2),通过上面方法以后,我们可以直接使用ant来搞定所有的事情!

      准备:在WEB-INF下面新建:services-MyWebServices.xml
      内容:和上面一样
     

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project name="xmWS" default="compile" basedir=".">
     3     <property name="tempDir" value="${basedir}/webContent/temp" />
     4     <!--指定axis2的安装目录-->
     5     <property name="axis2_home" value="D:/lib/axis2/axis2-1.6.2-bin/axis2-1.6.2" />
     6     <!--web Service Name-->
     7     <property name="servicesName" value="MyWebServices" />
     8     
     9     <target name="compile" depends = "prepared">
    10         <!-- java compile to classes -->
    11         <javac srcdir="${basedir}/src" destdir="${basedir}/webContent/WEB-INF/classes/" 
    12                 includeantruntime="true" memoryMaximumSize="256m" fork="true">
    13         <!-- <compilerarg line="-encoding UTF-8 "/> 
    14          -->
    15             <classpath refid="refjar"/>
    16         </javac>
    17     </target>
    18     
    19     <target name="prepared">
    20         <!--复制文件,构建上面的目录-->
    21         <!--从axis2_home下面复制axix2-web文件夹 -->
    22         <mkdir dir="${basedir}/webContent/axis2-web" />
    23         <copy todir="${basedir}/webContent/axis2-web" overwrite="true">
    24             <fileset dir="${axis2_home}/webapp/axis2-web" />
    25         </copy>
    26         
    27         <!--从axis2_home下面复制conf文件夹 到项目下面的WEB-INF/ -->
    28         <mkdir dir="${basedir}/webContent/WEB-INF/conf" />
    29         <copy todir="${basedir}/webContent/WEB-INF/conf" overwrite="true">
    30             <fileset dir="${axis2_home}/conf" />
    31         </copy>
    32         
    33         <!--从axis2_home下面复制lib到WEB-INF/lib 下面 -->
    34         <copy todir="${basedir}/webContent/WEB-INF/lib" overwrite="true">
    35             <fileset dir="${axis2_home}/lib" />
    36         </copy>
    37         
    38         <!--复制modules 到WEB-INF下面-->
    39         <mkdir dir="${basedir}/webContent/WEB-INF/modules" />
    40         <copy todir="${basedir}/webContent/WEB-INF/modules" overwrite="true">
    41             <fileset dir="${axis2_home}/repository/modules" />
    42         </copy>
    43         
    44         <!-- 将axis2_home下面的url拦截文件打包到lib下面 -->
    45         <mkdir dir="${basedir}/webContent/WEB-INF/classes" />
    46         <copy todir="${basedir}/webContent/WEB-INF/classes" overwrite="true">
    47             <fileset dir="${axis2_home}/webapp/WEB-INF/classes" />
    48         </copy>
    49         
    50         <!-- 
    51         <jar destfile="${basedir}/webContent/WEB-INF/lib/xm_axis2_urlmapping.jar"
    52             basedir="${axis2_home}/webapp/WEB-INF/classes" >
    53         </jar>
    54          -->
    55          
    56         <!-- 将新建web Service 文件夹 -->
    57         <mkdir dir="${basedir}/webContent/WEB-INF/services" />
    58         <mkdir dir="${basedir}/webContent/WEB-INF/services/${servicesName}" />
    59         <mkdir dir="${basedir}/webContent/WEB-INF/services/${servicesName}/META-INF" />
    60         <!-- 将services-wsname.xml复制到 META-INF -->
    61         <copy file="${basedir}/webContent/WEB-INF/services-${servicesName}.xml" 
    62             tofile="${basedir}/webContent/WEB-INF/services/${servicesName}/META-INF/services.xml"
    63         />
    64         
    65         <copy todir="${basedir}/webContent/WEB-INF/services/${servicesName}" overwrite="true">
    66             <fileset dir="${axis2_home}/repository/services" />
    67         </copy>
    68         
    69     </target>
    70     
    71     <path id="refjar">
    72         <fileset dir="${basedir}/webContent/WEB-INF/lib">
    73             <include name="**/*.jar"></include>
    74         </fileset>
    75     </path>
    76         
    77 </project>

      打开命令窗口,定位到项目目录下面,运行命令:ant
      在eclipse中直接布置项目,并运行
      在浏览器中输入:http://localhost:8080/xmWSTest/services/MyWebServices?wsdl




  • 相关阅读:
    标签的讲解
    属性分类
    LeetCode 003. 无重复字符的最长子串 双指针
    Leetcode 136. 只出现一次的数字 异或性质
    Leetcode 231. 2的幂 数学
    LeetCode 21. 合并两个有序链表
    象棋博弈资源
    acwing 343. 排序 topsort floyd 传播闭包
    Leetcode 945 使数组唯一的最小增量 贪心
    Leetcode 785 判断二分图 BFS 二分染色
  • 原文地址:https://www.cnblogs.com/overstep/p/2880010.html
Copyright © 2011-2022 走看看