JAX-WS 构建简单webservice部署到tomcat上

2024-05-13 14:08

本文主要是介绍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 {@WebMethodpublic 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);}
}


复制代码

 

五、总结下过程

  1. Create a web service (of course).
  2. Create a sun-jaxws.xml, defines web service implementation class.
  3. Create a standard web.xml, definesWSServletContextListener, 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文件,加上:

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

 

这篇关于JAX-WS 构建简单webservice部署到tomcat上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985921

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom