说说JSR181

原文:http://blog.csdn.net/evanerv0079/archive/2008/06/05/2515319.aspx

JSR181与JSR175介绍
我们先来看一段典型的使用JSR175特征的代码。

package webservices.jsr181.pojo;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(name="StringChangerPort", targetNamespace="http://wwtt.bea.com")

public class StringChanger {
@WebMethod()
public String toUpper(String upperReqString)
{
……

这个类的源代码和普通的JAVA代码没太多区别,但和普通JAVA代码不同的是这里面还包含了很多以@开头的代码,或者称为注释,也就是在Java 5中的新语法,JSR-175。JSR-175规范只是定义这种语法规则,而用这种语法来如何将这个类生成一个Web Service接口,则需要由JSR-181规范来决定。所以这些JSR-175的注释才真正决定了这个Web Service的行为和外观。

也许你会觉得这种语法比较奇怪,有些像普通java方法的语法,只是前面多了一个@。实际在JSR175规范的早期,该语法并不是像现在这样的。如果按早期写法,@WebService()会该写为:

/**
* @WebService(......)
*/
后来出于简化,成了现在的样子。如果使用Weblogic Platform 7.x或8.x产品,会在许多其专有的代码文件中看到这种格式的注释。由于撰写本文时Weblogic Platform 9还没有发布。发布后是否那些专有代码会使用基于JSR-175的语法还不得而知,但可以确定的是在Weblgic Server 9中这种语法已经被全面支持了,无论在Web Service中,还是在EJB中。

事实上JSR 181是BEA提出的用于加速Web Services开发的一种基于注释驱动的编程模式,并被批准纳入到J2EE 1.5标准。JSR181提供了一种简单的Web Service开发编程模型和标准的编译及部署方式。只需要编写JSR-175风格的注释就可以制定WSDL,消息产生属性,安全认证方式,以及特定的消息头。 

Javax.jws

Javax.jws.soap

BEA公司提出的WebService注释规范(JSR-181)

与它相关的技术:JAX-WS,JAXB,StAX,SAAJ,XML Registries,XML Digital Signature,Security in Web Tier
 注释不能避免的问题:

1.       类型匹配:因为JSR-175规范注释只能是基本类型,String,Enums,比如URL,只能是字符串,要程序员自己保证该字符串是URL格式的

2.       保证注释和代码匹配:比如@OneWay注释的方法就不能有返回值

3.       注释之间必须匹配:比如@OneWay出现的方法上必须要有@WebMethod注释出现
 WS实现类必须满足的条件

1.       实现类必须public,outer ,必须不是final、abstract

2.       必须有公共默认Constructor

3.       必须没有finalize方法

4.       在class级别必须有@WebService指出该类是WS类

5.       若类引用一个服务endpoint interface可以使用@WebService.endpointInterface,这样该类就必须实现此接口所有方法,该类除了@WebService和@HandlerChain注释之外其他所有JSR-181的注释都不能使用,而且@WebService必须不能有name属性

6.       若类中没有@WebMethod注释而且没有实现endpoint interface,则所有除开从Object类中继承的public方法都被暴露成WebMethod(除开从继承来的@WebMethod.exclude也不会被暴露)
 WS 接口必须满足的条件

1.  接口必须是public,outer

2.  必须包含@WebService

3.  可以直接或间接继承java.rmi.Remote,但不必须

4.  接口中所有方法包含从父接口继承的方法都被暴露成WebMethod

5.  接口可以包含其他JSR-181注释以定制Java到WSDL的映射

6.  @WebService中不能设置portName,serviceName,endpointInterface的值
 WS 方法必须满足的条件

1.       方法必须是public

2.       方法的参数,返回值,异常必须符合JAX-WS2.0 3.6中定义的要求

3.       方法可以抛出RemoteException异常,不是必须
 @SOAPBinding使用

1.       使Web Service使用SOAP协议

2.       可以使用在TYPE和METHOD上,作用于METHOD上其属性style必须是DOCUMENT,若是RPC则会报错

3.       parameterStyle=BARE/WRAPPED

4.       style=DOCUMENT/RPC

5.       use=ENCODED/LITERAL
 WebService 类Mapping

1. @WebService.endpointInterface  WSDL:portType

2. @WebService.targetNamespace   WSDL:definations  targetNamespace

3. @WebService.serviceName         WSDL:service

4. wsdl:service 必须包含wsdl:port

5. wsdl:port必须和wsdl:portType 相同,但可能有不同的绑定

6. @WebService.portName     wsdl:port

7. wsdl:binding 没有对应的注释

8. @WebMethod.operationName          WSDL:operation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值