EJB - EJB wird nicht ins Servlet geladen

Status
Nicht offen für weitere Antworten.
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:
Code:
@EJB    
private HelloUserBean helloUserBean;
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:
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);
}
HelloUserBean
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>
 

JimPanse

Bekanntes Mitglied
Zwei möglichkeiten:

Entwerder über ein
Code:
InitialContext ctx;
ctx.lookUp(JNDIName);
oder

dein EJB Mapping dann aber

Code:
@EJB(mappedName =JNDI_NAME_PRAEFIX
            + "DieBeandiedasInterfaceImplementiert/DieSchnittstelleAufDieZugegriffenwerdenMuss", beanName = "DieBean")

in deinem Falle

@EJB(mappedName = "HelloUser /local", beanName =   "HelloUserBean ")

Das sollte klappen, dann kannst du auf das LocalInterface zugreifen!


Gruß
 
G

Guest

Gast
Danke, aber der findet das irgendwie nicht.
Muss ich in der web.xml noch irgendwas mit jndi angeben ?
 
G

Guest

Gast
Habe es hinbekommen - :applaus:
Wenn ich das richtig verstanden habe, hat Tomcat5.5 wohl Probleme mit den Annotationen und man muss mit dem JNDI arbeiten. Allerdings musste ich dann noch die jboss-web.xml erstellen

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
    "-//JBoss//DTD Web Application 4.2//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
	<context-root>StatelessWeb</context-root>
	<ejb-local-ref>
		<ejb-ref-name>ejb/HelloUserLocal</ejb-ref-name>
		<local-jndi-name>helloworld/HelloUserBean/local</local-jndi-name>
	</ejb-local-ref>
</jboss-web>

Und die web.xml anpassen.

Code:
    <ejb-local-ref>
		<ejb-ref-name>ejb/HelloUserLocal</ejb-ref-name>
		<ejb-ref-type>Session</ejb-ref-type>
		<local-home>java.lang.Object</local-home>
		<local>hn.ejb.example01.beans.HelloUserBean</local>
	</ejb-local-ref>

Weiss nicht ob das alles so die "beste" Lösung ist.. Aber es funtzt
@JimPanse
Besten dank für den Hinweis mit JNDI
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Tomcat/Servlet Problem - Servlet wird nicht gefunden Allgemeines EE 8
M Servlet: CSS der JSP wird bei einem forward nicht gefunden? Allgemeines EE 2
M doGet()-Methode wird nicht geladen Allgemeines EE 3
B Datenbank Resource wird nicht gefunden Allgemeines EE 1
OnDemand JSF Stacktrace wird nicht korrekt ausgegeben Allgemeines EE 1
J Mit @Schedule annotierte Methode wird nach einer Weile nicht mehr ausgeführt (JBoss AS 7.2) Allgemeines EE 0
J JBoss, Eclipse, Webseite wird nicht angezeigt? Allgemeines EE 4
Y JSF EJB wird nicht injected Allgemeines EE 18
P Prozess wird nicht beendet Allgemeines EE 4
A action-Methode wird nicht aufgerufen Allgemeines EE 7
M taglib wird nicht gefunden Allgemeines EE 9
N JSF + Facelets: Datatable wird nicht angezeigt Allgemeines EE 1
P JSF Seite wird nicht gestartet Allgemeines EE 4
B FileInputStream(sPath); file wird nicht gefunden Allgemeines EE 5
F MyFaces und Tiles: <tiles:insert> wird nicht erkannt Allgemeines EE 10
A HttpUnit: Form wird nicht submitted Allgemeines EE 4
S package wird nicht gefunden Allgemeines EE 2
D HTML-Code von JSP wird in Browser nicht angezeigt?! Allgemeines EE 3
S Drools - Stop sobald erste Regel getroffen wird Allgemeines EE 2
S a4j:ajax Event wird 2 Mal gefeuert. Allgemeines EE 0
A Wie kann ich verhinder, dass die seite angezeigt wird? Allgemeines EE 3
C JSP wird nur halb geladen Allgemeines EE 2
G jsp:getProperty wird mehrfach aufgerufen - Warum? Allgemeines EE 3
F doFilter wird zwei mal aufgerufen Allgemeines EE 5
M Action wird 2 mal durchlaufen Allgemeines EE 3
G welcher Appserver wird verwendet Allgemeines EE 4
H Servlet: init() wird 2x ausgeführt Allgemeines EE 8
G properties file im J2EE Server - wo wird genau gesucht? Allgemeines EE 6
F Servlet: DoPost wird zweimal aufgerufen Allgemeines EE 3
S ResSet wird "vernichtet" Allgemeines EE 5
thor_norsk Glassfish Server unter Windows startet nicht! Allgemeines EE 20
pkm Root resource - Klassen werden nicht gefunden. Allgemeines EE 2
Dimax Servlet läuft in Eclipse, aber nicht im Browser Allgemeines EE 74
J Ich kann Java JDK nicht downloaden Allgemeines EE 6
G Unit Test einer JavaEE Anwendung schlägt fehl. JNDI Name nicht gefunden. Allgemeines EE 3
C Servlet Tomcat/Jersey findet REST-Service nicht Allgemeines EE 3
I XML mit JAXB und Annotations aufbauen klappt nicht wie gewollt Allgemeines EE 5
M JSF Binding greift nicht Allgemeines EE 0
D Remote Aufruf von EJB funktioniert nicht Allgemeines EE 1
D Websocket nach Decoder Annotation nicht mehr erreichbar Allgemeines EE 0
S JEE installation geht nicht? Allgemeines EE 6
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
U @Inject funktioniert nicht Allgemeines EE 3
T wie static aber doch nicht ... Allgemeines EE 8
C Double Eingabe Felder sind nicht Leer Allgemeines EE 1
F SessionScoped und Stateful EJB: Werte werden nicht behalten Allgemeines EE 3
L JSF Primefaces breadcrumb - erstes Element funktioniert nicht Allgemeines EE 0
D Jboss löscht Archiv nicht beim Redeployed Allgemeines EE 3
M Konzeptfrage: Applicationserver, oder nicht? Allgemeines EE 4
E CDI mit verschiedenen Jars in EAR klappt auf Jboss AS 7.1.1.Final nicht Allgemeines EE 8
M Daten aus der Resource werden nicht übernommen Allgemeines EE 4
R MavenDependencyResolver nicht auflösbar Allgemeines EE 5
D [Glassfish EJB] OneToMany geht nicht Allgemeines EE 7
G JSF Beans nicht angezeigt Allgemeines EE 2
S JSF und CSS: background:url() geht nicht Allgemeines EE 2
S Eclipse: Teilmodule beim Testen werden nicht gestartet Allgemeines EE 2
H Bean läuft unter GlassFish, aber JBoss nicht Allgemeines EE 5
aze Tomcat:Error Pages werden nicht angezeigt Allgemeines EE 4
M JSP Ausgabe funktioniert nicht Allgemeines EE 4
F Webanwendung startet nicht richtig Allgemeines EE 6
B Tomcat6/axis1.4 kann nicht auf Dateien zugreifen Allgemeines EE 3
P Displaytag findet getter-Methode(n) nicht! Allgemeines EE 3
N Tomcat funktioniert nach shutdown/startup nicht mehr korrekt Allgemeines EE 9
F REST-Service: GET erkennt Veränderungen an der DB nicht. Allgemeines EE 2
T Applet mit XmlRpc läuft lokal nicht vollständig Allgemeines EE 4
S m2eclips + strust2 == geht nicht Allgemeines EE 5
C TransferObjects's in EJB 3 klappt nicht Allgemeines EE 2
P Kriege JAAS einfach nicht zum Laufen Allgemeines EE 3
A Servlet erkennt request Objekt nicht Allgemeines EE 8
A Java Tomcat findet Website nicht Allgemeines EE 8
D JSF-Tags können nicht aufgelöst werden ? Allgemeines EE 2
D Debug Modus im Glassfish 2.1 plötzlich nicht mehr möglich Allgemeines EE 2
J Einige Klassen werden nicht resolved Allgemeines EE 7
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
B HttpSession bekommen wenn nicht in Servlet Allgemeines EE 8
J Dinge, die man nicht tun sollte Allgemeines EE 6
I Klassen werden nicht für Import erkannt eclipse EE Allgemeines EE 2
S In Eclipse werden die "Servlet-Klassen" nicht gefu Allgemeines EE 2
T web-app läuft nicht Allgemeines EE 5
D ArrayList behält Werte nicht Allgemeines EE 2
D musicplayer spielt mit threads nicht mehr ab Allgemeines EE 3
0 myfaces staret nicht Allgemeines EE 1
A Warum werden die Managed Beans nicht erkannt? Allgemeines EE 3
A Tomcat startet nicht, Einstellungsfehler? Allgemeines EE 3
S MyFaces Sandbox: inputSuggest Komponente furnktioniet nicht Allgemeines EE 11
A cascade funzt nicht Allgemeines EE 8
K JSF Test Anwendung ausführen funktioniert nicht Allgemeines EE 7
B Faces Context nicht gefunden Allgemeines EE 4
M JSF Bilder werden wegen jsessionid nicht gefunden (nur IE) Allgemeines EE 6
K Download Dialog startet nicht Allgemeines EE 2
M Servlet lässt sich nicht aufrufen Allgemeines EE 6
D warum ist gwt nicht beliebt ? Allgemeines EE 2
I Tomahawk funktioniert nicht Allgemeines EE 3
M Resourcen werden in JSP nicht gefunden Allgemeines EE 12
S Verdammt, MyFaces Sandbox 'läuft' nicht Allgemeines EE 7
T Ich raff es nicht . NotSerializableException Allgemeines EE 5
M Servlets | work - Klassen nicht im WAR File Allgemeines EE 5
E HTTP-GET// -->Eine URL aufrufen, aber nicht dahin navigie Allgemeines EE 2
J Direktaufruf einer jsp nicht zulassen Allgemeines EE 2
C WAS findet Jars in EAR nicht? Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben