J2EE中使用Spring AOP框架和EJB组件 - 编程入门网
there will be the only one Spring bean config
setBeanFactoryLocator(ContextSingletonBeanFactoryLocator.getInstance());
}
public void onEjbCreate() throws CreateException {
tradeManager = (TradeManager) getBeanFactory().getBean(TradeManager.ID);
}
/**
* @ejb.interface-method view-type="both"
*/
public BigDecimal getPrice(String symbol) {
return tradeManager.getPrice(symbol);
}
/**
* @ejb.interface-method view-type="both"
*/
public void setPrice(String symbol, BigDecimal price) {
tradeManager.setPrice(symbol, price);
}
}
J2EE中使用Spring AOP框架和EJB组件(4)时间:2011-01-13 BEA Eugene Kuleshov现在,EJB把所有调用都委托给在onEjbCreate()方法中从Spring获得的TradeManager实例,这个方法是在AbstractEnterpriseBean中实现的,它处理所有查找和创建Spring应用程序上下文所需的工作。但是,必须在EJB部署描述符中为EJB声明BeanFactoryPath env-entry,以便将配置文件和bean声明的位置告诉Spring。上面的例子使用了XDoclet注释来生成这些信息。 此外还要注意,我们重写了setSessionContext()方法,以便告诉AbstractStatelessSessionBean跨所有EJB bean使用Sping应用程序上下文的单个实例。 现在,可以在applicationContext.xml中声明一个tradeManager bean。基本上需要创建一个上面TradeDao的新实例,把从JNDI获得的TradeLocalHome实例传递给它的构造函数。下面给出了可能的定义:
在这里,我们使用了一个匿名定义的TradeLocalHome实例,这个实例是使用Spring的JndiObjectFactoryBean从JNDI获得的,然后把它作为一个构造函数参数注入到tradeManager中。我们还使用了一个FieldRetrievingFactoryBean来避免硬编码TradeLocalHome的实际JNDI名称,而是从静态的域(在这个例子中为TradeLocalHome.JNDI_NAME)获取它。通常,使用JndiObjectFactoryBean时声明proxyInterface属性是一个不错的主意,如上面的例子所示。 还有另一种简单的方法可以访问会话bean。Spring提供一个LocalStatelessSessionProxyFactoryBean,它允许立刻获得一个会话bean而无需经过home接口。例如,下面的代码说明了如何使用通过Spring托管的另一个bean中的本地接口访问的MyComponentImpl会话bean:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |