在学习CXF的时候,看到了这一篇博客,写的是JAXWS,觉得不错,就先学习一下博主的几篇博客,要多些博主的分享啊。
原文地址:http://blog.csdn.net/lifetragedy/article/details/7205832
这里写的应该算是,学习总结,根据自己的理解学习整理一下。
---------------------------------------------------------------------------------------------
JAX-WS的官方网站,大家可以在这里下载JAR包:https://jax-ws.java.net/
我也上传了资源:http://download.csdn.net/detail/jolingogo/5452285
这里用的是JAXWS2.2.7-20120813.zip,这里面有各种jar包,示例,文档。
这里依然使用Maven来管理项目
这里,暂时就加了一个依赖包jaxws-rt
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.deppon.demo</groupId> <artifactId>jaxws-demo</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>jaxws-demo Maven Webapp</name> <url>http://maven.apache.org</url> <!-- 属性配置 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>2.2.7</version> </dependency> </dependencies> <build> <finalName>jaxws-demo</finalName> </build> </project>
IUserService
package com.deppon.demo.jaxws.service; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface IUserService { @WebMethod(operationName="say") public String say(@WebParam(name="name") String name); }
package com.deppon.demo.jaxws.service.impl; import javax.jws.WebService; import com.deppon.demo.jaxws.service.IUserService; @WebService(endpointInterface="com.deppon.demo.jaxws.service.IUserService") public class UserService implements IUserService { @Override public String say(String name) { System.out.println("name->" + name); return "你好," + name; } }
<?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <endpoint name='UserService' implementation='com.deppon.demo.jaxws.service.impl.UserService' url-pattern='/userService' /> </endpoints>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <listener> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> </listener> </web-app>这里就出现问题了,不知道为什么,在网上找的资料说,需要配置一个Servlet:
<servlet> <servlet-name>UserService</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>WSServlet</servlet-name> <url-pattern>/userService</url-pattern> </servlet-mapping>
接下来,就可以部署项目了。
将项目部署到Tomcat,还记得上面的sun-jaxws.xml吗,那里配置了一个url-pattern,这个在配置Servlet的时候见过,是一样的道理,
部署成功后,我们访问一下:
我们可以单击一下WSDL链接:
到这里的话,一切都还可以,接下来,如果想要再写一个服务的话,就稍微有点儿怪:
package com.deppon.demo.jaxws.service.impl; import javax.jws.WebMethod; import javax.jws.WebService; @WebService(serviceName="HWService") public class HelloWorld { @WebMethod() public String sayHello() { return "Hello world !"; } }
<?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <endpoint name='userService' implementation='com.deppon.demo.jaxws.service.impl.UserService' url-pattern='/userService' /> <endpoint name="helloWorld" implementation="com.deppon.demo.jaxws.service.impl.HelloWorld" url-pattern="/helloworld" > </endpoint> </endpoints>
看到了吗,两个服务都显示出来了,当然,可能就是这么设计的
到这里,我们就从Java代码发布了一个服务,下一篇,我们根据这个服务,写一个客户端来测试一下。