[英]EJB Dependency Injection works with EAR but not JAR
/// EJB1
package com.xxx.layer1;
@Remote
public interface EJB1Remote {
}
@Stateless (mappedNamed="com.xxx.EJB1")
public class EJB1 implements EJB1Remote {
}
/// EJB2
package com.xxx.layer2;
import com.xxx.layer1;
@Remote
public interface EJB2Remote {
}
@Stateless (mappedNamed="com.xxx.EJB2")
public class EJB2 implements EJB2Remote {
@EJB(mappedNamed="com.xxx.EJB1")
EJB1Remote ejb1;
}
EJB2還使用一些可選包(在其清單中聲明)
WebLogic應用程序服務器(10.3.3)
將兩個EJB打包到兩個單獨的JAR文件中
如果將兩個JAR文件打包到EAR文件中並進行部署,則依賴項注入將起作用。 但是,如果我分別部署它們,即使先部署EJB1並在Weblogic中驗證了全局JNDI名稱( com.xxx.EJB1#com.xxx.layer1.EJB1Remote ),EJB2的部署也會失敗,並出現ClassNotFoundException:com.xxx.layer1。 EJB1遠程
在這種情況下,每個單獨的JAR文件都是WebLogic中自己的一個應用程序,並且每個應用程序都有自己的類加載器。 因此,當分別部署JAR文件(不捆綁在EAR文件中)時,它們的類加載器看不到其他內部的類。
在這種情況下,我將EJB2的接口分離到另一個JAR文件中,並將其部署為可選包,並將其引用添加到其他JAR文件的清單中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.