说说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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – ng-change on select选项调用多个唯一函数
- AngularJS控制器继承
- angularjs – 单元测试控制器时如何模拟ng-grid
- bootstrap - responsive layout
- unix – 如何设置STDOUT和STDERR的字体颜色
- axis2开发webservice教程
- angularjs – 如何在禁用按钮上显示ui-boostrap工具提示?
- angularjs – 什么时候喜欢ng-if和ng-show/ng-hide?
- “MyType”问题:我是否必须在Scala中使用抽象类型(或泛型)
- 使用axis调用webservice时,服务端接收到的参数为null