. 環境需求: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,內容如下:
1
2
3
4
5
6
7
8
9
10
|
//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