Von Glassfish auf Bea Weblogic zugreifen

kleinevroni

Mitglied
Hallo,

ich stehe vor einem sehr nervigen Problem:

Ich migriere grade zwei JEE/EJB-Anwendungen von Bea 8.1 auf Glassfish 2.1.
Die beiden Anwendungen kommunizieren miteinander.

Da ich mich aber nicht klonen kann, ist die A fertig als B, und wird auch eher produktiv genommen. Die Produktiv-Umgebung von B bleibt solang auf Bea8.

Gibt es irgendeine Möglichkeit, vom Glassfish aus auf die Bea-EJBs zuzugreifen?

Mit einem standalone-Client kann ich sowohl auf die Glassfish-Beans als auch die Weblogic-Beans zugreifen. Also auch mit beiden client-jars (GF und WL) im Classpath. (Auch innerhalb eines Aufrufs).

In der laufenden Anwendung funkt das wlclient.jar aber mächtig dazwischen (Fehler ohne Ende). Ohne wlclient.jar findet er aber logischerweise die weblogic.jndi.WLInitialContextFactory nicht.

Was nun?
Ich habe auch schon versucht, nicht weblogic.jndi.WLInitialContextFactory zu verwenden, sondern nur com.sun.enterprise.naming.SerialInitContextFactory. Das hilft aber auch nichts.

Habt ihr eine Idee?

Danke und Gruß
Veronika
 
Guten Morgen,

das hatte ich in meiner kleinen Problemwelt wohl vergessen zu erwähnen.

Ich will/muss das mit RMI machen, aber ich kriegs eben nicht hin, weil sich scheinbar die beiden Appserver nicht vertragen.

So funktioniert es, aber eben nur außerhalb des Glassfish:
Code:
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);

final Context ctx = new InitialContext(properties);

final Object ref = ctx.lookup(DieKlasse.JNDI_NAME);
dieKlasse= (DieKlasseHome) PortableRemoteObject.narrow(ref, DieKlasseHome.class);
 
Hallo,

was sind denn das für Fehler, die das wlclient.jar wirft? Kann man mit denen irgendwas anfangen, sprich rauslesen :).

Ansonsten hast du schon mal probiert die EJB's direkt über die Corba Naming Syntax anzusprechen? Dazu muss dann die sun-ejb-jar.xml angepasst werden, so dass die jndi namen über die corba naming syntax gemappt werden. Also ungefähr so
Code:
  <ejb-ref>
    <ejb-ref-name>ejbref</ejb-ref-name>
    <jndi-name>corbaname:iiop:1.2@host:7001#ejb/j2ee/interop/foo</jndi-name>
  </ejb-ref>
Wobei du halt nochmal in die Doku vom Weblogic sehen solltest, wie die URL's konkret aufgebaut werden. Ach ja und Corba musst du im Weblogic natürlich ggf. ebenfalls aktivieren.

Grüße
THMD
 
Hallihallo,

es fliegen so schöne Sachen wie "javax.ejb.EJBHome" not found....

Mit weblogic.jar würde es wahrscheinlich funktionieren, aber das kann ich ja schlecht in eine produktive Glassfish-Umgebung reinpacken.

Mittlerweile bin ich so weit, also ohne wlclient.jar:
Code:
final Properties envv = new Properties();
envv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory");
envv.put("org.omg.CORBA.ORBInitialHost", "server3");
envv.put("org.omg.CORBA.ORBInitialPort", "7001");
final InitialContext ctx = new InitialContext(envv);
final Object lookup = ctx.lookup("ejb/DieKlasse"); --> hier ist was drin
final DieKlasseHome narrow = (DieKlasseHome) PortableRemoteObject.narrow(lookup,DieKlasseHome.class);  --> aber hier kommt null zurück

Es geht auch nur mit der com.sun.jndi.cosnaming.CNCtxFactory. Bei denen kenn ich mich aber überhaupt nicht aus, also hab ich das einfach mal so akzeptiert.
Hängt das mit dem null zusammen?

Mit Corbaname etc. hab ichs noch nicht probiert. Werd ich mal angreifen.
Aber ich hab da auch noch ein IBM MQ Series Problem im Nacken, das löst sich auch nicht von allein...
 
Hallo,

...
es fliegen so schöne Sachen wie "javax.ejb.EJBHome" not found....

ok, das ist wirklich strange und nicht wirklich hilfreich.

Wenn beim PortableObject.narrow() null zurück kommt aber keinerlei Exception geworfen wird, fehlen ihm entsprechenden Stub-Klassen (glaub ich zumindest - ich kenne das Verhalten nur für für diese Situation). Wenn du die com.sun.jndi.cosnaming.CNCtxFactory benutzt, müssen imho die Stubs mittels rmic erstellt werden, da CosNaming das dynamische Nachladen nicht unterstützt (Falls das der Weblogic überhaupt unterstützt -> hab mit dem nicht oft gearbeitet).

Also einmal den rmic auf alle Home- und RemoteInterfaces laufen lassen, in den Classpath der Anwendung auf den Glassfish packen und dann sollte zumindest etwas mehr kommen.

Grüße
THMD
 

Neue Beiträge

Zurück