WPS/WESB绑定:玩转EJB绑定(下)

日期: 2011-01-24 作者:王佳琳崔姝Darrell Kundel 来源:TechTarget中国 英文

  在《WPS/WESB绑定:玩转EJB绑定(上)》中,我们介绍了WebSphere Process Server V7.0的新功能:EJB export binding的基本用法以及EJB import binding的高级特性:创建基于WSDL接口的import binding以及安全和事务的配置,下面我们将继续介绍应用实例。

  应用实例

  我们继续使用EJB导出绑定选择的业务场景:贷款的审批。假设负责审批的工作人员要先获得贷款申请者的信用后再决定是否接受当前贷款人的贷款申请,而查询申请者信用的服务由EJB应用提供,也就是说SCA模块需要调用EJB服务来查询申请者信用。该EJB是符合EJB 3.0规范的无状态会话Bean:CheckCustomerCredit。它实现了远程接口CheckCustomerCreditRemote,使用的方法是:

  清单 3. EJB方法
     

以下是引用片段:
 public long checkCredit(CustomerInfo input)throws CustomerInfoInvalidException; 

  我们把 EJB拖入SCA模块 (EJBBindings) 的Assembly Editor,选择生成WSDL接口的EJB导入绑定。点击OK之后,从图 13 可以看到模块结构图的变化。

图 13. Assembly Editor

图 13. Assembly Editor

  WID自动创建WSDL接口checkCredit,如图 14 所示,它与EJB的Java接口checkCredit是对应的。

图 14. WSDL接口checkCredit

图 14. WSDL接口checkCredit

  图 15 显示WID在创建import绑定的同时,还生成WSDL接口要用的WSDL、XSD文件,以及与XSD对应的Java类。

图 15. WID为WSDL接口生成的文件和代码

图 15. WID为WSDL接口生成的文件和代码

  对于EJB导入绑定而言,最重要的属性是目标EJB的JNDI名称。只要JNDI名称填写正确,我们就可以通过EJB导入绑定调用目标EJB。

  安全

  EJB架构不鼓励开发人员用代码的方式实现安全机制,而是采用安全角色的方法,通过定义可以访问的安全角色,来限制对某个方法的访问权限。缺省情况,在EJB 3.0里面所有的方法都是 “unchecked”。也就是说缺省情况下对所有方法不用安全控制策略。如果开发人员想要指定某个方法仅能被具有某个角色的调用者执行,可用 @RolesAllowed(“roleName”) 来注解该方法。在我们的实例中,查询申请者信用的方法只能被角色为bankStaff(银行工作人员)的调用者执行:

  清单 4. 定义EJB方法的角色
    

以下是引用片段:
 @RolesAllowed(“bankStaff”) 
 public long checkCredit(CustomerInfo input)throws CustomerInfoInvalidException 

  EJB导入绑定在访问有安全设置的EJB时,要在与导入绑定连线的SCA模块上配置安全属性。如图 16 所示,与导入绑定连线的是 WSDLComponent,我们要为它配置 security identity qualifier (安全身份),这样WSDLComponent在运行时就以安全身份指定的角色运行,而 EJB绑定能把角色信息传递给EJB。本例中我们WSDLComponent配置的安全角色是bankStaff,它可以正常地调用EJB应用的方法 checkCredit。

图 16. SCA模块的安全设置

图 16. SCA模块的安全设置

  角色只是逻辑概念,最终还是要把角色影射到用户或用户组。在安装EJB和SCA应用时,我们都需要在安装后配置角色和用户的映射关系。登陆管理控制台,找到应用配置界面:

  Application > WebSphere enterprise applications > targetApplication > Security role to user/group mapping,配置细节如图 17 所示:

图 17. 配置角色和用户的映射关系

图 17. 配置角色和用户的映射关系

  事务

  事务是企业开发的重要部分。事务保证了一个单元里面的任务是完整的,要么全部执行,要么出错后完全退回到初始状态。按照EJB 3.0 的规范,EJB由容器管理事务,而且针对所有的Bean方法,应用Required Transaction属性,它的意思是如果调用这个方法的应用没有 Transaction Environment,那么这个方法会自动创建一个新的事务。EJB导入绑定可以把事务传递到目标EJB。图 18 显示,用户要在接口上配置正确的join transaction qualifier,保证它的值是 true。同时与绑定连线的SCA组件使用的接口也做同样的设置,另外还要确保模块的实现配置了transaction qualifier为Global,如图 19 所示。这两个设置保证该组件与它后面连线的组件处于全局事务中。如果目标EJB出错抛出异常,那么所有操作都退回到初始状态。

图 18. 为接口配置事务属性

图 18. 为接口配置事务属性

图 19. 为实现配置事务属性

图 19. 为实现配置事务属性

  结束语

  EJB绑定为熟悉EJB的客户提供了访问SCA服务的一种方式,使得WPS作为集成产品满足更多客户的需求。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 当业务流程遭遇软件服务

    要是驾校的教练去出演像《速度与激情》这样的动作电影,我敢打赌他们给人的印象肯定有所不同。有人说:“他们应该更快绑好安全带。”这种分离类似于当今的业务流程管理。

  • 理解并使用IMS SOAP Web服务

    让我们从Web服务的角度来审视这一话题。为了通过简单对象访问协议(SOAP)支持Web服务,IMS需要三大部分的东西。首先是Rational Developer for System z……

  • 用WebSphere DataPower SOA Appliances重写SOAPAction报头

    IBM WebSphere DataPower通常被用于将一个SOAP/HTTP后端Web服务转换或调整为不同的Web服务接口。在这些情况中,几乎都使用中间逻辑来转换SOAP消息。

  • 如何在SOAP应用程序中使用WSDL?

    在过去的几年中,出现了一些标准协议,它们提供了XML中间件的一个重要组成部分:网络化服务的要求。这些网络化服务要求是通过网络。