Standalone Application Client: Lookup ohne Server-Libs

Status
Nicht offen für weitere Antworten.

MarcB

Bekanntes Mitglied
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.

?
 

woezelmann

Mitglied
Also ich kenn mich mit der Ganzen Thematik nicht so aus, aber meine Idee wär, die appserv-rt.jar einfach zu zerplücken und nur die benötigten Klassen in eine neue .jar zu packen, die dann an den Client geschickt werden. Solange du die Paketstruktur beibehältst, sollte das funzen.
 

MarcB

Bekanntes Mitglied
Danke, aber das wird wohl kaum möglich sein. Ich kenne ja die Abhängigkeiten zwischen den Klassen/Packages in diesem Jar nicht.
Für Try & Error mit fast 10.000 Klassen fehlen mir ein bisschen Zeit & Nerven ;). Selbst den Quellcode zu durchsuchen wäre da zu aufwendig.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben