微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

说说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.jwsJavax.jws.soapBEA公司提出的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、abstract2.       必须有公共认Constructor3.       必须没有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,outer2.  必须包含@WebService3.  可以直接或间接继承java.rmi.Remote,但不必须4.  接口中所有方法包含从父接口继承的方法都被暴露成WebMethod5.  接口可以包含其他JSR-181注释以定制Java到WSDL的映射6.  @WebService中不能设置portName,serviceName,endpointInterface的值 WS 方法必须满足的条件1.       方法必须是public2.       方法的参数,返回值,异常必须符合JAX-WS2.0 3.6中定义的要求3.       方法可以抛出remoteexception异常,不是必须 @SOAPBinding使用1.       使Web Service使用SOAP协议2.       可以使用在TYPE和METHOD上,作用于METHOD上其属性style必须是DOCUMENT,若是RPC则会报错3.       parameterStyle=BARE/WRAPPED4.       style=DOCUMENT/RPC5.       use=ENCODED/LIteraL WebService 类Mapping1. @WebService.endpointInterface  WSDL:portType2. @WebService.targetNamespace   WSDL:definations  targetNamespace3. @WebService.serviceName         WSDL:service4. wsdl:service 必须包含wsdl:port5. wsdl:port必须和wsdl:portType 相同,但可能有不同的绑定6. @WebService.portName     wsdl:port7. wsdl:binding 没有对应的注释8. @WebMethod.operationName          WSDL:operation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐