Probleme mit Zugriff auf SessionBeans über einen SwingClient

Status
Nicht offen für weitere Antworten.

Deadalus

Bekanntes Mitglied
Hallo.

Ich hab eine kleine Enterprise Andwendung geschrieben.

Diese bestand die ganze Zeit aus einem EJB und einem Web Container. Im Web Container findet die Interaktionssteuerung und Präsentation statt. Im EJB Container die Geschäftslogik und das Datenmanagement.
Das ganze läuft aktuell mit Glassfish als Server.

Nun wollte ich die Anwendung um einen Swing Client erweitern. Dieser soll außerhalb des Servers laufen (in einem Client Container). Momentan greife ich folgendermaßen auf meine SessionBeans zu:


Java:
InitialContext ctx  = new InitialContext();
kundenbean= (KundenFacadeRemote) ctx.lookup("KundenBean");

Einfache Methodenaufrufe funktionieren auch. z.B:
Java:
System.out.println(kundenbean.sagHallo());
Die Methode gibt einen einfachen String zurück.

Will ich aber Objekte (bzw. eine Liste Objekten) bekommen dann fliegen mir Exceptions um die Ohren. Beispiel:
Java:
List<Kunden> liste = kundenbean.getAll();
Kunden ist eine Enitity Klasse im ejb-Container.


Hier die Exception falls jemand was damit anfangen kann:
Code:
"IOP01000001: (NO_IMPLEMENT) Missing local value implementation"
org.omg.CORBA.NO_IMPLEMENT:   vmcid: OMG  minor code: 1 completed: Maybe
        at com.sun.corba.ee.impl.logging.OMGSystemException.missingLocalValueImpl(OMGSystemException.java:2769)
        at com.sun.corba.ee.impl.io.FVDCodeBaseImpl.implementation(FVDCodeBaseImpl.java:118)
        at com.sun.org.omg.SendingContext._CodeBaseImplBase._invoke(_CodeBaseImplBase.java:64)
        at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
        at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
        at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
        at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
        at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
        at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
        at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
        at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
        at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
        at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
Caused by: java.lang.ClassNotFoundException: org.hibernate.collection.PersistentBag (no security manager: RMI class loader disabled)
        at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:375)
        at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
        at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
        at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:202)
        at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:135)
        at com.sun.corba.ee.impl.util.JDKBridge.loadClassM(JDKBridge.java:202)
        at com.sun.corba.ee.impl.util.JDKBridge.loadClass(JDKBridge.java:99)
        at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.loadClass(Util.java:683)
        at com.sun.corba.ee.impl.util.RepositoryId.getClassFromType(RepositoryId.java:568)
        at com.sun.corba.ee.impl.io.ValueHandlerImpl.getClassFromType(ValueHandlerImpl.java:433)
        at com.sun.corba.ee.impl.io.FVDCodeBaseImpl.implementation(FVDCodeBaseImpl.java:112)
        ... 11 more
 
M

maki

Gast
Will ich aber Objekte (bzw. eine Liste Objekten) bekommen dann fliegen mir Exceptions um die Ohren.
Schon klar, denn...
Kunden ist eine Enitity Klasse im ejb-Container.
.. du bekommst aber keine Liste mit Kunden Objekten, sondern eine org.hibernate.collection.PersistentBag, wahrscheinlich mit Hibernate Proxies ;)
 

Deadalus

Bekanntes Mitglied
Erst mal danke für den Hinweis.

Also wenn ich das jetzt richtig verstanden habe dann ist das Problem, dass ich die Kundenobjekte noch nicht aus dem Persistenzkontext gelöst habe oder?

Sollte es dann nicht ausreichen in der Methode des SessionBeans ein
Java:
em.clear();
auszuführen? em ist hier natürlich der EntityManager.

Das scheint das Problem aber nicht zu lösen.
 
M

maki

Gast
Nein, du brauchst schon die Hibernate Libs auf der Cleintseite, sonst wird das nix.

Das andere Problem könnte sein, dass du es mit LazyInit Exceptions zu tun bekommst, vielleicht.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben