L'injection d'EJB en servlet
J'ai googlé sans chance pour essayer de comprendre pourquoi Weblogic 10.3.4 ne pas injecter de l'EJB dans annotée champ dans la servlet.
Oreille contient ejb.jar la définition de DAO EJB et web.la guerre avec TestServlet.
PluginDataDAO.java
@Stateless
public class PluginDataDAO implements IPluginDataDAO {
}
IPluginDataDAO.java
@Local
public interface IPluginDataDAO {
}
TestServlet.java
public class TestServlet extends HttpServlet {
@EJB(mappedName = "PluginDataDAO")
private IPluginDataDAO pluginDataDAO;
}
web.xml
<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>
Servlet est à l'intérieur de web.la guerre, EJB dans le ejb.jar. J'ai essayé l'annotation avec/sans mappé attribut de nom, mais sans succès. Quand j'ai essayé de mettre à niveau web.xml à 3.0, le déploiement a échoué 3.0 est pas énumérés. Quel est le problème? Pourquoi est-pluginDataDAO toujours null? Merci.
Pourquoi êtes-vous à l'aide d'un produit spécifique nom? Je parie qu'un simple
Non, il n'a pas. C'est la première option que j'ai testé.
@EJB private IPluginDataDAO pluginDataDAO;
fonctionne.Non, il n'a pas. C'est la première option que j'ai testé.
OriginalL'auteur Leos Literak | 2013-08-19
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème et résolu avec
@ManagedBean
:OriginalL'auteur user3122855
Combinaison suivante fonctionne:
Servlet
web.xml
Je pense que l'ajout de références à web.xml n'est pas nécessaire .. Quelles sont les règles, quand les ajouter?
J'ai ajouté ces lignes à mon
web.xml
et tout est OK maintenant. Mais pourquoi il convient d'ajouter à ces lignes?OriginalL'auteur Leos Literak
Comme pour la Servlet 3 question; WebLogic 10.3.x est un Java EE 5, la mise en œuvre du sens qu'il prend uniquement en charge les Servlet 2.5.
L'exemple devrait fonctionner, cependant. Peut-être essayer un tout nouveau projet que les Servlet, EJB.
Aussi essayer le même code avec les dernières WebLogic 12.1.2. Il peut être téléchargé gratuitement à l'Oracle site.
Vous pouvez utiliser une version plus récente juste pour la santé mentale des tests. De cette manière vous avez certains une plus grande certitude que votre code est correct. Si cela fonctionne sur 12.1.2 et pas sur 10.3.4, il y a peut être un bug dans 10.3.4. De plus, s'il ne fonctionne pas sur 12.1.2 il y a probablement un autre problème dans votre code que vous ne présentez pas de nous.
OriginalL'auteur Mike Braun
Je pense qu'il y a une très bonne réponse dans ce lien...L'injection d'un EJB stateless en Servlet...
ce mec Balus est en train de dire que vous essayez d'utiliser DI dans le constructeur qui n'est pas correcte...plus tôt vous pouvez définir c'est dans init() ....juste copié la réponse en espérant que quelqu'un d'autre pourrait trouver utile
OriginalL'auteur user2770401