Apache Maven模块上的Java EJB依赖项注入失败
我正试图将一个bean注入到我的程序主类中。我在Apache Maven下有两个模块:Apache Maven模块上的Java EJB依赖项注入失败,java,dependency-injection,ejb,Java,Dependency Injection,Ejb,我正试图将一个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/
- 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>
我将该类注入到同一个模块中:
@Startup
@Singleton
public class Runner {
@EJB
private JDBCProcessor jdbcProcessor; // this is injected at runtime
}
JDBCProcessor是在运行时注入的,我可以使用JDBCProcessor的方法。当我将module2bean注入到Runner类中时,问题就出现了。它找不到我的班级。同样,它有@Stateless和@Local。即使我尝试使用@Remote,它仍然找不到它。我明白了
javax.NamingNotFoundException
唯一的问题是注入不同模块中的bean。如何解决这个问题?您是否记得在另一个模块的src/main/resources/META-INF中添加一个beans.xml --更新-- 它实际上不需要包含任何bean。应选择一个空的:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
否。此文件是否应为空?我的答案中的格式有点不确定,但这就是您所需要的。这将通知容器模块包含bean。我是否应该将这个beans.xml添加到module2?我是否应该将它添加到src/main/resources中,ApacheMaven会将它添加到META-INF中?您说过这是一个Maven项目。如果将META-INF文件夹放入src/main/resources,maven将为您将其构建到jar中。是的,它应该放在提供bean的项目中。如果有帮助,下面是另一个相关的答案:
javax.NamingNotFoundException
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>