博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAX-WS(三)构建简单webservice部署到tomcat上
阅读量:6590 次
发布时间:2019-06-24

本文共 3192 字,大约阅读时间需要 10 分钟。

前言:

虽然构建本地的jax-ws的webservice很简单,但要部署到tomcat上要绕过点弯。

tomcat本身和jdk都没有jaw-ws的API,所以部署的时候需要额外做点事情,有两种选择

1、下载必要的jar库,JAX-WS RI,地址:

2、使用其他服务器,比如TomEE(tomcat的加强版)等。(未测试),可以参考:

因为平时用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 创建工程

如下:

wsdl目录是自己建的。

2.2 写一个Hello的web service

package org.ccnt.jax.web.server;import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic 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文件

把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部署上了。

表面已经部署上了

 

四、客户端调用

新建一个工程,到工程目录下,命令:

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

 

五、总结下过程

  1. Create a web service (of course).
  2. Create a sun-jaxws.xml, defines web service implementation class.
  3. Create a standard web.xml, defines WSServletContextListener, WSServlet and structure of a web project.
  4. Build tool to generate WAR file.
  5. Copy JAX-WS dependencies to “${Tomcat}/lib” folder.
  6. Copy WAR to “${Tomcat}/webapp” folder.
  7. 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、部署,启动

 

 

 

 

转载地址:http://jmzio.baihongyu.com/

你可能感兴趣的文章
js焦点图片层叠轮播切换滚动
查看>>
Delphi XE5 for Android (三)
查看>>
爬虫-----自定义框架
查看>>
Django--CRM-客户列表展示, 分页
查看>>
SELinux处理命令
查看>>
对自己狠才能成功
查看>>
mysql中int、bigint、smallint 和 tinyint的区别详细介绍
查看>>
Go语言极速入门手册
查看>>
数据结构学习(1):单链表
查看>>
Oracle备份数据库
查看>>
paramiko模块
查看>>
Python之路——网络编程
查看>>
uva 11732 "strcmp()" Anyone?
查看>>
php实现无限级分类(递归方法)
查看>>
线程学习一
查看>>
linux常用基本命令
查看>>
博文目录
查看>>
SQL系列(二)—— 查询(select)
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
jdk和jre是什么?都有什么用?(转帖)
查看>>