使用JAX-WS(JWS)发布WebService(二)
- 将项目改为maven工程,并发布到Tomcat;
- WebService常用到的注解以及作用;
- 发布过程中遇到的问题总结;
一、将项目改为maven工程,并发布到Tomcat;
继续上一篇,将代码完善成一个web项目,并发布到Tomcat中。因为一些特殊原因我使用的是jdk1.7,Tomcat6.0:
在pom.xml文件中我们引用了jaxws-rt包
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.ycdhz</groupId>
- <artifactId>webservice</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <properties>
- <!-- 文件拷贝编码 -->
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <!-- 输出编码 -->
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <!-- 编译编码 -->
- <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.sun.xml.ws</groupId>
- <artifactId>jaxws-rt</artifactId>
- <version>2.2.10</version>
- </dependency>
- </dependencies>
- </project>
在\webapp\WEB-INF下添加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="com.ycdhz.web.HelloWServiceImpl" url-pattern="/hello" />
- </endpoints>
在\webapp\WEB-INF下添加web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <display-name>webservice</display-name>
- <listener>
- <listener-class>
- com.sun.xml.ws.transport.http.servlet.WSServletContextListener
- </listener-class>
- </listener>
- <servlet>
- <servlet-name>jaxws</servlet-name>
- <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>jaxws</servlet-name>
- <url-pattern>/hello</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
将项目添加到Tomcat中启动,输入http://localhost:端口号/工程名/hello 访问成功:
二、WebService常用到的注解以及作用
注解 | 属性 | 作用 |
@WebService | serviceName | 对外发布的服务名,指定 Web Service 的服务名称:wsdl:service。默认值为 Java 类的简单名称 + Service。 |
endpointInterface | 服务接口全路径, 指定做SEI(Service EndPoint Interface)服务端点接口 | |
name | 此属性的值包含XML Web Service的名称。在默认情况下,该值是实现XML Web Service的类的名称,wsdl:portType 的名称。 | |
portName | wsdl:portName。默认值为 WebService.name+Port。 | |
targetNamespace | 指定你想要的名称空间,默认是使用接口实现类的包名的反缀 | |
@WebMethod | operationName | 指定与此方法相匹配的wsdl:operation 的名称。默认值为 Java 方法的名称。 |
action | 定义此操作的行为。对于 SOAP 绑定,此值将确定 SOAPAction 头的值。默认值为 Java 方法的名称。 | |
exclude | 指定是否从 Web Service 中排除某一方法。默认值为 false。 | |
@WebParam | name | 参数的名称。如果操作是远程过程调用(RPC)类型并且未指定partName 属性,那么这是用于表示参数的 wsdl:part 属性的名称。 |
partName | 定义用于表示此参数的 wsdl:part属性的名称。仅当操作类型为 RPC 或者操作是文档类型并且参数类型为BARE 时才使用此参数。 | |
targetNamespace | 指定参数的 XML 元素的 XML 名称空间。当属性映射至 XML 元素时,仅应用于文档绑定。默认值为 Web Service 的 targetNamespace。 | |
mode | 此值表示此方法的参数流的方向。有效值为 IN、INOUT 和 OUT。 | |
header | 指定参数是在消息头还是消息体中。缺省值为 false。 | |
@WebResult | name | 当返回值列示在 WSDL 文件中并且在连接上的消息中找到该返回值时,指定该返回值的名称。对于 RPC 绑定,这是用于表示返回值的 wsdl:part属性的名称。 |
targetNamespace | 指定返回值的 XML 名称空间。仅当操作类型为 RPC 或者操作是文档类型并且参数类型为 BARE 时才使用此参数。 | |
header | 指定头中是否附带结果。缺省值为false。 | |
partName | 指定 RPC 或 DOCUMENT/BARE 操作的结果的部件名称。默认值为@WebResult.name。 |
三、发布过程中遇到的问题总结
1、java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener
解决方法:检查项目中是不是没有引用jaxws-rt相关包;
因为tomcat 中缺少对jaxws的相关支持,所以需要下载jaxws-ri包,将包中lib下的jar文件复制一份到tomcat的lib包中;
2、在生产的wsdl文件中,没有显示对应的参数类型和参数名
解决方法:在接口中添加@SOAPBinding(style = Style.RPC)注解;
3、maven工程无法添加到Tomcat6.0的服务中,提示Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
解决方法:修改工程目录下\.settings\org.eclipse.wst.common.project.facet.core.xml文件,将jst.web的版本改为2.5
使用JAX-WS(JWS)发布WebService(二)的更多相关文章
- 在spring boot微服务中使用JWS发布webService
发布时间:2018-11-22 技术:Java+spring+maven 概述 在springboot微服务中使用JWS发布webService,在服务启动时自动发布webservice接口. ...
- 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
WebService历来都很受重视,特别是Java阵营,WebService框架和技术层出不穷.知名的XFile(新的如CXF).Axis1.Axis2等. 而Sun公司也不甘落后,从早期的JAX-R ...
- JAX-WS(JWS)发布WebService
WebService历来都很受重视,特别是Java阵营,WebService框架和技术层出不穷.知名的XFile(新的如CXF).Axis1.Axis2等. 而Sun公司也不甘落后,从早期的JAX-R ...
- 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService(转载)
WebService历来都很受重视,特别是Java阵营,WebService框架和技术层出不穷.知名的XFile(新的如CXF).Axis1.Axis2等. 而Sun公司也不甘落后,从早期的JAX-R ...
- 使用JAX-WS(JWS)发布WebService(一)
JAX-WS概述: 通过Main发布一个简单WebService: JAX-WS(Java API for XML Web Services)规范是一组XML web services的JAVA AP ...
- WebService学习之旅(二)JAX-WS基于Web容器发布WebService
在上节中我们定义Web服务接口和实现类后,调用Endpoint类的静态方法publish发布来webservice,这种方法使用起来虽然简单,但是对于一个企业级应用来说通常对外提供的服务可能不止一个, ...
- Maven搭建webService (二) 创建服务端---使用web方式发布服务
今天和大家分享 使用 web方式发布 webService 服务端.客户端 1.首先创建 一个web工程(增加Maven依赖) 2.增加Maven依赖包,如下: <!-- spring core ...
- 使用CXF发布WebService服务简单实例
一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...
- 用JAX-WS在Tomcat中发布WebService
JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架 ...
随机推荐
- July 21st 2017 Week 29th Friday
If you want to fly too high in relation to the horizon forget. 要想飞得高,就该把地平线忘掉. Always keep our eyes ...
- hdu 4825 Xor Sum(trie+贪心)
hdu 4825 Xor Sum(trie+贪心) 刚刚补了前天的CF的D题再做这题感觉轻松了许多.简直一个模子啊...跑树上异或x最大值.贪心地让某位的值与x对应位的值不同即可. #include ...
- 【[AHOI2005]航线规划】
树剖维护边双 首先我们看到在整个过程中图是保证连通的,于是我们并不需要LCT来维护连通性 而这些询问询问的是两个点之间关键路径的数量,也就是无论怎么走都必须走的数量,显然这就是两点之间的割边的数量 由 ...
- thinkphp5.0调用ajax无刷新加载数据
控制器层那边就是调数据返回,这里不再赘述,视图层页面ajax部分写法如下 function shanchu(obj) { var code = $(obj).attr("code" ...
- Linux学习总结(二) 网络配置-NAT方式静态IP配置篇
一:DHCP 服务验证 1: 之前我们在里面已经装好了centos,当时我们选择的组网方式为NAT方式,那么我们怎么样如何快速实现虚拟机系统访问外网呢?能不能直接上网呢,来我们试一下ping baid ...
- Sublime Text 3 for Mac 3176 序号版
—– BEGIN LICENSE —–sgbteamSingle User LicenseEA7E-11532598891CBB9 F1513E4F 1A3405C1 A865D53F115F202E ...
- MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite
MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...
- 第21章 DMA—直接存储区访问
本章参考资料:<STM32F76xxx参考手册>DMA控制器章节. 学习本章时,配合<STM32F76xxx参考手册>DMA控制器章节一起阅读,效果会更佳,特别是涉及到寄存器说 ...
- 搭建Hadoop2.6.0+Spark1.1.0集群环境
前几篇文章主要介绍了单机模式的hadoop和spark的安装和配置,方便开发和调试.本文主要介绍,真正集群环境下hadoop和spark的安装和使用. 1. 环境准备 集群有三台机器: master: ...
- Spring 整合Mybatis Mapper动态代理方法
先看项目目录结构 很清爽了 最重要的Spring的核心配置文件,看一下 <?xml version="1.0" encoding="UTF-8"?> ...