设为首页 收藏本站
查看: 1165|回复: 0

[经验分享] JAX-WS(三)构建简单webservice部署到tomcat上

[复制链接]

尚未签到

发表于 2015-8-8 11:00:57 | 显示全部楼层 |阅读模式
前言:
  虽然构建本地的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




  •   Set CATALINA_HOME to your Tomcat installation.

  •   Run

    ant install
      This essentially copies lib/*.jar from the root of JAX-WS RI extracted bundle to $CATALINA_HOME/shared/lib

  为了安全,还是把tomcat目录下的share/lib中的jar包复制到tomcat_home/lib下。
  

二、创建一个动态web project

2.1 创建工程
  如下:
   DSC0000.png
  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
  生成一下目录:
   DSC0001.png
  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文件







  把Hello声明为webservice

2.5 配置文件,修改web.xml文件
  添加上:



  
com.sun.xml.ws.transport.http.servlet.WSServletContextListener


Hello
com.sun.xml.ws.transport.http.servlet.WSServlet
2


Hello
/HelloService

  

三、部署
  在Eclipse里面直接运行tomcat服务器,就把Hello webservice部署上了。
  http://localhost:8080/JaxwsWebServer/HelloService
   DSC0002.png
  表面已经部署上了
  

四、客户端调用
  新建一个工程,到工程目录下,命令:



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);
}
}
  

五、总结下过程


  • Create a web service (of course).
  • Create a sun-jaxws.xml, defines web service implementation class.
  • Create a standard web.xml, defines WSServletContextListener, WSServlet and structure of a web project.
  • Build tool to generate WAR file.
  • Copy JAX-WS dependencies to “${Tomcat}/lib” folder.
  • Copy WAR to “${Tomcat}/webapp” folder.
  • Start It.
  我在开发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文件,加上:




  4、修改web.xml文件,加上:



  
HelloSimple
com.sun.xml.ws.transport.http.servlet.WSServlet


HelloSimple
/HelloSimpleService

  5、部署,启动
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-95511-1-1.html 上篇帖子: TOMCAT开放远程调试端口 下篇帖子: linux 下运行多个tomcat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表