发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

关于spring + ejb进行组合的一些疑问

2005-04-15 00:43
赞助商链接

关于spring + ejb进行组合的一些疑问
最近一个项目需要将spring与EJB结合,这种行为在一些人的眼里看来是不够地道的做法,不过我目前的确是需要spring这样一种支持。先讲讲我的理解吧。
要对stateless session bean进行很好的封装,在创建这个session bena的时候就不是以往继承SessionBean,而是必须继承AbstractEnterpriseBean,并实现onCreate方法,为什么要继承这个bean呢?
通过查看源代码我们可以得知,该abstract类主要做了一件事情,就是是加载ear-jar.xml中的环境变量参数:
<env-entry>
<env-entry-name>ejb/BeanFactoryPath</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>myComponent-ejb-beans.xml</env-entry-value>
</env-entry>
这个参数是一个jndi的设置,告诉客户端的spring framework,必须加载myComponent-ejb-beans.xml这样的一个xml配置文件来生产我们所需要的bean实例。
从而我们可以得出这样一个结论:spring framework所需要的ApplicationContext配置信息是放在将要发布到应用服务器上的EJB组件描述符中的。这是不是spring所谓的侵入性呢?我不知道,希望spring高手能给我答案^_^。从这里我似乎得出了一个答案,spring 在解除业务逻辑层与表现层之间的耦合,对外尽可能封装复杂实现的时候,在渐渐的加强了spring framework与ejb之间的耦合性,比如实现spring封装的抽象类,在部署描述符中附带配置信息。我不知道这个是不是可以避免呢?
这样做还有一个不好的地方就是,如果某人要用这个EJB组件,并且中间使用spring作为控制层。就必须做一个该EJB部署描述符中指定的文件路径名,比如上面的myComponent-ejb-beans.xml,否则没法用。同时也强制部署描述符必须带有一个环境变量来指明客户端bean factory的application context配置文件路径,由此我们可以看出spring在与ejb结合的时候不仅是在充当控制层的角色,而是在强制ejb必须按照他的要求来做某些事情。这里表现出来的就是两点,一个是继承spring提供的抽象类,另一个就是在部署描述符中设置spring控制层的bean factory配置文件路径名。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com