1. 程式人生 > >基於JAX-WS的webService開發例項

基於JAX-WS的webService開發例項

最近因為工作原因接觸到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);//列印返回值
	}
}
結果


專案結構