PDA

Visualizza la versione completa : Errore di cast in java


abcd1000
01-04-2003, 16:03
Ho un ejb così composto

HOME INTERFACE

package stampa;

import javax.ejb.*;
import java.rmi.RemoteException;

public interface test2Home extends EJBHome
{
public test2 create()
throws CreateException, RemoteException;

}

REMOTE INTERFACE

package stampa;

import javax.ejb.*;
import java.rmi.RemoteException;

public interface test2 extends EJBObject
{
public void start() throws RemoteException;
public void dumpClassloader (ClassLoader loader, String ejbName)
throws RemoteException;
}

EJB
vari metodi tra cui il metodo start...

CLIENT

riporto solo il codice che interessa

LINEA 1 Context ctx = getInitialContext();
LINEA 2 test2Home home2 = (test2Home) ctx.lookup("test2");
test2 the_ejb2 = home2.create();
the_ejb2.start();
the_ejb2.remove();

Alla linea 2 mi dà un errore di Cast Exception
Vedete dov'è l'errore?

caimano73
01-04-2003, 19:20
Io faccio così quando devo prelevare una home:
in un metodo di una classe di utility, chiamato getEjbHome, passo due parametri: il nome dell'interfaccia ed il tipo di classe


public static Object getEJBHome(String name, Class type){
try{
InitialContext ctx = new InitialContext();
Object actual = ctx.lookup(name);
return PortableRemoteObject.narrow(actual, type);
}
catch(NamingException ne){
ne.printStackTrace();
log.fatal("Naming Exception: Home " + name + " cannot be found");
}
}


quando devo richiamare questo metodo faccio:



test2Home home2 = (test2Home )EJBUtil.getEJBHome("test2", test2Home.class);


Il fatto di avere quella classe di utility è ininfluente, ma forse l'errore potrebbe essere legato al mancato utilizzo del metodo narrow.
Oppure, potrebbe semplicemente essere un errore nel naming...

ciao

:ciauz:

Zalex
02-04-2003, 02:35
da' un CastException quando in un cast (C)x il tipo dinamico di x non e' minore o uguale a C, cioe il tipo dinamico di x non e' una sottoclasse(diretta o indiretta) di C!
in particolare il tipo che ritorna 'ctx.lookup("test2");' non e' un sottotipo di 'test2Home'

abcd1000
02-04-2003, 10:42
trovato l'errore
nel file xml avevo scritto testhome invece di test2home

Loading