jKoeber.de | Entwicklung, Systeme, Programmierung und Umsetzung
RMI / IIOP Eclipse Glassfish and EJB3
Einen wunderschönen Sonntag Morgen an alle. Nachdem ich nunmehr seit knapp 18 Stunden vorm Rechner häng und jetzt auch so gut wie fertig bin. Noch ein kleiner Blogeintrag zum Thema RMI / IIOP und Datenübertragung durch serialisierte Klassen über den JNDI.
Wir hatten heute Serverumzug und in den “Wartezeiten” konnte ich einige nützliche Dinge herausfinden, so auch die Kommunikation von RMI Umsetzung mit Glassfish in Eclipse nachdem die Projektverwaltung im Netbeans nicht so meinen Geschmack entsprochen hatte. Dank der überaus guten Einarbeitung in letzter Zeit hat lediglich die Übermüdung meinerseits zu kleineren Fehler geführt.
Einzig und allein die Serververwaltung in eclipse für Glassfish ist nicht ganz so rosig, da die Steuerung zwischen Domain und Server in Eclipse nicht so wirklich ausgereift ist.
Aber jetzt zum eigentlichen Thema: RMI / IIOP Konfiguration im unabhängigen Client
Properties props = new Properties();
props.setProperty(“java.naming.factory.initial”,
“com.sun.enterprise.naming.SerialInitContextFactory”);
props.setProperty(“java.naming.factory.url.pkgs”,
“com.sun.enterprise.naming”);
props.setProperty(“java.naming.factory.state”,
“com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl”);// optional. Defaults to localhost. Only needed if web server is running
// on a different host than the appserver
props.setProperty(“org.omg.CORBA.ORBInitialHost”, “localhost”);// optional. Defaults to 3700. Only needed if target orb port is not 3700.
props.setProperty(“org.omg.CORBA.ORBInitialPort”, “3700″);try {
InitialContext ic = new InitialContext(props);
this.foo = (Test) ic.lookup(“de.jk.package.bean.remote.Test”);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Der Aufruf ist fast intuitiv, das EJB3 Remote Interface wird per JNDI Aufruf auf den jeweiligen Server serialisiert übertragen und im Client verwendet. Standard Glassfish Port ist hierbei die 3700 der Server in meinem Fall localhost und mein Interface das “geladen” werden soll de.jk.package.bean.remote.Test der volle Name muss angegeben werden da sonst das Interface nicht gefunden wird, ich hab lang genug herumprobiert ob man es auch anders erreichen könnte, aber keine Chance. Also Packagename + RemoteInterfaceClassName.
Ich würde euch gerne ein paar Screenshots davon zeigen, aber nachdem dieser Blogeintrag anhand eines reellen Projekte entstand, wird das vorerst ausbleiben, falls ich morgen die geistige “Frische” erreiche und mich dazu durchringen kann, werde ich noch eine kleine Demoapplikation veröffentlichen und hier zum Download anbieten.
Sehr nützlich war der Link von Sun die es einwandfrei beschreibt. Zum Artikel
