中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> Bea专区 > BEA Workshop
BEA实现了新的Web服务标准
作者:Robert Baccus 时间:2006-08-04 11:42 出处:bea.com.cn 责编:月夜寒箫
              摘要:BEA实现了新的Web服务标准

借助于新产品WebLogic Workshop,BEA Systems希望将更多的开发者,特别是Microsoft Visual Basic开发者揽入到Java Web服务的怀抱。WebLogic Workshop建立在一个新的文件格式标准即Java Web Services (JWS)之上。JWS能让开发者把注意力集中在应用逻辑上,而不是单调乏味的J2EE和Web服务管道(plumbing)上。本文将介绍JWS文件格式以及围绕该格式而产生的标准创新。

 

JWS标准

JWS文件格式标准创新是在JSR 181"Web Services Metadata for the Java Platform"中提出的,目前Java Community Process正在研究。这项标准建立在JSR 175"A Metadata Facility for the Java Programming Language"的基础上,JSR 175为在Java代码中添加元数据提供了一个通用的机制。该标准为一种元语言的开发提供了指导方针,这种元语言利用那些可被开发工具用来表示它们应该以一种特殊方法处理的属性注释了Java类、接口、域和方法。WebLogic Workshop以JWS文件格式中的JWS标签这一特殊格式来实现Java语言元数据标准。

JWS标准的目标是通过利用简单Java语言元数据标签来提供一个易学并且易用的编程接口,这种标签提供了创建健壮,可维护并能共同使用的Web服务所需的功能。

JWS标签通过实现标准的J2EE组件,描述了Web服务开发者需要完成的共同任务。它还解决了部署Web服务所必需完成的任务,这样开发者就不用学习那些复杂的配置说明文件(deployment descriptor)或者API了。例如,如果想编写一个不用JWS文件格式和标签就能访问数据库的Web服务,那么必须作如下几件事:得到JDBC连接,处理事务和异常,然后提交一个SQL语句。接着,要想部署Web服务,还必须在XML配置文件中为Web服务服务器提供必需的配置说明文件。利用WebLogic Workshop提供的JWS标签,可以创建一个包含SQL语句的注释的接口文件(WebLogic Workshop术语中?quot;控件"),其中SQL语句位于方法声明的前面。

/**
* @jws:sql statement="INSERT INTO PLAYERS (NAME, NUMBER) VALUES ({playerName},{number})"
* @throws java.sql.SQLException
*/
void insertPlayer(String playerName, int number) throws SQLException;


为了使用JWS文件中的这个控件,必须像访问其他对象一样来访问它,于是有如下代码:

/**
* @jws:operation
*/
public void start()
{
try
{
luckyNumberDBControl.insertPlayer("Fred", 5);
}
catch (SQLException ex)
{
System.out.println("LuckyNumberDB.start: " + ex.getMessage());
}
}

 

要想部署WebLogic Workshop中的JWS文件,运行Web服务就行了,它会自动编译并部署源JWS文件。这种"编写再运行(write and run)"的模型和JSP页面类似,后者是由容器(container)来完成Web服务的自动编译和部署的。这个工具提供了数据库连接以及与EJB相关的代码,配置了配置说明文件,并且还支持利用SOAP 1.1协议和客户端通信。如果有人想作为客户端调用Web服务,该工具还能自动为Web服务提供了一个WSDL-1.1格式的文件,或者一个包含代理源代码的Java文件。

标签
JSR 181这种功能强大并且易于使用的技术一旦成为官方标准,将允许开发者利用不同的平台和工具来创建基于标准的Web服务。JWS规范的主要目的在于利用核心Web服务标准(SOAP,WSDL和UDDI)来提供一个易于使用的开发环境。它并不打算扩展或者改变任何其他的标准。JWS标准的创新之处在于具体的JWS注释和基于这些其他标准的文件格式。

让我们看一些通常被称为标签的JWS注释的例子吧。在BEA的实现中,标签一定得位于JavaDoc注释块中,但顺序就无所谓了。顺便说一句,WebLogic Workshop IDE提供了一个图形设计窗口,它能在您插入或者设置JWS文件中一个控件的属性,以及在您通过该设计窗口添加或编辑这些方法时自动添加JWS标签。它还能在您删除Web服务中的控件或方法时,删除相关的标签。

让我们看一下两种最常见的基本JWS标签。@jws:操作标签描述了一个可以被其他Web服务调用的外部服务方法。如果想把某个方法作为Web服务,只需将@jws:操作标签放到恰好位于方法声明前面的JavaDoc注释中就行了,其余的事由这个工具来解决。@jws:控件标签定义了当前正在编写的JWS文件的外部服务。它可能是从数据库到常规EJB中的任何东西,或者只是你手头中的另一个JWS文件。

有了一些基本的控件我们就可以为别人提供Web服务了,但我们还需要关注一下在Internet上与别人通信时出现的一些问题。第一个问题是跨平台的互用性。通过利用SOAP和WSDL标准在各个企业和平台间共享信息,可以解决这个问题。第二个问题是松散耦合集成(loosely-coupled integration),它允许应用在您更改实现或者某些情况下更改接口时不打断客户端。第三个问题对于商业应用很重要,那就是可靠性。JWS标准给予规范的实施者以灵活性,以解决这个问题。WebLogic Workshop为如何利用该标准来解决松散耦合集成和可靠性问题提供了一个很好的例证。

Web服务接口
提供松散耦合集成的方法之一是提供一个能被其他开发者用来实现您的Web服务的接口或者公共合同(public contract)。这个合同规定了您的Web服务所期望的以XML消息形式表示的数据对象。只用WSDL是不能提供完整的松散耦合集成的,因为该WSDL可能是由您的工具创建的并会随着时间的流逝而变化。所需要的是XML公共合同或者WSDL,以及它是如何与您Web服务中的Java代码和对象联系起来的这两者之间的一个映射表。WebLogic Workshop使用XML Map来实现公共合同或者被实现接口与代码间的松散耦合集成。下面就是一个XML Map的例子。

public static class ReportResult implements java.io.Serializable
{
public String bank;
public String tax;
}

/**
* @jws:parameter-xml
* xml-map::
*
* {resultMsg.bank}
* {resultMsg.tax}
*
*::
*/
void onReportDone(ReportResult resultMsg);

这个例子首先描述了传入XML文档的外观,然后将XML文档的数据部分映射到对象。该对象需要被定义,或者对于您的Web服务来说可访问。在这种情况下,ReportResult类被定义为一个内部类,只有成员变量bank和tax被作为公共字符串。利用这种方法,可以将您的方法扩展,以便能够使用任何传入和传出的XML消息,这些消息与您的Java代码以及将来的任何变化无关。只要您的客户端和您都坚持该XML合同,那么您们两者都可以随时更改您的实现。

除了松散耦合开发,其他的问题还有可靠性。其中最常见的相关问题是不同的应用或者系统间不可预测的等待时间。例如,假设您在编写一个访问病历并报告病人对于药物过敏情况的Web服务,那么它将调用医院的档案系统来查找特定病人的药物过敏情况。您可能不知道的是他们的档案都是纸写的,所以需要专人来接受您的请求并手工处理,这样就要费些时日了。在此期间您的Web服务都发生了什么?它将一直等好几天,白白浪费了宝贵的CPU时间和资源。
WebLogic Workshop允许开发者利用使用了JMS队列的缓冲消息来与其他Web服务异步通信。在一个服务方法上使用消息缓冲标签--@jws:message-buffer enable="true"--可以将它从一个同步方法转变成一个异步方法。这样就不需要为异步消息创建"听众"了。消息缓冲把来自客户端Web服务的传入消息存储在本地服务器上,然后再立即给这些消息返回一个无效的结果,省得它们在您的Web服务上等待处理消息。当在一个回叫(callback)或者传出消息上使用消息缓冲时,您的本地服务可以自由地返回,所以不需要等待客户端来处理您的消息。

消息缓冲所不能解决的一个问题是管理两个相关Web服务间多个消息的这一更复杂的任务。关于双方共同感兴趣的话题或者上下文的消息的双向交流可以比作会话。WebLogic Workshop使用这种"Web服务会话"模型来更好地描述和处理共享同一上下文的Web服务之间的多个消息。JWS标准为实现这个具有非常简单的标签的复杂比喻,提供了灵活性。

为了启动和Web服务的会话,需要在将启动该会话的方法中添加@jws:conversation phase="start"标签。要继续会话,只需将phase(阶段)改为continue即可。要结束会话,将phase置为finish。所有处理这三个阶段的方法现在都可以使用成员变量,并且访问JWS对象的状态。回叫被用来为会话提供双向特性。所谓回叫是指Web服务提供的由客户端实现的接口。当服务需要向客户端异步返回信息时,回叫会提供这个功能。默认情况下,回叫使用continue阶段,当然也允许使用finish阶段,但绝不允许在会话中出现start阶段。使用带有回叫的会话为Web服务间的通信提供了一个可靠的框架,而这些Web服务本身可能是可靠的也可能是不可靠的。

结论
简言之,JWS标准利用现有的标准和技术为各个级别的开发者,从初级应用开发者到J2EE专家,提供了一个快速简单的框架。BEA走在了前面,它首先实现了该标准。但是借助于其他公司和J2EE专家的帮助,在不远的将来别人也有可能实现该标准。这对于那些公司开发人员(corporate developer)来说是个好消息,因为他们可以跨平台创建Web服务。即使是最有经验的J2EE开发者也能从JWS的易用性中受益,为跨行业的应用开发出更快更可靠的Web服务。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有