2009-09-16 49 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