2014-12-23 81 views
0

我有一個JBoss EAP 6.1實例,其中部署了2個EJB應用程序。 服務器啓動時沒有錯誤!EJB查找起作用,但方法調用不起作用

現在我創建了一個javaSE應用程序來調用這些EJB。

而現在的問題是...

如果我讓EJB的查找從applicationA/EJBBean!br.com.sample.EJBRemote它工作正常,我可以調用任何方法形成的。

但是,我從applicationB/EJBBean!br.com.sample.EJBRemote查找EJB它工作正常。但是,當我調用一個方法時,javaSE應用程序停止。我沒有錯誤,沒有輸出。 我在方法實現的第一行放置了一個斷點,我看到它沒有執行。

我查找代碼如下:

public static <T> T getEJB(final String moduleName, final String beanName, final Class<T> viewClass) throws NamingException { 
    final String lookupName = aplicationName + "/" + beanName + "!" + viewClass.getName(); 
    return (T) ic.lookup(lookupName); 
} 

我稱之爲從主要方法:

final MyRemote beanA = EJBUtils.getEJB("appA", "MyBean", MyRemote.class); 
final MyRemote beanB = EJBUtils.getEJB("appB", "MyBean", MyRemote.class); 

他們都工作得很好

但是當我做:

beanA.methodA(); // This works and prints "methodA" onto console. 
beanB.methodA(); // This doesn't work. And dont print any thing onto console. 
System.out.println("...") // This line doesn't execute 
+0

嗨。我檢查了你的情況,兩種方法在我的機器上調用都很好。你可以發佈客戶端的代碼以及你正在使用的InitialContext參數嗎?你是否將appA作爲appA.jar和appB包裝爲appB.jar(包括兩個ejb jar)? – zbig

回答

-1

Loo ks像內存問題。轉到JVM安裝文件夾並查找堆轉儲。你一定會得到一些線索。

+0

但我沒有得到任何OutOfMemoryError .... – brbrbr

+0

即使未開發應用程序A,我得到同樣的錯誤應用程序B ... – brbrbr

+0

這說明問題只在applicationB和ApplicationA沒有關係。幾個猜測:1)檢查你的JVM參數2)爲applicationB提到的主類應該在Jar中可用3)清理並重新部署所有東西 –

0

您試圖從兩個不同的部署中查找相同的bean。我從來沒有見過這真的。你應該在BeanARemote,BeanA jar等中擁有BeanA。BeanB作爲BeanBRemote,BeanB jar等。我想如果你把所有東西都包裝在catch塊中,你會看到當你在BeanB上調用一個方法時引發的exceptino 。直到你嘗試使用它時,查找並不總是拋出異常。