前天頭告訴我用SOAP WEB服務(wù)開(kāi)發(fā)一個(gè)客戶程序,用來(lái)與企業(yè)內(nèi)部的ERP進(jìn)行交互。晚上趕快找相關(guān)的資料猛看,總算對(duì)SOAP有了一定的認(rèn)識(shí)。干程序員這行真不容易,好象得不停地學(xué)習(xí)新東西,一不小心就被淘汰:(不過(guò)學(xué)習(xí)也是個(gè)很有意思的事情。好了,廢話少說(shuō),讓我們開(kāi)始吧。
一、軟件環(huán)境
1、axis-1_2 (從apache網(wǎng)站下載最新axis-bin-1_2.zip解壓即可)
2、Tomcat5.0
3、JDK5.0
二、相關(guān)配置
1、在你的%TOMCAT_HOME%\common\lib下需要加入三個(gè)包 activation.jar、mail.jar、tools.jar
2、環(huán)境變量設(shè)置
AXIS_HOME 即axis-bin-1_2.zip解壓的目錄(我的是在F:\soap\axis-1_2)
AXIS_LIB 即 %AXIS_HOME%\lib
AXISCLASSPATH 即 %AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;也就是把%AXIS_LIB%下所用JAR文件都導(dǎo)入
三、實(shí)驗(yàn)一下
在%AXIS_HOME%\webapps下找到axis文件夾,將其整個(gè)拷貝到%TOMCAT_HOME%\webapps下,啟動(dòng)
Tomcat,打開(kāi)瀏覽器訪問(wèn)http://localhost:8080/axis/,出現(xiàn)以下頁(yè)面說(shuō)明你配置成功了。很簡(jiǎn)單吧:)
四、發(fā)布我們的第一個(gè)程序
第一個(gè)程序簡(jiǎn)單的返回HELLO WORLD!
HelloWorld.java
public class HelloWorld { public String sayHello() { return "HELLO WORLD!"; } }
我們的第一種發(fā)布方式:
將HelloWorld.java拷貝到%TOMCAT_HOME%\webapps\axis下,然后將其改名為HelloWorld.jws,這樣AXIS就自然將其發(fā)布了。現(xiàn)在寫個(gè)客戶端程序訪問(wèn)一下:
TestClient.java
import org.apache.axis.client.Call; import org.apache.axis.client.Service;
import javax.xml.rpc.ParameterMode;
public class TestClient { public static void main(String [] args) throws Exception { String endpoint = "http://localhost:" +"8080"+ "/axis/HelloWorld.jws";//指明服務(wù)所在位置
Service service = new Service(); //創(chuàng)建一個(gè)Service實(shí)例,注意是必須的! Call call = (Call) service.createCall();//創(chuàng)建Call實(shí)例,也是必須的!
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//為Call設(shè)置服務(wù)的位置
call.setOperationName( "sayHello" );//注意方法名與HelloWorld.java中一樣!!
String res = (String) call.invoke( new Object[] {} );//返回String,沒(méi)有傳入?yún)?shù)
System.out.println( res ); } }
我的測(cè)試是在jbuilder2005中,注意項(xiàng)目中要導(dǎo)入其自帶的AXIS包(當(dāng)然應(yīng)該把其中JAR文件替換一下),可以看到程序返回了 "HELLO WORLD!"
可以看到在AXIS里發(fā)布服務(wù)其實(shí)是一件很容易的事,這是因?yàn)檫@個(gè)服務(wù)很簡(jiǎn)單的原因:)下面我們介紹第二種發(fā)布方式,這是常用的。
我們的第二種發(fā)布方式:
1、將HelloWorld.java編譯成HelloWorld.class,放到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes
下
2、在%TOMCAT_HOME%\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服務(wù)發(fā)布描述文件
deploy.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="HelloWorld" provider="java:RPC"> <parameter name="className" value="HelloWorld"/> <parameter name="allowedMethods" value="sayHello"/> </service> </deployment>
在DOS下轉(zhuǎn)換目錄到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
你會(huì)發(fā)現(xiàn)目錄下多了一個(gè)server-config.wsdd文件,這就是AXIS的配置文件,以后所有的服務(wù)發(fā)布描述都會(huì)在里面找到。(當(dāng)然,你可以直接修改它,不用再寫deploy.wsdd)然后打開(kāi)瀏覽器http://localhost:8080/axis/servlet/AxisServlet,你就會(huì)看到你的服務(wù)已發(fā)布
同樣用客戶端程序訪問(wèn)一下:(注意和上邊的差別?。。?br> HelloClient.java
import org.apache.axis.client.Call; import org.apache.axis.client.Service;
public class HelloClient { public static void main(String [] args) throws Exception {
String endpoint = "http://localhost:" +"8080"+ "/axis/services/HelloWorld";//注意!差別僅僅在這里??!
Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName("sayHello" );
String res = (String) call.invoke( new Object[] {} );
System.out.println( res ); } }
好了,相信你對(duì)AXIS已有了大致的了解。接下來(lái)將會(huì)涉及到傳參數(shù)、JAVABEAN對(duì)象,及AXIS的安全問(wèn)題,下次再說(shuō)吧:)也歡迎和我,一個(gè)快樂(lè)的JAVA程序員,聯(lián)系:)ronghao100@hotmail.com
|
|