在webservice流行的今天,如何构建webservice是很多java软件开发人员都想掌握的一门技术,在jdk6以前,我们构建webservice都需要一些开源的项目作为支持,例如xfire,但是jdk6一经发布,构建一个webservice在java开发领域变得非常就简单,下面笔者就简单介绍一下,如何使用jdk6构建一个webservice,并将其发布在tomcat上。
一、创建java项目ws_test_sample,将.class文件输出到WEB-INF\classes下。
二、新建java类如下:
- package com.je.ws.sample;
- import javax.jws.WebMethod;
- import javax.jws.WebService;
- @WebService(name="helloService", portName="helloServicePort", targetNamespace="http://www.javaedu.com")
- public class HelloService {
- @WebMethod
- public String hello(String name) {
- return "Hello," + name;
- }
- }
三、进入到E:\eclipsespace\ws_test_sample,执行
引用
E:\eclipsespace\ws_test_sample>wsgen -cp .\WEB-INF\classes -s .\src -d .\src com.je.ws.sample.HelloService
四、生成的文件结构如下:
五、编写webservice服务端测试类
- package com.je.ws.sample;
-
- import javax.xml.ws.Endpoint;
-
-
- public class Test {
-
-
-
-
- public static void main(String[] args) {
- Endpoint.publish("http://127.0.0.1:8001/HelloServicePort", new HelloService());
- }
-
- }
六、直接运行Test类,并在浏览器中输入:http://127.0.0.1:8001/HelloServicePort和http://127.0.0.1:8001/HelloServicePort?wsdl,测试webservice是否发布成功,见到如下画面,则webservice测试发布成功。
如果想将webservice发布到Tomcat上,则需要按照以下步骤进行:
一、在web.xml里加入:
- <listener>
- <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
- </listener>
-
- <servlet>
- <servlet-name>WSServlet</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>WSServlet</servlet-name>
- <url-pattern>/helloServicePort</url-pattern>
- </servlet-mapping>
二、在WEB-INF下新建sun-jaxws.xml文件,其内容如下:
- <endpoint name="HelloService" implementation="com.je.ws.sample.HelloService" url-pattern="/helloServicePort" />
三、在E:\eclipsespace\ws_test_sample\WEB-INF\lib下加入如下四个webservice相关的jar包
四、启动tomcat,访问:http://127.0.0.1:8088/ws/helloServicePort,得到如下画面:
可点击http://127.0.0.1:8088/ws/helloServicePort?wsdl得到如下画面:
此刻说明webservice在Tomcat上发布成功了!在下一篇博客里,我将告诉大家如何使用soapui来测试一个webservice,以及如何用使用java原生API通过http协议访问一个webservice。