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

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;

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

五、总结下过程
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 “ T o m c a t / l i b ” f o l d e r . C o p y W A R t o “ {Tomcat}/lib” folder. Copy WAR to “ Tomcat/libfolder.CopyWARto{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文件,加上:

<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、部署,启动

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值