JAX-WS(Java API for XML-Web Services)
环境说明:
MyEclpose 6.6jdk 1.6.0_15
tomcat 6.0创建并发布服务器端应用1.新建web service project。设置如下图。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按钮。然后如下配置:接着(在JAVA BEAN中输入实现类的名称,选择generate wsdl in project):点击finish后包中多出一个该实现类的代理类addImplDelegate.java4.导入包工程-属性-build path-add library-myeclipse libraries导入以下两个包:如果缺少这两个包,tomcat启动时会出现以下错误:
严重: Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListenerjava.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包中生成一些类如图: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); }}