Je suis nouveau sur ejb. En fait, j'ai créé un ejb et j'ai ajouté la référence à une application web qui va appeler la session bean simplement. Comment appeler la session de la fève de fichier jsp?
Je pourrais aussi vous préférez utiliser le modèle MVC pour votre application. Dans ce cas, il n'est pas nécessaire d'appeler un bean de session à partir de la jsp, vous pouvez appeler à partir des servlets.
Consultez ce lien à l'appel d'un EJB à partir d'une servlet. Cliquez sur
C'est très bien de dire que MVC est la préférée approche, mais il ya quelques autres choses à considérer: d'Abord, une page JSP est converti à une servlet par le conteneur, de toute façon. Donc, il n'y a rien de conceptuellement mal à accéder à un EJB dans une JSP. Deuxièmement, vous avez parfois besoin d'informations à partir d'un EJB afin de mettre en place la page. J'ai cette situation. J'ai besoin d'une liste de valeurs à partir d'un EJB pour configurer une liste déroulante. Donc merci pour l', y compris la syntaxe correcte dans votre réponse.
J'ai essayé de le faire sur Wildfly, mais sans succès à l'aide de @EJB annotation, probabily JSP n'ont pas de CDI. J'ai donc mis en œuvre sur un autre chemin (pas très clair):
Avant l' :
<%
LoginAction loginAction;
try {
Properties properties = new Properties();
properties.put("jboss.naming.client.ejb.context", true);
properties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
Context ctx=new InitialContext(properties);
loginAction = (LoginAction) ctx.lookup("java:module/LoginAction");
session.setAttribute("loginAction", loginAction); //this is to be able to use loginAction on EL Expressions!
} catch (Exception e) {
e.printStackTrace();
}
%>
Je suis en utilisant le package par défaut. Alors, comment puis-je mentionner le paquet. De plus lorsque j'ai essayé avec deux façon, j'obtiens le message d'erreur "Impossible de compiler la classe pour les JSP". Je suis à l'aide de netbeans... il n'est pas nécessaire d'utiliser la page option d'importation dans le cas où u r à l'aide du même package. d'autres choses devraient fonctionner. Sur la première étape, si l'injection de l'ejb avec @EJB et instancier avec de nouveaux Classname(). Cela n'a aucun sens parce que vous êtes l'injection et l'instanciation en même temps. Vous devez supprimer @EJB parce qu'il ne fait rien.
Que vous utilisez EJB à la couche de service et en MVC , je ne serai jamais d'avis d'appeler un bean de session à partir de votre point de vue ou jsp.vous pouvez appeler les beans de session de la méthode par injection EJB de référence à l'aide de @EJB annotation.
Simple..Remplacer Jsp du jspInit méthode et créer InitialContext de l'objet. InitialContext objet peut accéder à toutes les ressources qui ont nom JNDI attribué..
Vous pouvez mélanger et assortir pour prendre en charge plusieurs serveurs d'application, dans la meilleure façon.
Le code ci-dessous utilise l' @EJB injection pour WebSphere la Liberté et à la InitialContext pour JBoss Wildfly
<%!
@EJB
GitlabHelper gitAPI;
public void jspInit() {
if (gitAPI == null) {
try {
gitAPI = (GitlabHelper) new InitialContext().lookup("java:module/GitlabHelper");
System.out.println("<!-- initContext has been used -->");
} catch (Exception e) {
e.printStackTrace();
}
}
}
%>
Je pourrais aussi vous préférez utiliser le modèle MVC pour votre application. Dans ce cas, il n'est pas nécessaire d'appeler un bean de session à partir de la jsp, vous pouvez appeler à partir des servlets.
Consultez ce lien à l'appel d'un EJB à partir d'une servlet.
Cliquez sur
OriginalL'auteur rgksugan
J'ai essayé de le faire sur Wildfly, mais sans succès à l'aide de @EJB annotation, probabily JSP n'ont pas de CDI. J'ai donc mis en œuvre sur un autre chemin (pas très clair):
Avant l' :
Et tout le reste demeure la même!
OriginalL'auteur martins.tuga
1) la première façon de créer un objet direct
d'importation pour utilisation balise à l'importation ur de la classe
puis les méthodes d'accès en utilisant la normale jsp
2) l'autre façon est d'utiliser des actions standard
il n'est pas nécessaire d'utiliser la page option d'importation dans le cas où u r à l'aide du même package. d'autres choses devraient fonctionner.
Sur la première étape, si l'injection de l'ejb avec
@EJB
et instancier avec de nouveaux Classname(). Cela n'a aucun sens parce que vous êtes l'injection et l'instanciation en même temps. Vous devez supprimer@EJB
parce qu'il ne fait rien.OriginalL'auteur rgksugan
Que vous utilisez EJB à la couche de service et en MVC , je ne serai jamais d'avis d'appeler un bean de session à partir de votre point de vue ou jsp.vous pouvez appeler les beans de session de la méthode par injection EJB de référence à l'aide de @EJB annotation.
OriginalL'auteur Sai prateek
Simple..Remplacer Jsp du jspInit méthode et créer InitialContext de l'objet. InitialContext objet peut accéder à toutes les ressources qui ont nom JNDI attribué..
OriginalL'auteur Milan
Vous pouvez mélanger et assortir pour prendre en charge plusieurs serveurs d'application, dans la meilleure façon.
Le code ci-dessous utilise l' @EJB injection pour WebSphere la Liberté et à la InitialContext pour JBoss Wildfly
OriginalL'auteur Rene Zubcevic