문제

나는 지금 가지고있어

ear 
|----test.jar
     |-------META-INF
             |-------application.xml
     |-------test
             |-------Test.class
             |-------TestEJB.class
             |-------TestHome.class
|----test.war
     |-------WEB-INF
             |-------web.xml
     |-------test
             |-------TestServlet.class

application.xml

<application>
  <display-name>Ejb Test</display-name>
  <module>
    <ejb>test.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>test.war</web-uri>
      <context-root>/test</context-root>
    </web>
  </module>
</application>

web.xml

<web-app>
  <servlet>
    <servlet-name>Test</servlet-name>
    <servlet-class>test.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>
</web-app>

작업 귀 애플리케이션에서 누락 된 것이 있습니까? 이러한 구성 파일의 목적은 무엇입니까? 서블릿에서 EJB의 서비스에 어떻게 액세스합니까?

도움이 되었습니까?

해결책

EJB 배치 디스크립터가 필요합니다 test.jar/META-INF/ejb-jar.xml 그리고 EAR 배치 디스크립터가 가야합니다 your.ear/META-INF/application.xml (아니다 EJB 항아리 안에!).

ejb-jar.xml에는 ejbs에 대한 다음 xml 조각과 같은 것이 포함됩니다.

<enterprise-beans>
    <session>
        <ejb-name>MyCoolEJB</ejb-name>
        <local-home>test.TestHome</local-home>
        <local>test.Test</local>
        <ejb-class>test.TestEJB</ejb-class>
    </session>

    <!-- ... more <session/> or <entity/> entries ... -->
</enterprise-beans>

나는 EJB3 직접 일했는데, 여기서 상황이 조금 다르고 더 이상 홈 인터페이스가 없습니다. 그러니 소금 한 덩어리로 내 예를 들어보세요.

web.xml 내부에 EJB에 대한 해당 참조가 있어야합니다.

<ejb-local-ref>
    <ejb-ref-name>TheJNDINameOfYourEJB</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <ejb-link>MyCoolEJB</ejb-link>   <!-- the value from <ejb-name/> above -->
</ejb-local-ref>

그만큼 <ejb-link/> 해당하는 것을 가리 킵니다 <ejb-name/> 귀하의 EJB의 경우, 귀하의 참조가 EJB와 동일한 항아리에있는 경우. 그렇지 않으면 항아리의 이름을 다음과 같은 <ejb-link>test.jar#MyCoolEJB</ejb-link>.

그런 다음 서블릿에서 "Java : Comp/Eng/thejndinameofyourejb"에 대한 JNDI 조회를 수행하여 EJB의 홈 인터페이스에 액세스 할 수 있습니다. 나는 당신에게 더 깊이 파고 들기 위해 당신에게 몇 가지 포인터를 주었으면 좋겠다.

BTW : EJB 2.X가 고정 된 요구 사항이 아닌 경우 EJB 3.X를 살펴보십시오. 그 버전에서 많은 것들이 더 쉬워졌습니다!

다른 팁

EJB는 잘 포장되지 않은 것처럼 보이지 않습니다. 자체 EJB 모듈에 있어야하며 EJB 배포 디스크립터 (EJB-Jar.xml 파일)를 볼 수 없습니다. 살펴보십시오 포장 응용 프로그램 그리고 EJB 모듈 JAR 파일의 디렉토리 구조

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top