天天看點

MyEclipse上基于JAX-WS開發Webservice

JAX-WS(Java API for XML-Web Services)

環境說明:

MyEclpose 6.5 blue Milestone-1

jdk 1.6.0_15

tomcat 6.0

建立并釋出伺服器端應用

1.建立web service project。

設定如圖。

MyEclipse上基于JAX-WS開發Webservice

2.建立一個實作類,代碼如下:

package net;

public class addImpl {

    public double add(double num1,double num2){

        return num1+num2;       

    }

}

這裡隻需要實作類,不再像XFIRE還需要一個接口。

ps:Web服務可用單個Java類的實作,但是最好是用“接口+實作”的方式來實作

3.建立web service

選擇工程名,點選工具欄的new web service按鈕。

MyEclipse上基于JAX-WS開發Webservice

然後如下配置:

MyEclipse上基于JAX-WS開發Webservice

接着(在JAVA BEAN中輸入實作類的名稱,選擇generate wsdl in project):

MyEclipse上基于JAX-WS開發Webservice

點選finish後包中多出一個該實作類的代理類addImplDelegate.java

4.導入包

工程-屬性-build path-add library-myeclipse libraries導入以下兩個包:

MyEclipse上基于JAX-WS開發Webservice

如果缺少這兩個包,tomcat啟動時會出現以下錯誤:

嚴重: Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener

java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener

5.啟動tomcat,驗證并擷取WSDL檔案

啟動tomcat後在浏覽器中輸入http://localhost:8080/jaxws_src/addImplPort并點選頁面中的連結檢視WSDL檔案,如果該檔案能正确顯示證明伺服器端大功告成。

wsdl檔案的uri是http://localhost:8080/jaxws_src/addImplPort?wsdl(你可能會問URI中的addImplPort從何而來,其實這個名字由圖4中的Services port設定)

ps:在web.xml中有如下類容,可看出這個/addImplPort的作用

代碼

<servlet>

      <description>JAX-WS endpoint - addImplService</description>

      <display-name>addImplService</display-name>

      <servlet-name>addImplService</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>addImplService</servlet-name>

      <url-pattern>/addImplPort</url-pattern>

  </servlet-mapping>

建立用戶端調用:

(不要關閉TOMCAT啊,不然。。。。。)

1.建立java project,建立一包(包名安需求)net.

2.選擇包點new web services client(參照本文的第二張圖)

   ps:有别與xfire,用戶端不一定是服務端相同類型的web services client,可以是一個普通的工程也OK!!

3.指定wsdl的URI或wsdl的檔案路徑(見上)。

程式在net包中生成一些類如圖:

MyEclipse上基于JAX-WS開發Webservice

ps:圖中的add.java是一個javabean來,聰明的你應該知道它有啥用了吧!!

4.建立一個測試類:

package com;

import net.AddImplDelegate;

import net.AddImplService;

public class test {   

    public static void main(String[] args) {

        AddImplService service=new AddImplService();

        AddImplDelegate d= service.getAddImplPort();

        double result= d.add(15.6, 12.5);

        System.out.println(result);

    }

}

ok!大功告成啦!!

繼續閱讀