2014-09-05 92 views
2

我的應用程序包含一個「服務定位器」模式的實現。 ServiceLocator是執行(JNDI)查找遠程EJB的中心組件,並且被我們的一些應用程序/組件(r6-core,Java-API等)使用。 ServiceLocator具有多種配置選項,其主要目標是實現靈活的(獨立於機器/應用程序)部署方案。另一個目標是從業務邏輯(代碼)屏蔽JNDI/EJB查找樣板。SerialContext的通信異常[myEnv = Glassfish 3.1.2.2中的異常

如果一個特定的EJB配置被稱爲只能通過撥打本地電話時,服務定位器實現首先實例化一個空的InitialContext並執行JNDI查找:

InitialContext ic = new InitialContext(); 
ic.lookup(jndiName); 

當前意想不到的行爲是我們得到了以下異常在執行此代碼時:

lookup for jndi-name 'java:global/.../ar-common-impl/ArPropertiesDaoBean' failed: 'Communication exception for SerialContext[myEnv= 
{java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, 
[email protected], 
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, 
java.naming.factory.url.pkgs=com.sun.enterprise.naming, 
com.sun.appserv.ee.iiop.endpointslist=corbaloc:iiop:[email protected]:23700} 

此例外顯示嘗試遠程呼叫!由於這些(僅限本地)EJB未配置爲遠程Bean(因此不可序列化),所以會引發異常。

問題是:即使我們沒有提供任何這些參數,endpointslist從哪裏來?

回答

0

問題已通過使用EJB注入而不是本地查找得到解決

+0

請問您是否可以提供示例,我遇到了錯誤。 – AngelAvila 2017-02-10 19:15:25