2014-04-17 77 views
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。這怎麼解決?

回答

0

您是否記得在其他模塊中添加beans.xml到src/main/resources/META-INF?

--UPDATE--

它實際上並沒有包含任何豆。應該拿起一個空的:

<?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> 
+0

不是。這個文件應該是空白的嗎? – user3189663

+0

我的回答中的格式有點不可靠,但這就是你所需要的。這將通知容器該模塊包含bean。 – jgitter

+0

我應該將這個beans.xml添加到module2嗎?我應該將它添加到src/main/resources並且Apache Maven將它添加到META-INF? – user3189663