扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:鲁鹏/曹洪军 来源:计算机与信息技术 2007年8月31日
关键字:
3、采用 Struts的 Web 服务
前面讲过,Struts 架构清晰地区分开了视图、控制器以及模型。模型包含所有必须的业务逻辑,从存储数据仓库中检索数据。您可以构建一个简单的 Web 服务层——称为 WSManager 层——这样的模型可以提供 Web 服务也可以订购 Web 服务。使用这种体系结构的应用程序将基于组件开发的最佳点与Internet结合在了一起,如图4所示。
其它Struts相关组件前面已讨论,下面主要讨论这种体系结构中WSManager层,因为它是此体系结构中真正新加的部分。
作为Web服务端和EJB容器之间的中间件,WSManager 接收 JAX-RPC 端点的请求。将客户端请求映射到WSManager 类中的方法调用。这些客户端请求是SOAP 信息的格式。WSManager 必须实现安全认证,转变参数,在指定请求到模型服务之前,要对这些请求进行参数预处理。请求所包含的参数形式有 Java 对象,Java原始参数,XML 文档,或者甚至是 SOAP 文档分片(例如,SOAP Element 对象)。这些类型必须要转化成内部所支持的 schema(例如,预定义的 Java 数据访问对象)。
图4:采用Web服务的Struts应用程序 |
WSManager 也可以生成响应;这个过程由方法调用返回值的简单构造所组成。WSManager 中保留这样的功能,您可以通过缓存数据从而避免重复访问模型服务层。您还可以集中管理响应聚集以及 XML 文档转换,如果您要返回给调度者的文档必须遵守与内部 schema 不同的 schema 时,这一点就显得尤其重要。
在以上模型中,Web服务的客户端通过SOAP消息与Web服务端点进行交互从而达到使用EJB组件提供的服务的目的。在Web服务端,WSManager 处理所有SOAP 请求并把它们委派到模型层(EJB层,使用Session Facade 设计模式)所暴露的业务逻辑。这样有很多好处,因为 WSManager 会:
(1)作为初始联系点来管理请求与服务。
(2)调用安全服务,包括身份验证与授权使用,从而避免任何重复的层访问。
(3)委派业务处理(采用由 Struts 应用程序所使用的模型服务)WSManager代理对EJB的方法调用。接受客户端传递的所有参数然后简单地把这个调用代理给会话外观的某个方法,把对EJB的调用过程从Web服务端点中分离出来。
(4)隐藏与EJB相关的系统异常。与API相关的系统异常,比如RemoteException,EJBException都在WSManager中被捕获然后作为一个非EJB的相关异常(比如一个自定义的业务代理异常)通过Web服务端点重新抛出给客户端。应用级的异常仍然被传递给Web服务端点,然后由Web服务端点通过SOAP消息发送给调用Web服务的客户端。
(5)缓存数据避免任何不必要的数据库访问,可以在本地缓存一个会话bean方法调用返回结果,然后在后续请求中把它们传递给Web服务端点。还可以缓存一个会话bean的引用。
(6)具有重新尝试失败事务的能力。WSManager可以实现判断事务失败原因所需的复杂错误处理代码。通过重新执行会话外观的方法来重新尝试执行事务,WSManager对Web服务端点隐藏了复杂的处理过程。
(7)快速方便地进行Web服务地发布和使用。在 WSManager 类中实现的每一个公共方法都将作为一种Web服务发布出来。换句话说,您要为这些类发布一种Web 服务描述。Web 服务描述是由服务的Web 服务描述语言(Web Services Description Language,WSDL)描述与由它所引用的任何 XML schema 所组成。应用程序可以利用在公共注册表或者企业内部中已存的Web服务。WSManager有解析必要的WSDL文件的方法并且调用相关的操作返回一个值。
4、总结
通过在Action和EJB层间加入WSManager层即在Web容器和EJB容器之间加入WSManager中间件,很好地结合了Struts和Web服务。使用本文所阐明的体系结构,我们可以快速高效地开发出这样的企业应用程序,它非常健壮,很容易维护,而且能很容易地与早期应用程序集成在一起。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者