7
votes

Injecter ejb en servlet

J'ai googlé sans chance pour essayer de comprendre pourquoi Weblogic 10.3.4 n'injecte pas EJB dans un champ annoté dans le servlet.

oreille contient ejb.jar définissant dao ejb et web.war avec testServillet. p>

plugindatadao.java em> p> xxx pré>

iplugindatadao.java em> p>

<web-app version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID">
<servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>cz.literak.blog.j2ee.TestServlet</servlet-class>
</servlet>


2 commentaires

Pourquoi utilisez-vous un nom spécifique au produit? Je parie un simple @ejb privé iplugindatadao plugindatadao; fonctionnera.


Non, ce n'est pas. C'était la première option que j'ai testée.


4 Réponses :


2
votes

Quant au numéro de servlet 3; Weblogic 10.3.x est une implémentation Java EE 5, ce qui signifie qu'il ne prend que prend en charge le servlet 2.5.

L'exemple devrait fonctionner cependant. Peut-être essayer un projet totalement nouveau avec celui de ce servlet et de l'EJB.

Essayez également le même code avec le dernier Weblogic 12.1.2. Il peut être téléchargé gratuitement sur le site Oracle.


2 commentaires

J'ai fait un nouveau projet trivial. Je ne peux pas utiliser la version plus récente car je vais utiliser ce projet pour tester la configuration existante. Mais cela ne fonctionne pas comme prévu :-( Dois-je utiliser EJB-local-ref dans web.xml?


Vous pouvez utiliser une version plus récente uniquement pour les tests de santé mentale. De cette façon, vous avez une certaine certitude que votre code est correct. Si cela fonctionne sur 12.1.2 et non sur 10.3.4, il peut y avoir un bogue dans 10.3.4. Si cela ne fonctionne pas non plus sur le 12.1.2, votre code ne nous indique probablement pas.



5
votes

suivi des travaux de combinaison suivants:

servlet em> p> xxx pré>

web.xml em> p>

...
  <ejb-local-ref>
    <ejb-ref-name>PluginDataDAO</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <local>cz.literak.blog.j2ee.dao.IPluginDataDAO</local>
  </ejb-local-ref>
...


2 commentaires

Je pense que vous devez ajouter une nouvelle question pour obtenir des réponses pour cela;)


J'ai ajouté ces lignes à mon web.xml et tout va bien maintenant. Mais pourquoi devrions-nous ajouter ces lignes?



5
votes

J'ai eu le même problème et je l'ai résolu avec @managedbean : xxx


0 commentaires

1
votes

Je pense qu'il y a une très bonne réponse dans ce lien ... injecter une EJB apatride dans servlet ...

Ce gars Balus dit que vous essayez d'utiliser di dans constructeur qui n'est pas correct ... le plus tôt que vous puissiez définir c'est à init () ... vient de copier la réponse en espérant que quelqu'un d'autre trouverait que quelqu'un d'autre trouverait utile


1 commentaires

Non, je n'ai pas utilisé des valeurs injectées dans le constructeur.