Eclipse Helios JNDI Lookup failed

Erlo

Mitglied
Hallo,

ich arbeite mich gerade in EJB ein und baue zur Übung einen kleinen Rechner.

Dazu wurde in Eclipse ein EJB-Projekt erstellt und eine Klasse CalcImpl mit der funktionalität hinzugefügt
Java:
package ejb;

import java.io.Serializable;

import javax.ejb.Stateless;

@Stateless(mappedName="Firstcalc")

public class CalcImpl implements Calc, Serializable {
	

	/**
	 * 
	 */
	private static final long serialVersionUID = -2263711293220572497L;

	public float sum(float a,float b){
		return a+b; 
	}
	
	public float mult(float a,float b){
		return a*b; 
	}
	
	public float minus(float a,float b){
		return a-b; 
	}
	
	public float div(float a,float b) {
		try{
			return a/b;
		}
		catch(Exception e){
			System.out.println("Error:devision by 0!!");
			return 0;
		}
	}
}

das dazugehörige Remote Interface
Java:
package ejb;

import javax.ejb.Local;
import javax.ejb.Remote;

@Remote
@Local
public interface Calc  {
	
	public float sum(float a,float b);
	public float mult(float a,float b);
	public float minus(float a,float b);
	public float div(float a,float b);
}

Um dann damit zu Arbeiten habe ich ein Dynamic Web Project erstellt. Darin befindet sich ein einen einfache JSP und ein Servlet die mit dem EJB-Modul arbeiten.

Aufruf des EJB-Moduls im Servlet:
Java:
Context ctx=new InitialContext();

			// call the calcImpl class of the SimpleCalculator EJB with the mappedName
			Calc cl=(Calc) ctx.lookup("Firstcalc");
(Das EJB-Projekt ist im Build Path hinzugefügt damit das Servlet die Klasse Calc kennt)


Beide Projekte werden über "run on Server erfolgreich auf einen Glassfish-Server deployed

Doch beim Aufruf der EJB im Servlet bekomme ich folgende Fehlermeldung im Serverlog:

INFO: Lookup failed for 'Firstcalc' in SerialContext
SCHWERWIEGEND: javax.naming.NamingException: Lookup failed for 'Firstcalc' in SerialContext [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interfaceejb.CalcRemote [Root exception is java.lang.ClassNotFoundException: ejb.CalcRemote]]

Irgendwie findet er nicht die Klasse im EJB-Modul und auch nach langer Recherche im Inet fand ich keine Lösung. Deswegen hoffe ich einer von euch kann mir helfen!!


Danke im Vorraus!
Erlo
 

207

Mitglied
nachtrag:

vielleicht das was du machen wolltest:

du erstellt ein remote (CalcRemote) und ein local (CalcLocal) interface. diese beiden implementierst du dann in deiner CalcImpl
 

Erlo

Mitglied
Hat leider nicht geholfen hier mal der ganze Exception stack
Java:
INFO: Lookup failed for 'Firstcalc' in SerialContext 
SCHWERWIEGEND: javax.naming.NamingException: Lookup failed for 'Firstcalc' in SerialContext  [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interfaceejb.Calc [Root exception is java.lang.ClassNotFoundException: ejb.Calc]]
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at Web.CalcServlet.doPost(CalcServlet.java:65)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
	at java.lang.Thread.run(Thread.java:662)
Caused by: javax.naming.NamingException: ejb ref resolution error for remote business interfaceejb.Calc [Root exception is java.lang.ClassNotFoundException: ejb.Calc]
	at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:430)
	at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:70)
	at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
	at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:472)
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:437)
	... 29 more
Caused by: java.lang.ClassNotFoundException: ejb.Calc
	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:959)
	at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1430)
	at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:678)
	at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:459)
	at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:410)
	... 33 more


laut glassfish existieren auch die die JNDI Einträge

INFO: Portable JNDI names for EJB CalcImpl : [java:global/SimpleCalculator/CalcImpl!ejb.Calc, java:global/SimpleCalculator/CalcImpl]
INFO: Glassfish-specific (Non-portable) JNDI names for EJB CalcImpl : [Firstcalc, Firstcalc#ejb.Calc]
INFO: SimpleCalculator was successfully deployed in 8.331 milliseconds.

INFO: Portable JNDI names for EJB CalcImpl : [java:global/SimpleCalculator/CalcImpl!ejb.Calc, java:global/SimpleCalculator/CalcImpl!ejb.CalcLocal]
INFO: Glassfish-specific (Non-portable) JNDI names for EJB CalcImpl : [Firstcalc, Firstcalc#ejb.Calc]

mache ich was beim Deployen falsch?

EJB:
1. Eclipse EJB-Projekt erstellt
2. EJB Interfaces und Klassen hinzugefügt
3. Das Eclipse EJB-Projekt über "Run on Server" auf den Glassfish deployed

WebInterface:

1. Eclipse Dynamic Web Project erstellt
2. JSP und Servlet erstellt
3. Das Eclipse EJB-Projekt in den Build Path hinzugefügt
4. Das Dynamic Web Projekt über "Run on Server " auf dem Glassfish deployed

Servlet:
Java:
package Web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import ejb.Calc;

/**
 * Servlet implementation class CalcServlet
 */
@WebServlet("/CalcServlet")
public class CalcServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CalcServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session=request.getSession(true);
		RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/index.jsp");
		System.out.println(" Post Method test");
		float a=Float.parseFloat(request.getParameter("n1"));
		float b=Float.parseFloat(request.getParameter("n2"));
		char oper=request.getParameter("oper").charAt(0);
		float result=0;
		try {
			Context ctx=new InitialContext();

			// call the calcImpl class of the SimpleCalculator EJB with the mappedName
			Calc cl=(Calc) ctx.lookup("Firstcalc");
			
			switch(oper){
			
			case '+': result=cl.sum(a, b); break;
			case '-': result =cl.minus(a, b); break;
			case '*': result =cl.mult(a, b); break;
			case '/': result =cl.div(a, b); break;
			}
			session.setAttribute("result",result);
			System.out.println("Erg ist "+result+"!");
			request.setAttribute("a", 11);
			request.setAttribute("b", 11);
		}catch(NamingException e){
			session.setAttribute("erreur: ",e.getMessage());
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
		rd.forward(request,response); 
	}

	

}

Hier der Code als Anhang, vieleicht gibt es ja jemanden der es kurz testen kann.

1. EJB-Projekt
2. Dynamic Web Project
 

Anhänge

  • SimpleCalculator.zip
    6,9 KB · Aufrufe: 1
  • SimpleCalculatorWebPage.zip
    9,3 KB · Aufrufe: 2
Zuletzt bearbeitet:

207

Mitglied
ok noch ein versuch:

das problem is clientseitig.
du hast zwar im eclipse das ejb projekt dem web projekt hinzugefuegt.. damit hast du autocompletion etc und alles sieht wunderbar aus. aber beim deployen hat er noch nie was von deinem service interface gehoert weil das ejb projekt ja nicht mit exportiert wird.

versuch folgendes:

- entferne den ejb project aus dem web projekt path
- exportiere dein ejb projekt als jar..oder exportiere nur dein service interface als jar
- leg das jar in dein web porjekt -> webcontent -> web-inf -> lib ordner
- das jar ist nun automatisch im build path
( - evtl musst du noch im build path bei "export" -> "web app library" anhaken und damit exportieren...falls es nicht automatisch schon angehakt ist..keine ahnung)

vielleicht geht es so
 
Zuletzt bearbeitet:

Erlo

Mitglied
Super danke das mit dem Exportieren des Interfaces hat geklappt!:toll:(Hätte ich auch selber drauf kommen müssen)
Das Tutorial nachdem ich diese Übung gemacht habe war dann nicht ganz vollständig.

Da ich alles ausprobieren wollte habe ich auch eine andere Art des EJB-Aufrufs ausprobiert.

Dazu habe ich die Servletklasse die Anotation @ EJB eingetragen
und die JNDI Context sachen gelöscht.

Java:
@EJB
private Calc cl;

Leider bekomme ich da folgende Fehlermeldung
Java:
SCHWERWIEGEND: Class [ LCalc; ] not found. Error while loading [ class Web.CalcServlet ]
WARNUNG: Error in annotation processing: java.lang.NoClassDefFoundError: LCalc;

Das L bei LCalc wird anscheinden von Eclipse selber durch einen Fehler eingefügt.Wie könnte man diesen Fehler selber bereinigen??
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Eclipse (Helios); Glassfish 3; EJB und VirtualBox Allgemeines EE 1
Dimax Servlet läuft in Eclipse, aber nicht im Browser Allgemeines EE 74
M Zeitgesteuertes Ereignis in einer dynamic web module Anwendung (eclipse) Allgemeines EE 3
R Java EE 6, eclipse, maven, jsf, hibernate, mysql Allgemeines EE 8
P JavaEE 7 Maven Eclipse Allgemeines EE 0
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
B EJB3.0 Projekt - Eclipse Allgemeines EE 1
S Eclipse mit Tomcat und Jersey Allgemeines EE 7
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
E Eclipse JEE6 Plugins Allgemeines EE 2
S Fehlersuche in Eclipse/Tomcat -> Error-log?? Allgemeines EE 2
S Eclipse: Teilmodule beim Testen werden nicht gestartet Allgemeines EE 2
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
J JBoss, Eclipse, Webseite wird nicht angezeigt? Allgemeines EE 4
W Anleitung/Tutorial Eclipse/JBoss 6.0 mit Seam 3.0 bzw. jBPM 5.0 Allgemeines EE 3
E Servlet Wie kann ich ohne Hilfe von Eclipse in JBoss mein servlet aufrufen Allgemeines EE 2
S Rich Client Application mit Eclipse/WebLogic/EclipseLink/EJB3 Allgemeines EE 2
S Eclipse: JPA Project in Dynamic Webproject nutzen Allgemeines EE 4
S Eclipse JPA Project Allgemeines EE 8
S Dynamic Web Project mit Eclipse - Vorgehensweise? Allgemeines EE 2
E Anfänger mit Eclipse und JEE Allgemeines EE 6
S Anfängerfrage Eclipse/Tomcat Allgemeines EE 4
A Tomcat in Eclipse Allgemeines EE 11
P Allg. Frage Eclipse EE & Xml Allgemeines EE 2
K Pfad bei Webprojekt in Eclipse herausfinden Allgemeines EE 11
R Wie Spring in Eclipse Galileo installieren? Allgemeines EE 5
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
A GWT Debugmode in Eclipse Allgemeines EE 6
J JSF 1.2-Anwendung mit Eclipse Galileo Allgemeines EE 1
S Tomcat + Eclipse 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
R Sourcen einbinden von J2EE bzw auch für Servlets in Eclipse Allgemeines EE 8
I Web-Projekt zum Laufen bringen unter Eclipse Allgemeines EE 3
D Kein EntityManager in Eclipse (!) Allgemeines EE 2
G Simples JSF-Projekt in Eclipse - Problem Allgemeines EE 9
I Eclipse Projekt SVN, Informationen löschen Allgemeines EE 3
S JSP / Tomcat / Eclipse / Unable to compile class for JSP Allgemeines EE 4
M Eclipse GUI für EJB-QL bzw HQL? Allgemeines EE 4
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
M embedded jboss unter eclipse 3.3 Allgemeines EE 2
C Servlets in Eclipse ausführen Allgemeines EE 5
M Kostenloses JSP Plugin für Eclipse Allgemeines EE 6
B Client starten ohne Eclipse Allgemeines EE 4
R Eclipse + JBoss + JSF Allgemeines EE 14
V MYSQL JDBC;java.lang.ClassNotFoundException; Problem Eclipse Allgemeines EE 3
S JSF mit Eclipse J2EE Allgemeines EE 6
W Arbeitsumgebung für JSP-Development einrichten (Eclipse, .) Allgemeines EE 3
G Tomcat unter Eclipse starten Allgemeines EE 9
A Eclipse Start-Problem Allgemeines EE 5
D EJB3.0 Projekt (Eclipse) Allgemeines EE 3
R JBoss 4.2.0 - Eclipse RC 3.3 und WTP Allgemeines EE 3
D JBOSS unter Eclipse Allgemeines EE 2
S Hibernate, Tomcat und Eclipse treiben mich zum Wahnsinn. Allgemeines EE 2
K .jar Datei zu eclipse importieren Allgemeines EE 3
T Sysdeo Eclipse Tomcat Plug-in Allgemeines EE 4
C JSF Autocomplete in Eclipse Allgemeines EE 1
G Tomcat / Eclipse oder Web.xml Problem Allgemeines EE 11
M JBOSS AS von Eclipse aus steuern Allgemeines EE 9
D Eclipse findet javax.servlet.jsp.tagext Allgemeines EE 4
K JRE Eclipse <--> WebSphere Allgemeines EE 3
R Eclipse, SVN und Tomcat - wie kombinieren Allgemeines EE 5
F Sysdeo Eclipse Tomcat Plugin Allgemeines EE 1
M J2EE Entwicklung mit Eclipse Allgemeines EE 5
S webservice mit tomcat und axis ohne eclipse laufen lassen? Allgemeines EE 2
M Eclipse WTP/AXIS mit TomCat 5.5.02 ./. TomCat 5.5.17 Allgemeines EE 1
Acha Problem Browsercache im Eclipse bei Arbeit mit WTP Allgemeines EE 4
L mit gleichem eclipse Projekt auf anderem Rechner benutzen Allgemeines EE 3
S .war Datei erzeugen unter Eclipse Allgemeines EE 2
F Eclipse Wtp und erste JSP Seite Allgemeines EE 5
E J2EE unter Eclipse Allgemeines EE 6
padde479 Eclipse und Tomcat Allgemeines EE 3
G j2ee eclipse bekanntmachen Allgemeines EE 4
R Java2WSDL aus Eclipse heraus funktioniert nicht Allgemeines EE 2
C JBoss Server unter Eclipse 3.1 Allgemeines EE 2
R Servlets in ECLIPSE programmieren Allgemeines EE 3
S Eclipse und JSP Allgemeines EE 9
M Debugging mit Eclipse / Web-Application Allgemeines EE 2
daLenz jboss 3.2.5 konfiguration unter eclipse Allgemeines EE 2
S Hibernate 2.x mit Eclipse 2.1 Allgemeines EE 16
A Eclipse: EJB-1.1-Dateien importieren und bearbeiten Allgemeines EE 2
M EJB-client: jar-Archiv als Export aus Eclipse läuft nicht Allgemeines EE 5
T Servlets in eclipse schreiben !! Allgemeines EE 5
F Probleme mit Eclipse/JBoss Allgemeines EE 6
T Eclipse: Problem bei der Installation Allgemeines EE 3
G Unit Test einer JavaEE Anwendung schlägt fehl. JNDI Name nicht gefunden. Allgemeines EE 3
J Global JNDI Tomcat Allgemeines EE 0
P JAvaEE und JNDI Allgemeines EE 0
L JNDI auf Tomcat mit EE Allgemeines EE 4
2 Frage zu JNDI Allgemeines EE 13
B Tomcat, JNDI und datasource - Konfiguartion Allgemeines EE 2
J JNDI-lookup.. dasselbe Objekt oder Kopie? Allgemeines EE 2
A JNDI Lookup Allgemeines EE 6
J LDAP via JNDI Allgemeines EE 13
M Apache JNDI JDBC Treiber anbinden Allgemeines EE 7
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
F [JNDI] Holen einer EJB Allgemeines EE 3
L Probleme mit Kompilierung von JNDI Allgemeines EE 2
B Tomcat JNDI-Realm - LDAP mit Windows testen? Allgemeines EE 2
B Problem mit jndi lookup Allgemeines EE 7

Ähnliche Java Themen

Neue Themen


Oben