JAX-WS 构建简单webservice部署到tomcat上
JAX-WS(三)构建简单webservice部署到tomcat上前言:虽然构建本地的jax-ws的webservice很简单,但要部署到tomcat上要绕过点弯。 tomcat本身和jdk都没有jaw-ws的API,所以部署的时候需要额外做点事情,有两种选择 1、下载必要的jar库,JAX-WS RI,地址:https://jax-ws.java.net/ 2、使用其他服务器,比如TomEE(tomcat的加强版)等。(未测试),可以参考: Step by Step JAX-WS Web Services with Eclipse,TomEE,and Apache CXF 因为平时用tomcat比较多,就用第一种方式。 ? 一、准备工作下载jax-ws RI。 配置:根据文档, To install on Tomcat
为了安全,还是把tomcat目录下的share/lib中的jar包复制到tomcat_home/lib下。 ? 二、创建一个动态web project2.1 创建工程如下: wsdl目录是自己建的。 2.2 写一个Hello的web service复制代码 package org.ccnt.jax.web.server; import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class Hello { @WebMethod public String say(String name) { return "hello," + name; } } 注意: @WebService 注释在了Class之上,这告诉了JAXWS,此类为Webservice。 @WebMethod 注释在了public方法上,这告诉了JAXWS,此方法为soap方法,该方法有两个参数,一个input的String,一个output的String。 业务逻辑很简单,客户端调用传入一个Name,服务端返回给客户端一个”Hello: “+name的字串。 现在我们通过Java文件来生成Webservice相关布署文件以及调用接口。 2.3 用wsgen生成相应的类和wsdl文件命令 wsgen -cp ./build/classes -s ./src -r ./wsdl -d ./build/classes -wsdl org.ccnt.jax.web.server.Hello 生成一下目录: JAX-WS 2.0 有两种开发过程:自顶向下和自底向上。自顶向下方式指通过一个 WSDL 文件来创建Web Service,自底向上是从 Java 类出发创建 Web Service。两种开发过程最终形成的文件包括: 1.SEI。一个SEI对应WSDL中WebService的一个port,在Java中是一个Java接口。 2.SEI实现类。 3.WSDL和XSD文件。 结合公司内项目的特点,我们更多的是碰到以下两种情况: 1.? Onsite要我们做一个Webservice或者是客户要求我们提供Webservice接口; 2.? Onsite已经有一个Webservice了,现在要我们做客户端集成。 ? 2.4 配置文件,编写sun-jaxws.xml文件<?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <endpoint name='Hello' implementation='org.ccnt.jax.web.server.Hello' url-pattern='/HelloService' /> </endpoints> 把Hello声明为webservice 2.5 配置文件,修改web.xml文件添加上: <listener> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> </listener> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/HelloService</url-pattern> </servlet-mapping> 三、部署在Eclipse里面直接运行tomcat服务器,就把Hello webservice部署上了。 http://localhost:8080/JaxwsWebServer/HelloService 表面已经部署上了 ? 四、客户端调用新建一个工程,到工程目录下,命令: wsimport -s ./src -d ./bin -p org.ccnt.jax.web.client http://localhost:8080/JaxwsWebServer/HelloService?wsdl
在org.ccnt.jax.web.client目录下能看到几个生成的文件,创建ClientMain来调用服务 package org.ccnt.jax.web.client; public class ClientMain { public static void main(String[] args) { HelloService service = new HelloService(); String response = service.getHelloPort().say("loull"); System.out.println(response); } } ? 五、总结下过程
我在开发web项目的webservice的时候,步骤是: 1、create a web service 2、用wsgen工具生成wsdl、java、class文件,class文件可以交给Eclipse自动生成 wsgen -cp ./build/classes -r ./wsdl -s ./src -d ./build/classes -wsdl org.ccnt.jax.server.SampleService ? 3、编写或修改sun-jaxws.xml文件,加上: <endpoint name='MTOMSimple' implementation='org.ccnt.jax.web.server.HelloSimple' url-pattern='/HelloSimpleService' /> 4、修改web.xml文件,加上: <servlet> <servlet-name>HelloSimple</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloSimple</servlet-name> <url-pattern>/HelloSimpleService</url-pattern> </servlet-mapping> 5、部署,启动 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |