Zugriff auf EJB

H

hescholero

Gast
Hallo zusammen,
Kann mir jemand sagen warum es funktioniert, wenn ich aus einem Servlet direkt auf eine SessionBean zugreife aber nicht wenn
ich den Umweg über ein DAO mache?

Dieser Code funktioniert nicht.
Servlet Code:
[JAVA=42]String gruss = new DAO().getHallo();
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {

out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Hallo2</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>" + gruss + "</h1>");
out.println("</body>");
out.println("</html>");

} finally {
out.close();
}
} [/code]

DAO Code
[JAVA=42]
public class DAO {

@EJB
HalloRemote halloBean;

public String getHallo() {

return halloBean.getGruss();
}
}
[/code]


Direkt aus dem Servlet funktioniert das ganze jedoch:

[JAVA=42]
public class Hallo extends HttpServlet {

@EJB
HalloRemote grussBean;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String gruss = grussBean.getGruss();
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {

out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Hallo</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet Hallo at " + gruss + "</h1>");
out.println("</body>");
out.println("</html>");

} finally {
out.close();
}
}
[/code]
Das DAO liegt doch genauso im ServletContainer wie ein Servlet. Ich ärgere mich seit zwei Tagen
weil ich bisher immer die DAO-Variante versucht habe. Ich habe es auch schon mit einem JNDI Lookup probiert aber
nichts hat geholfen. Dann kam immer die altbekannte NameNotFound Exception...
Vielen Dank schon mal
 

mvitz

Top Contributor
DAO wird nicht vom Servlet-Container verwaltet und hat damit auch keine DI Eigenschaften. Du könntest höchstens auch dein DAO als EJB deklarieren.
 

Ähnliche Java Themen


Oben