Duvida com EJB basico

2 respostas
muldon
Eai pessoal blz ?
  Tentei aqui implementar meu primeiro EJB, e estou tendo o seguinte problema: quando eu tento chamar qualquer classe de meu EJB, tenho uma excessao ( erro no caso ) do tipo java.lang.NoClassDefFoundError.

Alguem poderia me dizer se é necessaria alguma configuracao especial para que meu EJB possa enxergar outras classes ?

Excessao:

15:32:24,562 ERROR [LogInterceptor] Unexpected Error in method: public abstract double[] tutorial.interfaces.Fibo.compute(int) throws java.rmi.RemoteException

java.lang.NoClassDefFoundError: tutorial/dao/hibernate/HibernateDepartamentoDAO

at tutorial.ejb.FiboBean.compute(FiboBean.java:74)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)


  • Metodo na classe action que instacia a home:
public ActionForward fibo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

Context context = new InitialContext();

Object ref = context.lookup(ejb/Fibo);

home = (FiboHome) PortableRemoteObject.narrow(ref, FiboHome.class);		

response.setContentType(text/html);

PrintWriter out = response.getWriter();
out.println("<html><head><title>");
	out.println("Fibonaci Computation");
	out.println("</title></head>");
	out.println("<body>");

	out.println("<h1>");
	out.println("Fibonaci Computation");
	out.println("</h1>");

	try {
		Fibo bean = home.create();
		int limit = 0;
		String value = request.getParameter("limit");
		double[] result = bean.compute(value);
		bean.remove();

		out.println("<p>");
		out.print("The ");
		out.print(limit);
		out.print(" first Fibonacci numbers ");

		for (int i = 0; i < result.length; i++) {
			out.println("<br>");
			out.println(i);
			out.println(" : ");
			out.println(result[i]);
		}

		out.println("</p>");
	} catch (Exception e) {
		out.println(e.getMessage());
		e.printStackTrace(out);
	} finally {
		out.println("</body></html>");
		out.close();
	}
	return null;
}

-Interface FiboHome

public interface FiboHome

extends javax.ejb.EJBHome

{

public static final String COMP_NAME=java:comp/env/ejb/Fibo;

public static final String JNDI_NAME=ejb/Fibo;

public tutorial.interfaces.Fibo create()
throws javax.ejb.CreateException,java.rmi.RemoteException;

}

-Interface remota

public interface Fibo

extends javax.ejb.EJBObject

{

/**

* Business method

*/

public double[] compute( int number )

throws java.rmi.RemoteException;

}

-Bean

/**

  • @ejb.bean name=“Fibo”
  • display-name="Name for Fibo"
    
  • description="Description for Fibo"
    
  • jndi-name="ejb/Fibo"
    
  • type="Stateless"
    
  • view-type="remote"
    

*/
public class FiboBean implements SessionBean {

public FiboBean() {
	super();
	// TODO Auto-generated constructor stub
}

public void setSessionContext(SessionContext ctx) throws EJBException,
	RemoteException {
	// TODO Auto-generated method stub

}

public void ejbRemove() throws EJBException, RemoteException {
	// TODO Auto-generated method stub

}

public void ejbActivate() throws EJBException, RemoteException {
	// TODO Auto-generated method stub

}

public void ejbPassivate() throws EJBException, RemoteException {
	// TODO Auto-generated method stub

}

/**
 * Default create method
 * 
 * @throws CreateException
 * @ejb.create-method
 */
public void ejbCreate() throws CreateException {
	// TODO Auto-generated method stub
}

/**
 * Business method
 * @ejb.interface-method  view-type = "remote"
 */
public double[] compute(int number) {
    if (number < 0) {
        throw new EJBException("Argument should be positive");
    }
    
    HibernateDepartamentoDAO h = new HibernateDepartamentoDAO();
    h.insert(new Departamento());
    
    
    
    double[] suite = new double[number + 1];
    suite[0] = 0;

    if (number == 0) {
        return suite;
    }

    suite[1] = 1;

    for (int i = 2; i <= number; i++) {
        suite[i] = suite[i - 1] + suite[i - 2];
    }

    return suite;
}

}

Ou seja, o erro da nas linhas

HibernateDepartamentoDAO h = new HibernateDepartamentoDAO();
h.insert(new Departamento());

2 Respostas

deadlock

muldon:
java.lang.NoClassDefFoundError: tutorial/dao/hibernate/HibernateDepartamentoDAO

essa classe ta no teu CLASSPATH???

muldon

esta no build path. Estou usando eclipse. Preciso setar no classpath de variavel de ambiente para que o jboss possa enxerga-la ?

Criado 7 de novembro de 2006
Ultima resposta 7 de nov. de 2006
Respostas 2
Participantes 2