【发布时间】:2014-06-01 20:46:25
【问题描述】:
我正在尝试将 bean 注入程序的主类。我在 Apache Maven 下有两个模块:
- Java Parent
- Module1
- Module2
部分 pom 文件如下所示:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.screening</groupId>
<artifactId>screening</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Java Parent</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>Module1</module>
<module>Module2</module>
</modules>
</project>
模块1 pom:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.screening</groupId>
<artifactId>screening</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.screening</groupId>
<artifactId>module1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>ejb</packaging>
<name>Module1</name>
</project>
我在 Module1 中有一个无状态的本地 bean:
@Stateless
@Local
public class JDBCProcessorBean implements JDBCProcessorBean {
// implemented methods
}
我在同一个模块中注入这个类:
@Startup
@Singleton
public class Runner {
@EJB
private JDBCProcessor jdbcProcessor; // this is injected at runtime
}
JDBCProcessor 是在运行时注入的,我可以使用 JDBCProcessor 的方法。当我将 module2 bean 注入 Runner 类时,问题就出现了。它找不到我的课程。它再次具有@Stateless 和@Local。即使我尝试使用 @Remote 它仍然找不到它。我明白了
javax.NamingNotFoundException
唯一的问题是注入不同模块中的 bean。如何解决这个问题?
【问题讨论】:
标签: java dependency-injection ejb