4

我目前正在开发一个在 IBM Websphere Application Server 7 (Java EE 5) 上运行的小型 EJB 应用程序。该应用程序主要由一个 MDB 组成,用于侦听传入的 MQ 消息,这些消息被转换并存储在 DB 中。目前我正在使用很多单例/工厂来共享配置、映射、数据源查找等。但这实际上导致了一些非常难以测试的代码。解决方案可能是使用(简单)DI 框架,如 guice/spring 来注入不同的实例。问题是:在哪里放置初始化/设置代码?应用程序的主要入口点在哪里?如何将实例注入 MDB?

4

2 回答 2

2

可能值得考虑放弃使用 Guice,并尝试使用 Java EE 5 中已有的注入机制。

关于寻找合适的“启动点”,不幸的是,EJB 规范没有定义让 bean 在启动时运行的方式。但是,EE 规范的 web 配置文件确实有一个——您可以将 WAR 添加到您的应用程序,并设置一个 servlet 侦听器组件:

http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html

您可以将其设置为在容器 (WebSphere) 加载和启动应用程序时启动。不过要注意类加载器问题。

于 2011-09-06T08:44:11.803 回答
1

使用 Spring,您可以通过 EJB3 拦截器来实现,请参阅http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ejb.html#ejb-implementation-ejb3

有关警告的有用信息在 javadoc 中,请务必阅读:http ://static.springsource.org/spring/docs/3.0.x/api/org/springframework/ejb/interceptor/SpringBeanAutowiringInterceptor.html

于 2011-07-13T22:54:17.540 回答