jdk提供webservice创建服务端代码的实例
来源:互联网 发布:潍坊山河软件 编辑:程序博客网 时间:2024/05/18 04:56
选自javaee技术体系中的webservice技术
JDK提供webservice的方式,主要是使用注解。
先写一个很简单的例子:
webservice服务端
package com.lgy.webservice.inter;import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic interface IWebServiceTest {@WebMethodpublic void test();}package com.lgy.webservice.impl;import javax.jws.WebService;import com.lgy.webservice.inter.IWebServiceTest;@WebServicepublic class WebServiceTestImpl implements IWebServiceTest {@Overridepublic void test() {System.out.println("aaaaaaaaaaaa");System.out.println("aaaaaaaaaaaa");System.out.println("aaaaaaaaaaaa");}}package com.lgy.webservice;import javax.xml.ws.Endpoint;import com.lgy.webservice.impl.WebServiceTestImpl;public class InitApp {public static void main(String[] args) { //访问方式:http://localhost:7777/tudou?wsdl String address="http://127.0.0.1:7777/test"; Endpoint.publish(address, new WebServiceTestImpl()); System.out.println("web service 服务发布");}}
执行InitApp中的main方法后,在浏览器属兔address:http://127.0.0.1:7777/test?wsdl,内容如下:
该 XML 文件并未包含任何关联的样式信息。文档树显示如下。
表名你的webservice服务发布成功了。wsdl中的信息包含了你webservice中的信息,wsdl的属性也特别的重要。知道wsdl的意义,你才能知道怎么去查询使用jdk自带的webservice注解。(下一篇介绍)。
ps:如果是web项目,我们的思路是在项目启动的时候发布webservice,当然也有场景需要手动的发布/停止webservice服务,或者在某个时间段类进行webservice的发布。2这里笔者介绍2中方案,一个是javaee的监听器,一个是javaee的servlet。实践就不再这里讲述了。
常见的webservice注解目录如下:
javax.jws.WebService
描述
目标:类
指定实现 Web Service 的 JWS 文件。
特性
表 B-1 javax.jws.WebService JWS 批注的特性
名称
描述
数据类型
是否必需?
name
Web Service 的名称。映射到 WSDL 文件中的 <wsdl:portType> 元素。
默认值为 JWS 文件中 Java 类的非限定名称。
String
否
targetNamespace
用于从此 Web Service 生成的 WSDL 和 XML 元素的 XML 名称空间。
默认值由 JAX-RPC specification 指定。
String
否
serviceName
Web Service 的服务名。映射到 WSDL 文件中的 <wsdl:service> 元素。
默认值为 JWS 文件中 Java 类的非限定名称,后面加上字符串 Service。
String
否
wsdlLocation
预定义 WSDL 文件的相对或绝对 URL。如果指定此特性,则当 JWS 文件与 WSDL 文件中的端口类型和绑定不一致时,jwsc Ant 任务不生成 WSDL 文件,并且会返回错误。
注意:
wsdlc Ant 任务从 WSDL 生成端点接口 JWS 文件时使用此特性。通常情况下,用户在其自己的 JWS 文件中永远不会使用该特性。
String
否
endpointInterface
现有服务端点接口文件的完全限定名称。如果指定此特性,则假设您已经创建了该端点接口文件,并且该文件位于 CLASSPATH 中。
String
否
javax.jws.WebMethod
描述
目标:方法
指定方法公开为该 Web Service 的公共操作。必须明确使用此批注来公开方法;如果不指定此批注,该方法则默认为不公开。
特性
表 B-2 javax.jws.WebMethod JWS 批注的特性
名称
描述
数据类型
是否必需?
operationName
操作的名称。映射到 WSDL 文件中的 <wsdl:operation> 元素。
默认值为该方法的名称。
String
否
action
此操作的操作。对于 SOAP 绑定,此特性的值决定 SOAP 消息中 SOAPAction 头的值。
String
否
javax.jws.WebParam
描述
目标:参数
自定义 Web Service 的操作输入参数和生成的 WSDL 文件的元素之间的映射。还用于指定参数的行为。
特性
名称
描述
数据类型
是否必需?
name
WSDL 文件中参数的名称。
对于 RPC 样式的 Web Service,该名称映射到表示该参数的 <wsdl:part> 元素。对于文档样式的 Web Service,该名称为表示该参数的 XML 元素的本地名称。
默认值为该方法的参数的名称。
String
否
targetNamespace
该参数的 XML 名称空间。此值仅用于文档样式的 Web Service,其中该参数映射到 XML 元素。
默认值为该 Web Service 的 targetNamespace。
String
否
mode
该参数的流方向。
有效值为:
- § WebParam.Mode.IN
- WebParam.Mode.OUT
- WebParam.Mode.INOUT
默认值为 WebParam.Mode.IN。
如果指定 WebParam.Mode.OUT 或 WebParam.Mode.INOUT,则该参数的数据类型必须为 Holder 或扩展 Holder。有关详细信息,请参阅JAX-RPC specification。
WebParam.Mode.OUT 和 WebParam.Mode.INOUT 模式仅对于 RPC 样式的 Web Service 或映射到头的参数受支持。
enum
否
header
指定该参数的值是否存在于 SOAP 头中。默认情况下,参数位于 SOAP 正文中。
有效值为 true 和 false。默认值为 false。
boolean
否
javax.jws.WebResult
描述
目标:方法
自定义 Web Service 操作返回值和生成的 WSDL 文件的对应元素之间的映射。
特性
表 B-4 javax.jws.WebResult JWS 批注的特性
名称
描述
数据类型
是否必需?
name
WSDL 文件中参数的名称。
对于 RPC 样式的 Web Service,该名称映射到表示返回值的 <wsdl:part> 元素。对于文档样式的 Web Service,该名称为表示返回值的 XML 元素的本地名称。
默认值为硬编码名称 result。
String
否
targetNamespace
返回值的 XML 名称空间。此值仅用于文档样式的 Web Service,其中返回值映射到 XML 元素。
默认值为该 Web Service 的 targetNamespace。
String
否
javax.jws.HandlerChain
描述
目标:类
将 Web Service 与包含处理程序链的配置的外部文件相关联。配置包括链中处理程序的列表、它们的执行顺序、初始化参数等。
如果为下列情况,则请在 JWS 文件中使用 @HandlerChain 批注,而不要使用 @SOAPMessageHandlers 批注:
- 希望多个 Web Service 共享同一个配置。
- 处理程序链包括用于多个传输的处理程序。
- 希望能够更改 Web Service 的处理程序链配置,且不重新编译实现它的 JWS 文件。
将此批注与 @SOAPMessageHandlers 批注进行组合是错误的。
有关外部配置文件的 XML Schema、有关创建该文件的其他信息,以及其他示例,请参阅 Web Services Metadata for the Java Platform specification。
特性
表 B-5 javax.jws.HandlerChain JWS 批注的特性
名称
描述
数据类型
是否必需?
file
处理程序链配置文件的相对或绝对 URL。相对 URL 为相对于 JWS 文件位置的 URL。
String
是
name
希望与该 Web Service 相关联的处理程序链的名称(位于由 file 特性指向的配置文件中)。
String
是
javax.jws.soap.SOAPBinding
描述
目标:类
指定 Web Service 到 SOAP 消息协议的映射。
特性
表 B-6 javax.jws.soap.SOAPBinding JWS 批注的特性
名称
描述
数据类型
是否必需?
style
指定请求和响应 SOAP 消息的消息样式。
有效值为:
- § SOAPBinding.Style.RPC
- SOAPBinding.Style.DOCUMENT。
默认值为 SOAPBinding.Style.DOCUMENT。
enum
否
use
指定请求和响应 SOAP 消息的格式设置样式。
有效值为:
- § SOAPBinding.Use.LITERAL
- SOAPBinding.Use.ENCODED
默认值为 SOAPBinding.Use.LITERAL。
enum
否
parameterStyle
确定方法参数是否表示整个消息正文,或者这些参数是否为包装在根据该操作命名的顶级元素中的元素。
有效值为:
- § SOAPBinding.ParameterStyle.BARE
- SOAPBinding.ParameterStyle.WRAPPED
默认值为 SOAPBinding.ParameterStyle.WRAPPED
注意:
此特性仅适用于 document-literal 样式的 Web Service。换句话说,只有也将 style 特性设置为 SOAPBinding.Style.DOCUMENT、use 特性设置为 SOAPBinding.Use.LITERAL 的情况下才能指定此特性。
enum
否
javax.jws.soap.SOAPMessageHandler
描述
目标:无;此批注只能在 @SOAPMessageHandler 数组内使用。
指定 @SOAPMessageHandler 数组中的某个特定 SOAP 消息处理程序。该批注包括指定该处理程序的类名、初始化参数、该处理程序处理的 SOAP 头的列表等的特性。
特性
表 B-7 javax.jws.soap.SOAPMessageHandler JWS 批注的特性
名称
描述
数据类型
是否必需?
name
SOAP 消息处理程序的名称。
默认值为实现 Handler 接口(或扩展 GenericHandler 抽象类)的类的名称。
String
否
className
处理程序类的名称。
String
是
initParams
在初始化期间传递到该处理程序类的名称/值对数组。
@InitParam 数组
否
roles
该处理程序实现的 SOAP 角色的列表。
String 数组
否
headers
该处理程序处理的 SOAP 头的列表。
此数组中的每个元素都包含一个定义该处理程序所处理的头元素的 Qname。
String 数组
否
javax.jws.soap.InitParam
描述
目标:无;此批注只能用作 @SOAPMessageHandler 批注的 initParams 特性的值。
在 @SOAPMessageHandler 批注的 initParams 特性中使用此批注可指定在初始化期间传递到处理程序类的参数(名称/值对)数组。
特性
表 B-8 javax.jws.soap.InitParam JWS 批注的特性
名称
描述
数据类型
是否必需?
name
初始化参数的名称。
String
是
value
初始化参数的值。
String
是
- jdk提供webservice创建服务端代码的实例
- WebService服务端的简单实例
- webservice的服务端和客户端的创建
- 创建JavaSE的CXF webservice服务端/客
- webService服务端和客户端的创建
- 创建一个WebService服务端
- Java创建WebService服务端
- 创建webservice的简单实例
- JDK提供webService支持的案例,以及wsimport的使用
- JDK创建WebService
- JDK方式创建WebService
- cxf+spring创建webservice服务端
- 创建基于JAX-WS的WebService的服务端及客户端
- MyEclipse创建简单的webService的服务端和客户端
- 创建webService (jax-ws)的客户端和服务端
- gsoap创建webservice服务端于客户端的心得
- wsdl2java 生成 webservice服务端代码:
- JDK开发webservice客户端和服务端 demo
- 【Java中Math类常用函数总结】
- 在Caffe中测试Faster R-CNN模型
- pagerAdapter的简单介绍
- 4k裸眼3d视频传输方案小结
- Android控制界面布局的两种方式
- jdk提供webservice创建服务端代码的实例
- unity3d - 摄像机参数
- Eclipse 下以yarn方式运行Hadoop
- 洛谷 P1054 等价表达式
- Linux编码相关操作
- linux内核源码总览之五--------块设备相关
- linux下安装selenium
- 线程池的使用和分析
- Java设计模式之-享元模式