2012-12-07 3 views
0

JNDI를 사용하여 JBoss (5.0)에 객체 (EJB가 필요한 경우)가 어떻게 연결되는지 궁금합니다.JNDI를 사용하는 JBoss에 대한 Bean의 플러그인

내 봄 applicationContext.xml에서 빈 정의를 다음과 같은 한 : 나는 보스를 실행하려고하면

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager" /> 

<context:annotation-config/> 

<bean id="myServiceFacade" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="MyServiceFacadeBean/remote"/> 
    <property name="cache" value="true"/> 
    <property name="lookupOnStartup" value="true"/> 
    <property name="jndiEnvironment"> 
     <props> 
      <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory 
      </prop> 
      <prop key="java.naming.provider.url">localhost:1099</prop> 
      <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces 
      </prop> 
     </props> 
    </property> 
    <property name="proxyInterface" value="my.company.service.facade.MyServiceFacade"/> 
</bean> 

내가 얻을 :

Caused by: javax.naming.NameNotFoundException: MyServiceFacadeBean/remote 
at org.jboss.ha.jndi.HAJNDI.lookupRemotely(HAJNDI.java:264) 
at org.jboss.ha.jndi.HAJNDI.lookup(HAJNDI.java:205) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.jboss.ha.framework.interfaces.HARMIClient.invoke(HARMIClient.java:318) 
at $Proxy165.lookup(Unknown Source) 

어쩌면 몇 가지 추가 단계는 등록을 위해해야한다 JBoss/JNDI가있는 객체?

참고로 ejb 특정 파일을 JBoss (jboss.xml, ejb-jar.xml)에 넣으려고했으나 도움이되지 않습니다.

답변

0

어떻게 데이터 소스에서 원격 루프를합니까? 하지만 MyServiceFacadeBean에서 가져올 수 없다고 확신합니다.

applicationContext.xml에서

:

<property name="jndiName" value="remote"/> 

최대 loooping 동안,

Context ctx = new InitialContext(); 
DataSource ds = (DataSource)ctx.lookup("java:comp/env/remote"); 
DataSource ds = (DataSource)envCtx.lookup("remote"); 

또는 지정하지 않아도 당신은 중간 단계를 만들 수 :은 "자바 완/ENV를" 검색하는 모든 리소스 :

Context ctx = new InitialContext(); 
Context envCtx = (Context)ctx.lookup("java:comp/remote"); 
DataSource ds = (DataSource)envCtx.lookup("remote"); 

희망이 있습니다.

관련 문제