Question

j'ai maintenant

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>

Y at-il quelque chose qui me manque dans une application qui travaille à l'oreille et quel est le but de ces fichiers de configuration? Comment accéder aux services de mon ejb à partir du servlet?

Était-ce utile?

La solution

Vous aurez besoin d'un descripteur de déploiement d'EJB dans test.jar/META-INF/ejb-jar.xml et le descripteur de déploiement d'EAR doit aller à your.ear/META-INF/application.xml ( PAS dans le fichier jar de l'EJB!).

Le fichier ejb-jar.xml contiendra quelque chose comme le fragment XML suivant pour vos 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>

J'ai moi-même travaillé avec EJB3, où les choses sont un peu différentes et où vous n'avez plus d'interface home. Alors, prenez mon exemple avec un grain de sel.

Dans le fichier web.xml, vous devez avoir une référence correspondante à l'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>

Le <ejb-link/> pointe sur le <ejb-name/> correspondant de votre EJB, si votre référence se trouve dans le même fichier JAR que votre EJB. Sinon, vous devrez prévoir le nom du fichier JAR tel que <ejb-link>test.jar#MyCoolEJB</ejb-link>.

Ensuite, dans votre servlet, vous pouvez effectuer une recherche JNDI pour & "; java: comp / env / TheJNDINameOfYourEJB &"; pour accéder à l'interface d'accueil de votre EJB. J'espère que cela vous a donné quelques pistes pour approfondir votre connaissance.

BTW: Si EJB 2.x n’est pas une exigence fixe, jetez un coup d’œil à EJB 3.x. Beaucoup de choses sont devenues plus faciles à utiliser dans cette version!

Autres conseils

Votre EJB ne semble pas bien emballé: il devrait être dans son propre module EJB et je ne peux pas voir le descripteur de déploiement EJB (un fichier ejb-jar.xml). Consultez les applications de packaging et Structure de répertoire dans un fichier JAR de module EJB

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top