Hallo, ich habe einen Standalone Application Client entwickelt, der auf Remote Session Beans (EJB3) auf einem glassfish v2 zugreift.
Der Client ist u.a. als Komponente in ein Applet eingebunden. (Habe versucht Überzeugungsarbeit zu leisten, das Webstart wesentlich sinnvoller ist --> wurde aber abgelehnt). Das funktioniert so weit auch.
Allerdings habe ich ein Problem mit den Server Bibliotheken, die für das JNDI-Lookup benötigt werden.
Dies sind beim Glassfish:
- javaee.jar
- appserv-deployment.jar
- appserv-ext.jar
- appserv-rt.jar
Momentan läuft das Lookup folgendermaßen:
[HIGHLIGHT="Java"]
Properties props = new Properties();
//Context Properties
props.setProperty("java.naming.factory.initial",
"com.sun.enterprise.naming.SerialInitContextFactory"); //<-- in appserv-rt.jar
props.setProperty("java.naming.factory.url.pkgs",
"com.sun.enterprise.naming"); //<-- in appserv-rt.jar
props.setProperty("java.naming.factory.state",
"com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); //<-- in appserv-rt.jar
//Host
props.setProperty("org.omg.CORBA.ORBInitialHost", "ja der host halt");
//Port
props.setProperty("org.omg.CORBA.ORBInitialPort", "3702");
Context context = new InitialContext(props);
//lookup
MeineBean bean = (MeineBean) context.lookup("de.meinpackage.MeineBean");
[/HIGHLIGHT]
Die appserv-rt.jar (in der die Properties und Libraries für den InitialContext sind) ist 16 MB groß!
Wenn ich die jedesmal übertrage schläft mir der User ein. Kann man die nicht irgendwie loswerden?
Es müsste doch auch möglich sein das mit Java-Bordmitteln zu machen.
Allerdings kenne ich mit mit RMI/IIOP nicht besonders gut aus und meines Wissens sind die ORB-Implementierungen zwischen Java SE und EE nicht kompatibel.
Hat da jemand ne Idee/Ansatz/Link?
Falls es nicht möglich ist, fallen euch vielleicht noch andere Alternativen ein, als die folgenden:
- Webservice für die Kommunikation zwischen Session Beans und Client
--> Aus Performancegründen nicht praktikabel.
- Die Libs auf den Client Systemen in einen globalen Classpath legen.
--> Naja, absolute Notlösung halt.
?
Der Client ist u.a. als Komponente in ein Applet eingebunden. (Habe versucht Überzeugungsarbeit zu leisten, das Webstart wesentlich sinnvoller ist --> wurde aber abgelehnt). Das funktioniert so weit auch.
Allerdings habe ich ein Problem mit den Server Bibliotheken, die für das JNDI-Lookup benötigt werden.
Dies sind beim Glassfish:
- javaee.jar
- appserv-deployment.jar
- appserv-ext.jar
- appserv-rt.jar
Momentan läuft das Lookup folgendermaßen:
[HIGHLIGHT="Java"]
Properties props = new Properties();
//Context Properties
props.setProperty("java.naming.factory.initial",
"com.sun.enterprise.naming.SerialInitContextFactory"); //<-- in appserv-rt.jar
props.setProperty("java.naming.factory.url.pkgs",
"com.sun.enterprise.naming"); //<-- in appserv-rt.jar
props.setProperty("java.naming.factory.state",
"com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); //<-- in appserv-rt.jar
//Host
props.setProperty("org.omg.CORBA.ORBInitialHost", "ja der host halt");
//Port
props.setProperty("org.omg.CORBA.ORBInitialPort", "3702");
Context context = new InitialContext(props);
//lookup
MeineBean bean = (MeineBean) context.lookup("de.meinpackage.MeineBean");
[/HIGHLIGHT]
Die appserv-rt.jar (in der die Properties und Libraries für den InitialContext sind) ist 16 MB groß!
Wenn ich die jedesmal übertrage schläft mir der User ein. Kann man die nicht irgendwie loswerden?
Es müsste doch auch möglich sein das mit Java-Bordmitteln zu machen.
Allerdings kenne ich mit mit RMI/IIOP nicht besonders gut aus und meines Wissens sind die ORB-Implementierungen zwischen Java SE und EE nicht kompatibel.
Hat da jemand ne Idee/Ansatz/Link?
Falls es nicht möglich ist, fallen euch vielleicht noch andere Alternativen ein, als die folgenden:
- Webservice für die Kommunikation zwischen Session Beans und Client
--> Aus Performancegründen nicht praktikabel.
- Die Libs auf den Client Systemen in einen globalen Classpath legen.
--> Naja, absolute Notlösung halt.
?