快速业务通道

J2EE中使用Spring AOP框架和EJB组件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
PC和基于SOAP的接口)

J2EE中使用Spring AOP框架和EJB组件 - 编程入门网

图1:常见的端点类型

要在这些端点上使用Spring的AOP框架,必须把所有的业务逻辑转移到Spring托管的bean中,然后使用服务器托管的组件来委托调用,或者定义事务划分和安全上下文。虽然本文不讨论事务方面的问题,但是可以在“参考资料”部分中找到相关文章。

我将详细介绍如何重构J2EE应用程序以使用Spring功能。我们将使用XDoclet的基于JavaDoc的元数据来生成home和bean接口,以及EJB部署描述符。可以在下面的“下载”部分中找到本文中所有示例类的源代码。

J2EE中使用Spring AOP框架和EJB组件(2)

时间:2011-01-13 BEA Eugene Kuleshov

重构EJB组件以使用Spring的EJB类

想像一个简单的股票报价EJB组件,它返回当前的股票交易价格,并允许设置新的交易价格。这个例子用于说明同时使用Spring Framework与J2EE服务的各个集成方面和最佳实践,而不是要展示如何编写股票管理应用程序。按照我们的要求,TradeManager业务接口应该就是下面这个样子:  

public interface TradeManager { public static String ID = "tradeManager"; public BigDecimal getPrice(String name); public void setPrice(String name, BigDecimal price); }

在设计J2EE应用程序的过程中,通常使用远程无状态会话bean作为持久层中的外观和实体bean。下面的TradeManager1Impl说明了无状态会话bean中TradeManager接口的可能实现。注意,它使用了ServiceLocator来为本地的实体bean查找home接口。XDoclet注释用于为EJB描述符声明参数以及定义EJB组件的已公开方法。

/** * @ejb.bean *  name="org.javatx.spring.aop.TradeManager1" *  type="Stateless" *  view-type="both" *  transaction-type="Container" * * @ejb.transaction type="NotSupported" * * @ejb.home *  remote-pattern="{0}Home" *  local-pattern="{0}LocalHome" * * @ejb.interface *  remote-pattern="{0}" *  local-pattern="{0}Local" */ public class TradeManager1Impl implements SessionBean, TradeManager { private SessionContext ctx; private TradeLocalHome tradeHome; /** * @ejb.interface-method view-type="both" */  public BigDecimal getPrice(String symbol) { try { return tradeHome.findByPrimaryKey(symbol).getPrice(); } catch(ObjectNotFoundException ex) { return null; } catch(FinderException ex) { throw new EJBException("Unable to find symbol", ex); } } /** * @ejb.interface-method view-type="both" */  public void setPrice(String symbol, BigDecimal price) { try { try { tradeHome.findByPrimaryKey(symbol).setPrice(price); } catch(ObjectNotFoundException ex) { tradeHome.create(symbol, price); } } catch(CreateException ex) { throw new EJBException("Unable to create symbol", ex); } catch(FinderException ex) { throw new EJBException("Unable to find symbol", ex); } } public void ejbCreate() throws EJBException { tradeHome = ServiceLocator.getTradeLocalHome(); } public void ejbActivate() throws EJBException, RemoteException { } public void ejbPassivate() throws EJBException, RemoteException { } public void ejbRemove() throws EJBException, RemoteException { } public void setSessionContext(SessionContext ctx) throws EJBException, RemoteException { t

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号