1. 程式人生 > >MyEclipse 開發WebService介面

MyEclipse 開發WebService介面

查看了網上的各類用Java開發WebService介面的方法,有些麻煩而且行不通,自己實踐後,將實踐過程記錄如下,以備以後之用。

一、服務端釋出WebService介面

1、在Myeclipse中,選擇File->new->Web Service Project,然後輸入專案名稱,框中內容按如下所示選擇即可,然後點選next。


2.點選next後,出現如下畫面:


3、再點選next,勾選兩個框。


4、點選2次next後出現如下介面,勾選所有框

5、點選Finish完成後。在該專案上的Java Build Path,選擇Libraries標籤,點選Add Libirary,在彈出框中,選擇MyEclipse Library,如下圖所示:


6、點選next後,在彈出框中選擇JAX-WS 2.1 Libraries,並點選Finish,檢查Libraries標籤中是否已經新增上了剛新增的Lib


7、 在下面這個頁面上全部勾選:


8、在TestServiceDemo/src目錄下,新建如下圖結構的類: 


其中IServiceHello類為介面,ServiceHelloImpl類為實現,具體程式碼如下:

IServiceHello類:

package com.mf5.app.service;

public interface IServiceHello 
{
	
	public String sayHello();

	public String sayHelloName(String name);
}

ServiceHelloImpl類:
package com.mf5.app.serviceimpl;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

import com.mf5.app.service.IServiceHello;

@WebService(targetNamespace="http://demo.webservice",name="Hello")
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class ServiceHelloImpl implements IServiceHello
{
	public final String str = "WebService伺服器返回訊息...";
	
	@WebMethod
	public String sayHello()
	{
		return str+"Hello!";
	}
	@WebMethod 
	public String sayHelloName(String name)
	{
		return str+name;
	}
}

9、在WEB-INF目錄下,新建一個檔案,名稱為:sun-jaxws.xm,其中內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
    <endpoint name="IServiceHello" 
    		implementation="com.mf5.app.serviceimpl.ServiceHelloImpl" 
    		url-pattern="/testservice">         
    </endpoint>
</endpoints>

10、在web.xml檔案中,在 <display-name>TestServiceDemo</display-name>  下面新增如下程式碼:注意的是,在sun-jaxws.xm中的url-pattern的值與web.xml中的servlet-mapping中對映的url-pattern的值必須是一樣的。

<listener>  
      <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>  
  </listener> 
  
  <servlet>  
    <servlet-name>testservice</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>testservice</servlet-name>  
    <url-pattern>/testservice</url-pattern>  
  </servlet-mapping>


11、可將TestServiceDemo部署在Myeclipse自帶的Tomcat中,並啟動tomcat伺服器。啟動成功後,訪問: http://localhost:8080/TestServiceDemo/testservice,如果出現如下頁面,則說明WebService部署成功。


點選頁面中的WSDL連線地址,訪問的是該WebService的wsdl檔案內容:


二、在Myeclipse上編寫客戶端,訪問介面

1、同樣新建一個Web Service Project工程,名字為TestClient。

2、開啟cmd命令,進入到專案的src目錄下,輸入以下命令:

wsimport  -keep http://localhost:8080/TestServiceDemo/testservice?wsdl


回車後就會將wsdl上的介面資訊生成java類檔案,放在src目錄下。

3、重新整理專案,可看到src目錄下有新檔案生成。


4、編寫DemoTest類,測試是否能呼叫介面。程式碼如下:

package com.mf5.test;

import webservice.demo.Hello;
import webservice.demo.ServiceHelloImplService;

public class DemoTest
{
	public static void main(String[] args) 
	{
            //建立一個用於產生WebServiceImpl例項的工廠,WebServiceImplService類是wsimport工具生成的
	    ServiceHelloImplService factory = new ServiceHelloImplService();
	    //通過工廠生成一個WebServiceImpl例項,WebServiceImpl是wsimport工具生成的
	    Hello wsImpl = factory.getHelloPort();
	    //呼叫WebService的sayHello方法
	    String resResult = wsImpl.sayHello();
	    System.out.println("呼叫WebService的sayHello方法返回的結果是:"+resResult);
	    System.out.println("---------------------------------------------------");
	    //呼叫WebService的sayHelloName方法
	    resResult = wsImpl.sayHelloName("孤傲蒼狼");
	    System.out.println("呼叫WebService的save方法返回的結果是:"+resResult);
	}
}

5、執行該DemoTest,檢查console如下結果,為成功訪問介面。