學習Axis和web service之一
web service由于工作中需要用到,所以那天從網上GOOGLE一下,查看如何制作自己的第一個WEB SERVICE。首先,web service的原理我就不多講了,再怎么講也不如人家講的好,況且都是從別人那里拷貝的。還是整點實際的吧。馬上建立自己的WEB SERVICE的程序。
一.首先下載安裝軟件:
1.axis-src-1_2_1,(自己去下載,地址忘記了)
2.jakarta-tomcat-5.0.18.exe(這個是安裝版本,從別的地方拷貝也可以的)
最少也要有這兩個包
二.安裝
自己安裝吧。挺簡單的。TOMCAT安裝最好改一下名字比如:TOMCAT
三.
1.將axis-src-1_2_1這個包解壓后,將axis-1_2_1\webapps下axis的所有東西拷貝到你剛剛建立的TOMCAT的webapps下。目錄結構如下:
tomcat-webapps-axis
然后查看一下你的axis的WEB-INF的lib下*.jar文件是否全,應該有8個
axis.jar
axis-ant.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j-1.5.1.jar
(一定看好各個文件的文件名,一會將配置CLASSPATH)
2.然后到axis-1_2_1目錄下,找到lib文件夾,拷貝其中的activation.jar文件,到
Tomcat\webapps\axis\WEB-INF\lib,和上面的8個jar文件在一起,就OK了。
四.配置classpath
我的電腦-右鍵屬性-高級-環境變量
1.建立變量:AXIS_HOME=D:\Tomcat\webapps\axis(你自己的實際TOMCAT目錄)
2.建立變量:AXIS_LIB=%AXIS_HOME%\WEB-INF\lib
建立這兩個環境變量
3.classpath(相信這個變量里面肯定有值,TOMCAT安裝的時候配置過)
.;%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar;
%TOMCAT_HOME%\lib;(以上三個都是安裝TOMCAT配置的,下面是axis的)
%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%\wsdl4j-1.5.1.jar;
%AXIS_LIB%\activation.jar;
%AXIS_LIB%\mail.jar
拷貝到classpath里面就可以了,然后點擊確定。
五.測試
這步很重要,我自己覺得,因為如果你不知道CLASSPATH是否配置齊全,所以應該測試一下,有些文章沒有測試直接就往下走了,但是就出現問題了,我就出現了問題,是jar包沒有導入造成的,錯誤信息如這樣:
Exception in thread "main" java.lang.NoClassDefFoundError:
javax/wsdl/OperationType
at org.apache.axis.description.OperationDesc.<clinit>(OperationDesc.java
:58)
at org.apache.axis.client.Call.addParameter(Call.java:948)
at org.apache.axis.client.Call.addParameter(Call.java:983)
at BankClient.main(BankClient.java:29)
這就是沒有導入造成的錯誤。
其實你先看一下classpath就能避免錯誤。
點擊開始-運行-cmd-打開命令行窗口-敲入set classpath,好了你配置的classpath完全顯示了,你可以仔細的查看了。
六調試AXIS
啟動TOMCAT,輸入網址 http://localhost:8080/axis, 出現 "Hello! Welcome to Apache-Axis." 歡迎詞, 點擊鏈接 Validate 來驗證 Axis 所需的 .jar 包是否齊全 (Needed Components).
七.開發一個 Web Service 服務端程序
(代碼是轉貼,謝謝!)
我的這個例子是使用 Web Service 返回一個請求字段的值.
import java.util.*;
public class wsTestService
{
String strName = "Ryun";
int intAge = 21;
List items = new ArrayList();
public String getName() {
return strName;
}
public int getAge() {
return intAge;
}
public List getItems() {
return items;
}
}將此文件命名為 wsTestService.jws 存放到
d:\tomcat\webapp\axis\下
訪問 http://localhost:8080/axis/wsTestService.jws, 出現 "There is a Web
Service here"即表明 Web Service 服務端程序安裝完成.
開發一個 Web Service 客戶端程序
建立客戶端程序wsTestClient.java
以下是客戶端的源程序, 用于向 Web Service Server 提交服務請求:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class wsTestClient {
public static void main(String args[]) {
System.out.println("Start invoking...");
try {
String strUri =
"http://localhost:8080/axis/wsTestService.jws";
Service service = new Service();
Call call = (Call)
service.createCall();
call.setTargetEndpointAddress(new
java.net.URL(strUri));
call.setOperationName("getName");
String ret = "" + call.invoke(new Object[] {});
System.out.println("I am " + ret + ".");
}
catch (Exception e) {
System.err.println(e.toString());
}
System.out.println("Finished the invoking.");
}
}
然后編譯運行,如果出現問題,那可能是環境變量path,classpath配置的問題,自己查看
一下,這里就不再描述了。
C:\>cd \
C:\>javac wsTestClient.java
C:\>java wsTestClient
Start invoking...
I am Ryun.
Finished the invoking.
完成,再去學習,稍后總結
來自:
http://www.cnweblog.com/battleseagull/articles/20130.html