PDA

View Full Version : [J2ee] Chiamata client EJB


GiulioCesare
29-09-2007, 13:00
Salve ragazzi, ho fatto un piccolo esempio di un semplice modulo ejb che gira sotto jboss, ora sto cercando come invocare la classe remota, che è all'interno del modulo ejb, con il codice seguente:

String jndiURL = "http://localhost:8080/";

String jndiFactory = "com.ibm.websphere.naming.WsnInitialContextFactory";

java.util.Hashtable properties = new java.util.Hashtable(2);

properties.put(Context.PROVIDER_URL, jndiURL);

properties.put(Context.INITIAL_CONTEXT_FACTORY, jndiFactory);

InitialContext lIC = new InitialContext(properties);

ConversioneHome home = (ConversioneHome) PortableRemoteObject.narrow(lIC.lookup("ejb/test/ConversioneHome"));

Conversione conversione = (Conversione) home.create();


Ovviamente la classe Conversione non viene vista, perchè è su una macchina remota e quindi la chiamata va in errore. Qualcuno saprebbe darmi un aiuto per risolvere il mio problema?

axlaxl
29-09-2007, 15:11
Ti riporto la soluzione di un problema simile...

...
java.util.Properties prop = new java.util.Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
prop.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
prop.put(Context.PROVIDER_URL, "localhost");
Context ctx = new InitialContext(prop);
Object obj = ctx.lookup("Prenotazione");
PrenotazioneHome home = (PrenotazioneHome)
javax.rmi.PortableRemoteObject.
narrow(obj, PrenotazioneHome.class);
refPrenBin = home.create();
...


se vuoi via pm ti passo il link al sito del mio Prof. che ha parecchie dispense, guide ed esempi di questo tipo.

GiulioCesare
29-09-2007, 15:16
Ti ringrazio per l'aiuto, cmq il problema che ancora ho, è che viene segnalato un errore in compilazione della classe client, perchè la classa remota ejb, non viene trovata. Comunque, se hai esempi a riguardo gli accetto volentieri, grazie

axlaxl
29-09-2007, 15:19
usi jboss?
se si allora devi compilare da cmd con javac -classpath ".;jbossall-client.jar" *.java
e far partire il programmino con java -classpath ".;jbossall-client.jar" NomeClasseColMetodoMain

nota il file jbossall-client.jar lo trovi nella cartella di jboss ma non mi ricordo in che directory e per compilare cosi lo devi copiare nella stessa cartella dei file java altrimenti puoi sempre settare la variabile di classpath da proprietà del sistema o ancora inserirla tra le opzioni dell' editor che usi

GiulioCesare
29-09-2007, 15:22
Ok proverò, cmq se puoi inviami gli esempi che hai, grazie

axlaxl
29-09-2007, 15:41
vedi pm ti ho mandato il link.

comunque ti conviene compilare ed eseguire da linea di comando con le istruzioni che ti ho detto prima, ovviamente per fare così devi settare la variabile d' ambiente di java nel classpath, l' errore ti viene dato perche il compilatore di java non trova il package che contiene le classi ejb che non son contenute nel sdk ma in jboss nel tuo caso, per ovviare devi appunto dare il percorso del jar, per comodità ti conviene copiare il jar nella stessa directory del tuo progetto.