原文: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
分享到:
相关推荐
org.apache.cxf.spring.remoting.Jsr181HandlerMapping.jar
**JSR181注解式WebService详解** 在Java世界中,WebService是一种常见的跨平台、跨语言的通信方式,用于实现应用程序之间的互操作性。JSR181(JavaTM Web Services Metadata for the JavaTM Platform)是Java社区...
webservice中用到的jar,xfire-jsr181-api-1.0-M1.jar,xfire-jsr181-api-1.0-M1.jar
标题 "xfire-jsr181-api-1.0-实例化webservic" 指的是使用XFire框架结合JSR 181规范来创建和实例化Web服务的过程。XFire是一款早期的Java Web服务实现,它提供了一种简单、高性能的方式来创建和消费SOAP服务。JSR ...
xfire-jsr181-api-1.0-M1.jar xfire-jsr181-api-1.0-M1.jar
标签:apache-cfx-jsr181-jaxb-http-example-1.0.0.jar.zip,apache,cfx,jsr181,jaxb,http,example,1.0.0,jar.zip包下载,依赖包
jar包,亲测可用
### JSR 181 Web Services Metadata for the Java Platform #### 1. 引言与概述 《JSR 181 Web Services Metadata for the Java Platform》是针对Java平台的一套简化Web服务开发模型的标准规范。它旨在降低开发...
在Eclipse中创建一个基于JSR181的Web服务涉及到Java Web Service(JWS)的开发,JSR181是Java Specification Request 181,它定义了用于Java平台的Web服务元数据标准。这个标准使得在Java中创建、部署和发现Web服务...
JSR(Java Specification Requests)是Java社区进程(JCP,Java Community Process)的一部分,用于提出和定义新的Java技术规范。JSR168和JSR268是两个与Java Portal技术相关的标准,它们主要涉及如何创建和管理可...
### JSR268门户标准概述 #### 一、JSR168与JSR286背景 JSR168(Java Specification Request 168)是Java门户技术的第一个标准化规范,发布于2003年10月。这一规范定义了一种通用框架,用于构建基于门户的应用程序...
Spring Core提供了一种优雅的方式来处理参数校验,特别是通过JSR 303、JSR 349和JSR 380这些标准注解,实现了高效且易于维护的验证机制。 JSR 303最初定义了JavaBean验证的标准,而JSR 349是其修订版,主要增加了对...
本文是JSR-133规范,即JavaTM内存模型与线程规范,由JSR-133专家组开发。本规范是JSR-176(定义了JavaTM平台 Tiger(5.0)发布版的主要特性)的一部分。本规范的标准内容将合并到JavaTM语言规范、JavaTM虚拟机规范...
赠送jar包:jsr311-api-1.1.1.jar; 赠送原API文档:jsr311-api-1.1.1-javadoc.jar; 赠送源代码:jsr311-api-1.1.1-sources.jar; 赠送Maven依赖信息文件:jsr311-api-1.1.1.pom; 包含翻译后的API文档:jsr311-api...
**JSR 173 API**,全称为Java Specification Request 173,是Java社区进程(Java Community Process)发布的一个标准,旨在为Java平台引入标准化的可扩展性框架,以便处理XML流数据。该API的主要目标是为Java开发者...
Java内存模型(JMM)是Java程序并发执行时的核心规范,由JSR-133专家小组开发。JSR-133全称为JavaTM Memory Model and Thread Specification,它的目标是确保多线程环境下程序的可见性和一致性。该规范与Java平台...
JSR(Java Specification Request)168和286是定义portlet标准的两个关键版本,它们由Java Community Process(JCP)发布,旨在促进portlet在门户环境中的互操作性和可扩展性。 JSR 168是portlet规范的第一个主要...
**JSR256 API** 是Java Community Process (JCP) 定义的一个规范,全称为Java Specification Request 256。这个API专注于在Java 2 Micro Edition (J2ME) 平台上提供传感器接口,使得移动设备和嵌入式系统能够有效地...