本文轉載自:http://blog.csdn.net/bestcxx/article/details/52300248
axis1-myeclipse/eclipse-入門級別-資源、流程、常見問題
1、資源下載
總共需要 axis1.4資源包,mail.jar和activation.jar
下載完axis1.4資源包 後解壓縮到一個地方,路徑中不要出現中文,其路徑需要在下面axis的環境配置中用到。
我將mail.jar和 activation.jar放到了axis-1_4/lib下,這個在後面的環境變量配置中也要起到作用。
1.1下載途徑一:
http://download.csdn.net/detail/bestcxx/9611310
1.2下載途徑二:
·http://mirrors.hust.edu.cn/apache/axis/axis/java/1.4/
打開後選擇 axis-bin-1_4.tar.gz
此外還需要兩個常用的jar包,下載途徑一中包含了所有所需資源,但是如果你沒有下載權限也可以自己在網上找一下。
mail.jar和 activation.jar
2、環境變量配置
2.1 jdk環境變量配置,如果已經配置可以略過
參考:http://blog.csdn.net/bestcxx/article/details/52300559
2.2 axis1.4 環境變量配置
用戶變量和系統變量都要配置一下
·AXIS_HOME
AXIS_HOME D:\axis-1_4 (注:這一條要根據你實際的路徑配置axis-1_4的位置)
·AXIS_LIB
AXIS_LIB %AXIS_HOME%\lib
·AXISCLASSPATH
AXISCLASSPATH %AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar
·classpath,這個在配置jdk的環境變量的時候已經配置了,但是那是jdk的,現在在後面追加AXISCLASSPATH、mail.jar、activation.jar的路徑
classpath .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%AXISCLASSPATH%;%AXIS_LIB%\activation.jar;%AXIS_LIB%\mail.jar;
檢查下:cmd echo %AXIS_HOME% 等等,看配置的是否生效。
3、你一定安裝了tomcat服務器
在D:\axis-1_4\webapps 下你會發現一個項目 axis ,將之複製到tomcat的webapps
目錄下(我的是D:\tomcat7\webapps),然後啓動服務器
4、Axis1.4 自帶的 axis項目訪問
Tomcat服務器啓動之後,在瀏覽器中訪問:
顯示如下頁面說明系統部署正常,接下來我們將以這個axis項目爲中介逐步在一個獨立的項目中完成webservice服務的實現。
5、jws方式發佈 webservice服務
這種方式發佈webservice服務需要以axis這個項目爲載體。
大致的流程是,編寫一個沒有package包路徑的java文件,比如HelloJWS.java,然後直接重命名爲HelloJWS.jws
將這個文件複製到D:\tomcat7\webapps\axis 目錄下
內容如下(再強調一下,不能有package包路徑):
public class HelloJWS{
public String getSayHello(String name,int age){
return "Hello "+ name+",you are "+age+" years old.";
}
}
文件結構如下:
然後,服務器也不用重啓,直接在地址欄中訪問
http://localhost:8080/axis/HelloJWS.jws
你會看到
點擊 Click to see the WSDL , 看到下面的內容說明你的JWS式服務發佈成功了。
可以放大圖片查看基本含義。
6、調用已經發布的webservice 服務
有一種是直接在代碼中調用,還有一種是生成客戶端代碼,後者的優勢是可以調用的方法名可以直接通過IDE代碼提示獲知,前者則需要以String字符串的形式體現出來。
6.1 使用代碼調用發佈的webservice服務
6.2 生成webservice客戶端調用服務
首先,你需要一點點的DOS系統的操作知識(下面所有需要輸入的內容都僅含雙引號內的內容,此外注意空格的存在)。
打開cmd :即啓動dos系統。
打開盤符:比如D盤,輸入 “D:”,然後按enter鍵。
打開某個文件:“cd 文件名” ,這裏有個小竅門,比如有個文件叫filename ,輸入 “f”之後 按tab 鍵,系統會自動提示文件名全稱。
如果你想看當前目錄下有哪些文件,直接 輸入 “dir”, 然後按enter鍵。
返回上一層目錄: 輸入 “cd ..”。
DOS 操作的東西這麼點就夠了。
在DOS中使用cd命令,打開HelloJWS.jws所在的文件夾,注意這一點十分重要
D:\tomcat7\webapps\axis>
然後輸入命令行,中間是個空格,第一部分是固定的,第二行是不是很熟悉?放到瀏覽器中看一下就知道了。
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java
http://localhost:8080/axis/HelloJWS.jws?wsdl
可以使用複製粘貼來完成這個操作,之後按 enter 鍵,正常來說會看到下面的景象,就是什麼也沒有發生,事實上,打開下面的目錄,你會發現多出一個文件夾,這個文件夾可以加到你的其他java項目中,像調用一般類一樣調用你剛纔發佈的webservice方法。
先看下生成的文件夾:
看看裏面的結構
下面演示如何調用剛剛生成的webservice 客戶端代碼,當然,你需要有一個java的web項目,還需要把axis這個項目中的jar包添加到這個項目的lib路徑中。
下面的例子將在myeclipse 中實現服務的調用過程。
新建一個web project ,然後把剛纔生成的客戶端的文件夾整個複製到src目錄下
然後,報錯了,別擔心,把jar包考到lib路徑下,或者直接設置路徑(建議這樣,節約存儲空間)
恢復正常
然後新建一個java測試類HelloJWSTest.java
HelloJWSTest.java代碼內容如下
運行結果如下
運行正常,但是提示有個class文件無法解析,我們把mail.jar也加入到路徑中,或者拷貝到本項目的lib包中,再次運行測試方法shift+alt+d+t,就完全正常了。
爲了之後不再出現其他問題,順便把activation.jar 也加入到路徑中。
6.3然後介紹一下使用eclipse這個IDE自動生成客戶端的方法
完成
延伸,可能我測試環境和生產環境的url是不同的,客戶端應該更自由些
回到myeclipse的項目中
在HelloJWSServiceLocator.java中
添加一個帶參數的構造方法
7、WSDD發佈webservice
在使用JWS發佈webservice服務的時候,儘管我們再axis這個項目中添加了一項服務,但是去訪問http://localhost:8080/axis/servlet/AxisServlet的時候,並不能發現我們剛纔發佈的服務,反過來說,我們把HelloJWS.jws這個文件的存在是不可知的,如果我們添加一個服務就可以通過http://localhost:8080/axis/servlet/AxisServlet來看到,移除這個服務這裏就減少,顯然這樣更加有利於我們對項目的管理。所以,就涉及到另一種更爲複雜也更爲常用的webservice服務的發佈方式,WSDD式的發佈。
我們還是在helloworld項目中進行操作,不同的是這次我們將允許package包的存在。
這個服務將先被添加到axis 項目中,然後最終會直接在helloworld 項目中被訪問。
新建java文件,HelloWSDD.java
HelloWSDD.java的內容如下,將提供webservice的對外發布的方法:
然後啓動一下項目,實質上是編譯一下項目,獲取class文件
複製 stu這個文件夾到D:\tomcat7\webapps\axis\WEB-INF\classes
然後編寫兩文件,分別爲deploy.wsdd和undeploy.wsdd,當然名字不是固定的,你可以自定義。
deploy.wsdd的內容如下
undeploy.wsdd的內容如下(注意service的name就是deploy.wsdd中設定的內容)
編寫完畢後將這兩個文件複製到D:\tomcat7\webapps\axis\WEB-INF
然後訪問一下http://localhost:8080/axis/servlet/AxisServlet
如圖
然後在DOS中操作
打開axis的WEB-INF(D:\tomcat7\webapps\axis\WEB-INF)
輸入
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://localhost:8080/axis/services/HelloWSDD deploy.wsdd
爲了防止報錯,mail.jar 和 activation.jar 複製 到axis這個項目下的lib文件夾下
按enter鍵
運行結果如下:
然後看下路徑D:\tomcat7\webapps\axis\WEB-INF
多了一個文件server-config.wsdd 說明成功了。
然後再次訪問一下鏈接http://localhost:8080/axis/servlet/AxisServlet
多了一個服務有木有,說明WSDD發佈成功了,點進去看看,訪問的方法前面已經說過,自己訪問看看吧
然後再次回到DOS窗口
D:\tomcat7\webapps\axis\WEB-INF>
輸入下面的命令行
java org.apache.axis.client.AdminClient undeploy.wsdd
按enter 鍵
然後再次訪問一下鏈接
http://localhost:8080/axis/servlet/AxisServlet
剛纔WSDD發佈的服務HelloWSDD已經從列表中去掉了
8、在自己的項目中使用WSDD方式發佈webservice服務
我們已經在axis項目中實現了以jws方式和wsdd方式發佈簡單的webservice服務,下面將演示如何在我們自己的項目中以wsdd方式發佈webservice服務(jws式的就不實用了)。
首先在我們自己的項目中引入足夠的jar包
然後把剛纔的兩個文件 deploy.wsdd 和 undeploy.wsdd複製到項目helloworld的WEB-INF文件夾中
然後需要對web.xml 的內容做出處理
如果你還記得axis 這個項目,把他的web.xml文件找出來,複製裏面的內容,替換掉helloworld的web.xml (頭部可以保留編碼格式<?xml version="1.0" encoding="UTF-8"?>,內部的AdminServlet可以註釋掉,儘管沒有啥影響)
然後啓動項目(如果你不想程序報錯,就把剛纔爲訪問axis項目而啓動的tomcat服務器關閉掉,然後再去啓動項目,我是在myeclipse中直接啓動的,而且我myeclipse的tomcat端口是8085)
我們再次來到DOS環境,不過這次需要打開的是helloworld的WEB-INF,我們需要deploy.wsdd和undeploy.wsdd
輸入剛纔一模一樣的命令,噢,不 ,你現在的項目是helloworld,不是axis,而且要注意你的端口號是不是8080,我的測試環境端口是8085
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://localhost:8085/helloworld/services/HelloWSDD deploy.wsdd
然後訪問http://localhost:8085/helloworld/servlet/AxisServlet
點進去
然後是去掉剛纔添加的wsdd服務
,回到DOS環境
輸入命令
java org.apache.axis.client.AdminClient undeploy.wsdd
如果是這個項目是發佈在axis這個項目中的話,這個命令是OK的,但是如果失敗了,也不要擔心,換成下面的命令試試
java org.apache.axis.client.AdminClient undeploy.wsdd -l http://localhost:8085/helloworld/servlet/AxisServlet undeploy.wsdd
再次訪問http://localhost:8085/helloworld/servlet/AxisServlet
服務成功去除了
9、常見問題解決
9.1 jar包錯誤
解決辦法是把必須的那幾個jar包添加到路徑中。
9.2 jws發佈失敗
看看是不是文件內部有 package com.demo.test 類似的,jws 發佈是不允許有包路徑的。
9.3wsdd 找不到wsdd路徑
在你DOS當前路徑下輸入 “dir”+enter鍵,看是否有wsdd文件,如果沒有wsdd文件就再看下DOS中打開文件夾的教程,否則就去除路徑中的中文試一下。
9.4 404等錯誤
看你的環境是否啓動了服務器,服務器中是否有要訪問的項目,訪問路徑是否正確,端口號是否正確。
10、wsdd命令的作用是什麼?如何在使 項目名.war 具備可訪問的webservice服務——直接編輯server-config.wsdd文件
作用是在與wsdd通路徑下產生一個server-config.wsdd文件,我們添加wsdd服務或者去除wsdd服務本質上都是對這個文件內容的修改
但是需要注意的是,這個文件默認是不存在的,而且,即便是在ide環境中調用了tomcat可以訪問wsdd發佈的服務,在直接導出的項目名.war中也不包含這個文件。
也就是說:如果想要生成的項目名.war 在tomcat中發佈後可以被訪問到webservice服務,必須在項目的sources目錄下增加server-config.wsdd文件
技巧就是,直接把tomcat中使用wsdd命令自動生成的server-config.wsdd複製到當前的目錄下,或者在生產環境運行wsdd發佈服務命令。