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!大功告成啦!!

 

你可能感兴趣的:(webservice,MyEclipse,jax-ws)