WebSphere 바인딩을 사용하여 EJB 로컬 참조 JNDI 이름 정의

EJB용 JBoss 특정 배치 디스크립터인 jboss.xml에는 ejb-jar.xml에 정의된 EJB 로컬 참조의 JNDI 이름이 포함될 수 있습니다. 이 참조는 EJB 로컬 참조를 JNDI 이름에 맵핑합니다. 이 참조가 WebSphere Application Server에서 올바르게 작동하려면 WebSphere Application Server 바인딩 파일로 정보를 이동해야 합니다.

관련된 빠른 수정사항이 아직까지 적용되지 않는 경우 소스 스캐너의 이 규칙은 jboss.xml 파일에서 찾은 EJB 로컬 참조를 플래그 지정합니다. 빠른 수정사항이 적용되고 나면 JBoss XML이 마이그레이션되었다고 표시하는 주석과 함께 JBoss XML이 표시됩니다. 이것은 빠른 수정사항을 실행할지 여부를 판별하는데 사용되며, 마이그레이션 종료 시 XML 파일이 얼마나 마이그레이션되었는지 표시하도록 사용할 수 있습니다.

빠른 수정사항이 적용되면, JNDI 이름이 jboss.xml 파일에서 WebSphere EJB 바인딩 파일로 복사됩니다. 예를 들어, 다음 예제는 MyBean 참조를 정의하는 MyBean2를 표시합니다. 먼저 <ejb-local-ref>ejb-jar.xml 파일에 정의되어 있습니다.

<ejb-jar>
<enterprise-beans>
<session>
<display-name>MyBean</display-name>
<ejb-name>MyBean</ejb-name>
<home>com.ibm.ejb.MyBeanHome</home>
<remote>com.ibm.ejb.MyBean</remote>
<ejb-class>com.ibm.ejb.MyBeanBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<jndi-name>ejb.MyBean</ejb-name>
...
</session>
<session>
<display-name>MyBean2</display-name>
<ejb-name>MyBean2</ejb-name>
<home>com.ibm.ejb.MyBean2Home</home>
<remote>com.ibm.ejb.MyBean2</remote>
<ejb-class>com.ibm.ejb.MyBean2Bean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<description></description>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.ibm.ejb.MyBeanHome</local-home>
<local>com.ibm.ejb.MyBean</local>
</ejb-local-ref>
<jndi-name>ejb.MyBean2</ejb-name>
...
</session>
<enterprise-beans>
<ejb-jar>

그리고, 대응되는 <ejb-local-ref> JNDI 이름은 jboss.xml 파일에 정의되어 있습니다.


<jboss>
<enterprise-beans>
<session>
<ejb-name>MyBean</ejb-name>
<jndi-name>ejb.MyBean</jndi-name>
</session>
<session>
<ejb-name>MyBean2</ejb-name>
<jndi-name>ejb.MyBean2</jndi-name>
<ejb-local-ref>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<local-jndi-name>ejb.MyBean</jndi-name>
</ejb-local-ref>
</session>
</enterprise-beans>
</jboss>

빠른 수정사항은 ejb.MyBean JNDI 이름을 바인딩 파일에 추가하고 MyBean2ejb/MyBean 로컬 참조와 연관시킵니다. 바인딩 파일이 없는 경우, 한 개의 파일이 작성됩니다.

Java 코드에서는 이름 지정 컨텍스트를 다음 예제에서처럼 참조할 수 있습니다.

javax.naming.Context ctx = new javax.naming.InitialContext();
Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean");