最近因為工作原因接觸到webService,所以記錄下開發中碰到的問題,方便自己以后復習,順便發揚一下開源精神。剛剛接觸webServie如果有什么錯誤歡迎大家指正。
本地環境:myEclipse10.6 tomcat7 JDK7 jaxws-ri-2.2.10
第一步:創建一個基于JAX-WS的webService工程
如果原先擁有正式項目也可以直接使用原有項目實現webService接口
?
第二步:引用庫
引用myEclipse libray中的JAX-WS 2.1 Runtime Libraries(Project Metro 1.1)和JAX-WS 2.1 APILibraries
不知道為什么有些myEclipse中卻無法找到這兩個庫,其中就包括我。
解決辦法:下載jaxws-ri,將lib目錄下的jar包全部復制到項目中lib目錄下。
下載地址:https://jax-ws.java.net/
?
第三步:創建測試接口
package com.demo.webservice;import javax.jws.WebMethod; import javax.jws.WebService;@WebService public class Test {//處理方法數量名稱任意 @WebMethodpublic String test1(String str){return "測試1接收參數:" + str;} }
第四步:在WEB-INF目錄下創建sun-jaxws.xml文件
<?xml version = "1.0"?> <endpoints version="2.0"xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"><!-- webService接口配置參數 name名稱 implementation實現接口的類 url請求此接口的地址 --><endpoint name="test1"implementation="com.webservice.Test"url-pattern="/test1"></endpoint></endpoints>
第五步:修改web.xml在web.xml中新增以下配置
<!-- 監聽器 --><listener><listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class></listener><servlet><servlet-name>test1</servlet-name><servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>test1</servlet-name> <url-pattern>/test1</url-pattern><!-- select請求地址 就是在sun-jaxwx.xml配置的url --> </servlet-mapping>
?
項目結構:
?
第六步:測試
發布項目到tomcat中,啟動tomcat。
打開瀏覽器輸入地址:http://localhost:8080/webService/test1?wsdl
如果出現下面這種頁面說明webService已經發布成功
?
第七步:編寫webService客戶端
1.創建新的Web Project項目webServiceClient
2.使用myEclipse工具創建webService客戶端
3.選擇你新建的項目webServiceClient(新項目名稱) 點擊next
4.輸入webService服務端地址,就是剛剛在瀏覽器輸入的地址,點擊next
5.等待一會兒,繼續點擊next
?
3.編寫測試類
package com.demo.test;import com.demo.webservice.Test; import com.demo.webservice.TestService;public class ClinetTest {public static void main(String[] args) {TestService service = new TestService();//根據接口的名稱改變Test testPort = service.getTestPort();String param = "測試1參數-你好!";//請求參數String result = testPort.test1(param);//請求System.out.println(result);//打印返回值 } }
結果
項目結構
?
?