基於JAX-WS的webService開發例項
阿新 • • 發佈:2019-01-31
最近因為工作原因接觸到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 { //處理方法數量名稱任意 @WebMethod public 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);//列印返回值
}
}
結果
專案結構