G
Guest
Gast
Hi
Ich versuche mich schon seid einiger Zeit mit EJB3 - vergebens. Irgendwie will das einfach nicht. Irgendwie erkennt er das EJB nicht. Wenn ich das richtig verstanden habe sollte die EJB Umgebung die Initialisierung meiner Beans übernehmen. Das sieht bei mir folgendermassen aus:
Leider funktioniert das anscheinend nicht. Er läd das Bean nicht und es wird dementsprechend eine Null PointerException geworfen. Habe die Zeile ROTmarkiert, wo
Ich aus dem Buch "EJB in Action" entnommen habe, dass eine Annotation von @EJB vollkommen ausreicht. Leider gibt das Buch nicht her, wie die Einbindung genau auszusehen hat. Naja....genau das was ich eigenltlich brauche (Muss ich doch mit JNDI arbeiten ?)
Die WebApp funktioniert einwandfrei. Also JSP läuft und das HttpServlet auch
Ich hoffe das mir einer weiterhelfen kann. Leider habe ich im Internet für mich kein passendes Beispiel gefunden. So wie es aussieht erkennt JBoss das EJB:
Auszug aus dem MBean Inspector:
Meine Applikation:
Ich habe die Datei hellworld.ear erstellt. Die Datei enthält
helloworld.war (WebApp)
helloworld.jar (EJB)
META-INF/application.xml
helloworld.jar
HelloUser
HelloUserBean
helloworld.war
HelloController
index.jsp
web.xml
Ich versuche mich schon seid einiger Zeit mit EJB3 - vergebens. Irgendwie will das einfach nicht. Irgendwie erkennt er das EJB nicht. Wenn ich das richtig verstanden habe sollte die EJB Umgebung die Initialisierung meiner Beans übernehmen. Das sieht bei mir folgendermassen aus:
Code:
@EJB
private HelloUserBean helloUserBean;
Ich aus dem Buch "EJB in Action" entnommen habe, dass eine Annotation von @EJB vollkommen ausreicht. Leider gibt das Buch nicht her, wie die Einbindung genau auszusehen hat. Naja....genau das was ich eigenltlich brauche (Muss ich doch mit JNDI arbeiten ?)
Die WebApp funktioniert einwandfrei. Also JSP läuft und das HttpServlet auch
Ich hoffe das mir einer weiterhelfen kann. Leider habe ich im Internet für mich kein passendes Beispiel gefunden. So wie es aussieht erkennt JBoss das EJB:
Auszug aus dem MBean Inspector:
Code:
JMX MBean View
MBean Name: Domain Name: jboss.j2ee
service: EJB3
name: HelloUserBean
ear: helloworld.ear
jar: helloworld.jar
MBean Java Class: org.jboss.ejb3.stateless.StatelessDelegateWrapper
Back to Agent View Refresh MBean View
Meine Applikation:
Ich habe die Datei hellworld.ear erstellt. Die Datei enthält
helloworld.war (WebApp)
helloworld.jar (EJB)
META-INF/application.xml
application.xml
Code:
<!DOCTYPE application PUBLIC "-//Sun Microsystems,
Inc.//DTD J2EE Application 1.2//EN"
"http://java.sun.com/j2ee/dtds/application_1_2.dtd">
<application>
<icon>
</icon>
<module>
<ejb>helloworld.jar</ejb>
</module>
<module>
<web>
<web-uri>helloworld.war</web-uri>
<context-root>/helloworld</context-root>
</web>
</module>
<display-name>Hello World EJB3</display-name>
<description>Hello World EJB3</description>
<!-- <security-role>
<description>the customer role</description>
<role-name>customer</role-name>
</security-role>
-->
</application>
helloworld.jar
HelloUser
Code:
@Local
public interface HelloUser {
public String createHello(String username);
}
Code:
@Stateless
public class HelloUserBean implements HelloUser {
public String createHello(String username) {
return "Hello: " + username;
}
}
helloworld.war
HelloController
Code:
public class HelloController extends HttpServlet {
public static LinkedHashMap<String, Integer> counter = new LinkedHashMap<String, Integer>();
@EJB
private HelloUserBean helloUserBean;
public String createHello(String username) {
try {
[COLOR="Red"]// HIER IMMER NULLPOINTEREXCEPTION[/COLOR]
return helloUserBean.createHello(username);
} catch (Exception e) {
e.printStackTrace();
}
return "No Hello for you ";
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
Integer count = counter.get(request.getParameter("name"));
if(count==null)
count = 0;
counter.put(request.getParameter("name"), ++count);
response.sendRedirect("index.jsp?ejbname="+createHello("Mr.Help")+"&name=" + request.getParameter("name") + "&count="+count) ;
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
index.jsp
Code:
<%--
--%>
<%@ page contentType="text/html;charset=ISO-8859-1" language="java" %>
<html>
<head><title>Hello EJB3 World </title></head>
<body>
<%
if (request.getParameter("name")!=null ) {
out.println("Hallo: " + request.getParameter("name"));
out.println("Dies ist ihr " + request.getParameter("count") + ". Besuch");
}
%>
<form action="HelloWorld.form" method="POST">
<input type="text" name="name" SIZE=25>
<input type="reset" name="reset" VALUE="Löschen">
<input type="submit" NAME="submit" VALUE="Sag Hallo">
</form>
[url="Statistik.stat"]Statistik[/url]
<%
out.println("EJB " + request.getParameter("ejbname") + " Parabens");
%>
</body>
</html>
web.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>hnejb3</display-name>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>hn.ejb.example01.web.HelloController</servlet-class>
</servlet>
<servlet>
<servlet-name>Statistik</servlet-name>
<servlet-class>hn.ejb.example01.web.StatistikServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Statistik</servlet-name>
<url-pattern>*.stat</url-pattern>
</servlet-mapping>
</web-app>