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


0 0
原创粉丝点击