0
我正在嘗試將一個bean注入到我的程序的主類中。我下的Apache Maven的兩個模塊:POM文件的Java EJB依賴注入在Apache Maven模塊上失敗
- Java Parent
- Module1
- Module2
部分看起來是這樣的:
<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>
我在模塊1無狀態和本地bean :
@Stateless
@Local
public class JDBCProcessorBean implements JDBCProcessorBean {
// implemented methods
}
I inject this class在同一模塊中:
@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。這怎麼解決?
不是。這個文件應該是空白的嗎? – user3189663
我的回答中的格式有點不可靠,但這就是你所需要的。這將通知容器該模塊包含bean。 – jgitter
我應該將這個beans.xml添加到module2嗎?我應該將它添加到src/main/resources並且Apache Maven將它添加到META-INF? – user3189663