2014-12-06 45 views
1

環境:Glassfish和javax.naming.NameNotFoundException後的應用程序重新加載

GlassFish應用服務器版4.1

禁用,不可移植,JNDI的名字:真

問題:

當我部署或重新部署我的應用程序 - 一切正常。 但經過刷新或禁用/啓用以下從獨立的客戶端連接時出現異常:在線程

異常「主要」 javax.naming.NamingException中:查找失敗的Java:全球/ SynisBackendEAR/SynisBackend/UnitronicsDriver「 javax.naming.NameNotFoundException:...

...

所致UnitronicsDriver沒有發現......

...

引起:java.lang.IllegalStateException:異常試圖注入本地EJB-REF名稱= com.protechnologia.synis.drivers.unitronics.UnitronicsDriver/configurationProvider,本地3.X接口= com.protechnologia.synis.settings.ConfigurationProvider ,EJB鏈路= NULL,查找= java的:應用程序/ SynisBackend/ConfigurationProviderXML,mappedName =,JNDI名稱=,RefType的=會話到類com.protechnologia.synis.drivers.unitronics.UnitronicsDriver:對象不是聲明的一個實例類

...

獨立的客戶端的代碼:

InitialContext ctx = new InitialContext(); 
Driver bean = (Driver) ctx.lookup("java:global/SynisBackendEAR/SynisBackend/UnitronicsDriver"); 
bean.test(); 

我想提一下,在部署或重新部署之後,一切正常。

線索:

我發現taht問題是出在以下查找taht正在Deplyment否則不工作:

@Singleton 
@Startup 
public class UnitronicsDriver implements Driver { 

    @EJB(lookup = "java:app/SynisBackend/ConfigurationProviderXML") 
    protected ConfigurationProvider conf; 

下一個線索:

用手動查找替換@EJB解決了這個問題,但爲什麼?

conf = (ConfigurationProvider) ctx.lookup("java:app/SynisBackend/ConfigurationProviderXML"); 

回答

0

最後 - 發現它!

的問題是,我想在注入東西EJB正在實施@Remote接口而不是@Local

它可能與@Remote interdaces引用傳遞引用問題有關。

相關問題