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
das dazugehörige Remote Interface
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:
(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
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");
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