Je suis sûr que ce soit une erreur de débutant ...Servlet reçoit objet vide de session à distance EJB3 Bean
J'ai donc une application Java EE 6 avec des entités, des façades (mise en œuvre de la couche de persistance) et Stateless Session Beans (EJB3) avec des interfaces distantes (donnant accès aux entités via des façades).
Cela fonctionne très bien. Via le SLSB, je peux récupérer et manipuler des entités.
Maintenant, j'essaye de le faire à partir d'une application Web (déployée sur les mêmes définitions Glassfish, entité + interface de l'application Java EE importées en tant que jar séparé). J'ai une servlet, qui reçoit une instance de la SLSB injectée. Je reçois à récupérer une entité, et les événements suivants se (je peux le voir dans les journaux):
- s'instancié la SLSB à distance, la méthode appelée
- SLSB instancie la façade, appelle la « get » méthode
- façade récupère instance de l'entité de DB, le renvoie
- SLSB renvoie l'instance de l'entité à l'appelant
- (tout est bon jusqu'à ici)
- appel servlet reçoit .. un instance vide de l'entité !!
Qu'est-ce qui ne va pas? Cela devrait fonctionner, non?
myServlet:
public class MyServlet extends HttpServlet {
@EJB
private CampaignControllerRemote campaignController; // remote SLSB
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
try {
Campaign c = campaignController.getCampaign(5L); // id of an existing campaign
out.println("Got "+ c.getSomeString()); // is null !!
} finally {
out.close();
}
}
...
}
Pls laissez-moi savoir si vous voulez voir autre code, et je vais mettre à jour le poste.
Est c l'objet null ou getsomestring retourne vide? Les journaux affichaient-ils la campagne '5L' entièrement remplie dans le SLSB avant que l'appel ne retourne au servlet? – JoseK
@josek: 'c' existe, n'est pas nul. 'c.getSomeString()' renvoie null. Lorsque la SLSB récupère la campagne '5L', 'someString' est correctement renseigné. – Hank
Je peux me tromper, mais pense que glassfish a besoin des interfaces distantes empaquetées dans la même webapp. – JoseK