이 질문을 전에 보았습니다. 그러나 여러 가지 해결책을 제안했지만 아무 소용이 없었습니다.WebSphere 6.1에서 원격 EJB 조회 문제가 발생했습니다.
본질적으로 서로 통신해야하는 두 개의 EJB 엔터프라이즈 응용 프로그램이 있습니다. 첫 번째는 웹 응용 프로그램이고 두 번째는 검색 서버입니다. 동일한 물리적 상자에 있지만 동일한 노드, 셀 또는 JVM이 아닌 다른 개발 서버에 있습니다.
나는 IIOP를 통해 JNDI 조회를하고있어, 다음과 같이 내가 사용하고있는 URL은 다음과 같습니다
IIOP : //의 SearchServer : 내 호스트에서 2819
, 나는이의 SearchServer에 설정 한 정보 파일 127.0.0.1. 내 검색 서버의 포트도이 호스트 이름에 바인딩됩니다.
그러나 웹 응용 프로그램 (Spring btw를 사용하는)이 검색 EJB를 검색하려고 시도하면 다음 오류로 인해 실패합니다. 이것은 나를 괴롭히는 것입니다. 서버 사이의 이런 종류의 통신은 분명히 작동하기 쉽습니다. 포트를 확인했는데 정확합니다.
예외는 초기 컨텍스트가 H00723Node03Cell/nodes/H00723Node03/servers/server1, 이름 : ejb/com/hmv/dataaccess/ejb/hmvsearch/HMVSearchHome이라는 것을 알 수 있습니다. 이것은 검색 서버가 아닌 웹 응용 프로그램 서버입니다. 이 올바른지? Spring이 올바른 컨텍스트를 사용하도록 어떻게 할 수 있습니까?
[08/06/10 17:14:28:655 BST] 00000028 SystemErr R org.springframework.remoting.RemoteLookupFailureException: Failed to locate remote EJB [ejb/com/hmv/dataaccess/ejb/hmvsearch/HMVSearchHome]; nested exception is javax.naming.NameNotFoundException: Context: H00723Node03Cell/nodes/H00723Node03/servers/server1, name: ejb/com/hmv/dataaccess/ejb/hmvsearch/HMVSearchHome: First component in name hmvsearch/HMVSearchHome not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:101)
at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invoke(AbstractRemoteSlsbInvokerInterceptor.java:140)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy7.doSearchByProductKeywordsForKiosk(Unknown Source)
at com.hmv.web.usecases.search.SearchUC.execute(SearchUC.java:128)
at com.hmv.web.actions.search.SearchAction.executeAction(SearchAction.java:129)
at com.hmv.web.actions.search.KioskSearchAction.executeAction(KioskSearchAction.java:37)
at com.hmv.web.actions.HMVAbstractAction.execute(HMVAbstractAction.java:123)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at com.hmv.web.controller.HMVActionServlet.process(HMVActionServlet.java:149)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1282)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1239)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:136)
at com.hmv.web.support.SessionFilter.doFilter(SessionFilter.java:137)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:142)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:121)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:82)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:670)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2933)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:221)
at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:210)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1912)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:472)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:411)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1462)
Caused by: javax.naming.NameNotFoundException: Context: H00723Node03Cell/nodes/H00723Node03/servers/server1, name: ejb/com/hmv/dataaccess/ejb/hmvsearch/HMVSearchHome: First component in name hmvsearch/HMVSearchHome not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
at com.ibm.ws.naming.jndicos.CNContextImpl.processNotFoundException(CNContextImpl.java:4392)
at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1752)
at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1707)
at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1412)
at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1290)
at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:145)
at javax.naming.InitialContext.lookup(InitialContext.java:361)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:132)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:88)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:130)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:155)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)
at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.lookup(AbstractRemoteSlsbInvokerInterceptor.java:98)
at org.springframework.ejb.access.AbstractSlsbInvokerInterceptor.getHome(AbstractSlsbInvokerInterceptor.java:143)
at org.springframework.ejb.access.AbstractSlsbInvokerInterceptor.create(AbstractSlsbInvokerInterceptor.java:172)
at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.newSessionBeanInstance(AbstractRemoteSlsbInvokerInterceptor.java:226)
at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.getSessionBeanInstance(SimpleRemoteSlsbInvokerInterceptor.java:141)
at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:97)
... 36 more
도움을 주셔서 감사합니다.
마크
P. 다음은 ejb 용 SpringApplicationContext 항목입니다.
<bean id="hmvSearch"
class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
<property name="jndiName" value="ejb/com/hmv/dataaccess/ejb/hmvsearch/HMVSearchHome" />
<property name="lookupHomeOnStartup" value="false" />
<property name="cacheHome" value="false" />
<property name="refreshHomeOnConnectFailure" value="true" />
<property name="businessInterface" value="com.hmv.dataaccess.ejb.hmvsearch.HMVSearch" />
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialContextFactory</prop>
<prop key="com.ibm.websphere.naming.jndicache.cacheobject">none</prop>
<prop key="java.naming.provider.url">iiop://localhost:2819</prop>
</props>
</property>
</bean>
jndiname과 provider.url을 포함하여 Spring 구성을 게시 할 수 있습니까? – JoseK
안녕하세요 josek, 위의 SpringApplicationContext 항목을 첨부했습니다. –