Axis框架來自 Apache開放源代碼組織,它是基于JAVA語言的最新的SOAP規(guī)范(SOAP1.2)和 SOAP with Attachments規(guī)范(來自Apache Group)的開放源代碼實現(xiàn)。有很多流行的開發(fā)工具都使用AXIS作為其實現(xiàn)支持Web服務(wù)的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。它能與眾多服務(wù)器如TOMCAT、WEBLOGIC等相集成。它是以Servlet的方式運行的,而服務(wù)器的作用相當(dāng)于Servlet容器(Container),因此只要配置得當(dāng),就可以使Axis在支持servelet2.2以上的環(huán)境中運行。AXIS的最新版本是1.2,可以從http://ws.apache.org/axis/index.html下載軟件包。
從APACHE的官方網(wǎng)站(www.apache.org)下載TOMCAT安裝軟件。下載版本要在4.0以上。這里用的是5.0版本。安裝完后,啟動TOMCAT,訪問http://localhost:8080/安裝成功應(yīng)該出現(xiàn)Apache啟動頁面。以下用TOMCAT_HOME表示TOMCAT的安裝主目錄。
解壓縮AXIS軟件包(這里為1.4版本)。我這里是解壓縮到D:\axis-bin-1_4。把D:\axis-bin-1_4\axis-1_4\webapps\axis文件夾復(fù)制到TOMCAT_HOME\webapps文件夾下面。重新啟動TOMCAT,訪問http://localhost:8080/axis/,出現(xiàn)Apache-Axis啟動頁面。點擊鏈接Validation進入頁面。上面會顯示已經(jīng)找到的jar包和未找到的jar包。對于未找到的jar包。可以從它提示的鏈接中下載。我缺少activation.jar,mail.jar,xerces.jar這里在可選組件(optional components)中提示缺少xml-security包。從它提示的地址下載軟件包后,解壓縮后在lib文件夾下,將xalan.jar和xmlsec-1.2.1.jar復(fù)制到TOMCAT_HOME\webapps\axis\WEB-INF\lib下。重新啟動TOMCAT,再點擊鏈接Validation進入頁面后。將沒有未找到包的提示了。
接下來配置類路徑。右鍵點擊我的電腦——屬性——高級——環(huán)境變量。在系統(tǒng)變量中選擇ClassPath進行編輯。增加下列類路徑(以“;”間隔符)。
.;%TOMCAT_HOME%\webapps\axis\WEB-INF\lib\axis.jar;%TOMCAT_HOME%\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar;%TOMCAT_HOME%\webapps\axis\WEB-INF\lib\jaxrpc.jar;%TOMCAT_HOME%\webapps\axis\WEB-INF\lib\saaj.jar;%TOMCAT_HOME%\webapps\axis\WEB-INF\lib\wsdl4j-1.5.1.jar;%TOMCAT_HOME%\webapps\axis\WEB-INF\lib\commons-logging-1.0.4.jar
以上幾個為 必須設(shè)置的類路徑。否則不能運行web service。以下幾個可以選擇設(shè)置。
TOMCAT_HOME\webapps\axis\WEB-INF\lib\axis-ant.jar(使用ANT)
TOMCAT_HOME\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar(使用log4j)
TOMCAT_HOME\webapps\axis\WEB-INF\lib\xalan.jar(對XML進行加密)
TOMCAT_HOME\webapps\axis\WEB-INF\lib\ xmlsec-1.2.1.jar(對XML進行加密)
TOMCAT_HOME\common\lib\mail.jar(帶附件的soap消息)
TOMCAT_HOME\common\lib\activation.jar(帶附件的soap消息)
到此為止基本設(shè)置完成。下面介紹和分析HelloWorld程序。
下面以一個HelloWorld程序試驗一下配置是否成功,同時也了解一下web service的程序。SOAP分為兩種通信模型,一種是SOAP RPC(遠程過程調(diào)用),一種SOAP MESSAGING(消息交換)。HelloWorld程序是屬于SOAP RPC。即由客戶端發(fā)出請求,調(diào)用服務(wù)器端的程序。并返回結(jié)果。
首先編寫HelloWorldService.jws文件保存到TOMCAT_HOME\webapps\axis下。
public class HelloWorldService {
private final static String sGreeting= "Hello World!" ;
public String getMessage() {
return(sGreeting) ;
}
}
啟動TOMCAT,瀏覽器輸入http://localhost:8080/axis/HelloWorldService.jws?wsdl
會出現(xiàn)wsdl頁面。說明可以提供正常服務(wù)了。
現(xiàn)在可以制作客戶端了程序了,先在你的C:\下建一個資料夾叫做 prj 或是任何名稱也可以,然后打開你的MS-DOS模式 , 先進入c:\prj下面輸入:
java org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/HelloWorldService.jws?wsdl
如果你看到這樣的畫面就表示正常運作并自動產(chǎn)生四個.JAVA的檔案了,如果出現(xiàn)
org/apache/...CLASS NOT FOUND之類的話可能你的ClASSPATH設(shè)置的有問題。
在C:\prj\localhost\axis\HelloWorldService_jws下面產(chǎn)生以下四個文件
HelloWorldService.java
HelloWorldServiceService.java
HelloWorldServiceServiceLocator.java
HelloWorldServiceSoapBindingStub.java
接下來我們就要寫一個client.java簡單的程序來存取這個WebService,當(dāng)然這只是一個范例,可以用Swing等作更漂亮的圖形接口用editor寫如下的程序代碼,文件名為client.java
package localhost.axis.HelloWorldService_jws;
import java.lang.*;
public class client
{
public static void main(String[] args) throws Exception
{
HelloWorldServiceServiceLocator
Service=new HelloWorldServiceServiceLocator();
HelloWorldService port=Service.getHelloWorldService();
String response=port.getMessage();
System.out.println(response);
}
}
寫好之后放在C:\prj\localhost\axis\HelloWorldService_jws下面。啟動服務(wù)器。
然后在C:\prj\localhost\axis\HelloWorldService_jws下面執(zhí)行 javac *.java 將其編譯成class文件之后退到 c:\prj 下面執(zhí)行 :
java localhost.axis.HelloWorldService_jws.client
正常的話將出現(xiàn)Hello World!
通過分析可以看出HelloWorldService.java和HelloWorldServiceService.java是兩個接口文件。負責(zé)調(diào)用遠程方法的是HelloWorldServiceSoapBindingStub.java文件。編程的時候不用涉及SOAP消息的封裝。