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_HOMEto your Tomcat installation.Run
ant install
This essentially copies
lib/*.jarfrom 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,WSServletand 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文件,加上:
<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上的更多相关文章
- Intellij IDEA社区版打包Maven项目成war包,并部署到tomcat上
转自:https://blog.csdn.net/yums467/article/details/51660683 需求分析 我们利用 Intellij idea社区版IDE开发了一个maven的sp ...
- springBoot项目打war包部署到tomcat上
1 首先得在本地跑通. 2 处理启动类Application @SpringBootApplication public class Application extends SpringBootSer ...
- 11. 将博客部署到tomcat上
springboot项目既可以以jar运行,也可以做成war包放到服务器上,因为我的博客项目涉及到文件上传,所以按照jar的方式就不可行,需要部署到tomcat上,具体做法如下:1. 修改pom.xm ...
- 把web项目部署到tomcat上
首先在服务器搭建JDK环境:https://www.cnblogs.com/lb809663396/p/5855877.html 然后把tomcat文件包复制到服务器上,访问http://localh ...
- web开发并部署到Tomcat上
1. eclipse配置tomcat https://jingyan.baidu.com/article/e4d08ffdabb0710fd2f60de9.html https://blog.csdn ...
- Eclipse+Maven创建webapp项目 及部署在tomcat上
1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显示创建maven项目的窗口,勾选如图所示,Create a sim ...
- 菜鸟教程之工具使用(三)——Maven自动部署到Tomcat
书接上回,上一篇博客介绍了如何用Maven将项目打包,这篇文章就说一下如何用Maven将打完的war包部署到Tomcat,而不是手动的copy过去. 目前比较流行的方式有两种:一种是利用Tomcat官 ...
- 什么是maven与maven的使用过程(例如在idea创建maven工程(重点讲讲idea创建使用maven管理的web工程,并且部署到tomcat上))
什么是maven与maven的使用过程(例如在idea创建maven工程) (重点讲讲idea创建使用maven管理的web工程项目,并且部署到tomcat服务器上) 一.什么是maven? 1, M ...
- 记一次使用命令行启动部署在tomcat上的应用
在Eclipes进行程序开发完成后,一般都会直接在Eclipse部署启动,其中的一些启动参数设置都会在其中进行,若用命令行启动,则需要手动配置. 程序开发完成后打成的war包,需要部署到Tomcat应 ...
随机推荐
- Gmail 启用 POP 标准配置说明:
接收邮件 (POP3) 服务器 - 要求 SSL:pop.gmail.com使用 SSL:是端口:995 发送邮件 (SMTP) 服务器 - 要求 TLS 或 SSL:smtp.gmail.com使用 ...
- 使用PHP发送邮件的两种方法
使用PHP发送邮件的两种方法 May242013 作者:Jerry Bendy 发布:2013-05-24 22:25 分类:PHP 阅读:2,107 views 抢沙发 今天 ...
- Yii源码阅读笔记(十六)
Model类,集中整个应用的数据和业务逻辑—— /** * Generates a user friendly attribute label based on the give attribute ...
- android studio无法关联源码
1.查看源码的时候报这个, 说找不到API 23的源码 2.本地的SDK 3.google stackoverflow 给出解决方案 http://stackoverflow.com/questio ...
- [daily][network] NAT原理(转)
写在转发之前: 一直以来,我一直有一个疑惑,SNAT的时候,如果两个内网主机恰巧使用了相同的源端口号该怎么办呢? 我自己猜测的方法是改掉一个端口号,把端口一起映射(当然还有另一个设想,就是把包同时广播 ...
- 冒泡排序与插入排序(C#实现)
本人应届生面试,发现被问了2次关于排序的算法.当时竟然没写出来!!!好吧,可能是用库函数多了,很久没搞算法了,在纸上写没感觉吧. 今天花了1个多小时写了下冒泡排序与插入排序(C#实现),并写了注释和小 ...
- oj 1031 random permutation
Problem A: Random Permutations Time Limit: 1 Sec Memory Limit: 128 MB Submit: 91 Solved: 54 Descri ...
- settimeout 传递带有参数的函数
方法一:传递带有参数的function给settimeout,写个函数,该函数返回一个不带参数的函数 <script language="javascript"> fu ...
- 移动设备优先viewport
Bootstrap 3 的设计目标是移动设备优先,然后才是桌面设备.这实际上是一个非常及时的转变,因为现在越来越多的用户使用移动设备. 为了让 Bootstrap 开发的网站对移动设备友好,确保适当的 ...
- C++ Windows 上简单的非阻塞Select模型
说明:当客户端连接数超过64个的时候,每次最多select64个,但每一帧可以select多次,理论上可以突破fd个数的限制 .h #ifndef _MODULE_SELECT_H_ #define ...