2009-09-16 82 views
0

我現在ejb 2.x耳朵還需要什麼?

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> 

有什麼事,我從工作的耳朵應用缺少的,什麼是這些目的配置文件?如何從servlet訪問我的ejb服務?

回答

1

你需要在test.jar/META-INF/ejb-jar.xml一個EJB部署描述符和EAR部署描述符必須去your.ear/META-INF/application.xml的EJB罐內!)。

的ejb-jar.xml中會包含類似下面的XML片段爲您的EJB:

<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的相應<ejb-name/>,如果你的參考是在同一個JAR爲您EJB。否則,您將不得不預先考慮JAR的名稱,如<ejb-link>test.jar#MyCoolEJB</ejb-link>

然後,在您的servlet中,您可以對「java:comp/env/TheJNDINameOfYourEJB」執行JNDI查找以訪問EJB的主界面。我希望,這給了你一些指引,讓你深入自己。

順便說一句:如果EJB 2.x不是固定的需求,那麼看看EJB 3.x.很多東西在該版本中變得更加容易使用!

+0

除了之外是否還有以及有什麼區別?我不能只在應用程序中包含EJBHome部分,並直接調用create而不使用refs和jndi? – JtR 2009-09-16 16:32:49

+0

前者用於引用EJB的遠程接口,後者用於引用本地接口。有關所有接口之間差異的解釋,請參閱http://www.jguru.com/faq/view.jsp?EID=1166568。 – janko 2009-09-17 09:04:36

+0

JNDI:在EJB 2.x中,您使用home接口的create()方法來獲取對EJB的引用。但是,您需要首先引用home接口,爲此您需要refs和JNDI。 – janko 2009-09-17 09:07:19