Problem mit meiner EJB 3.0 Anwendung!

thweigand

Grünschnabel
Hallo,

ich hoffe es kann mir jemand mit meinem Problem helfen, den ich komme nicht mehr weiter, ich benutze jboss 4.2.0 mit eclipse 3.2 und WTP 1.5.3.

Ich bin am entwickeln eines Online Banking Systems.

Ich habe jetzt erst mal ein paar Entity Beans angelegt und eine Session Bean und versucht mittels einem Client auf die Session Bean zuzugreifen, das funktioniert auch soweit nur wenn ich dann folgende Zeilen hinzufüge bekomme ich folgende Fehlermeldungen:

liste = bankverwaltung.ListenallerBanken();
System.out.println("Wir haben " + liste.size() + " Banken!");

Fehlermeldungen:
Exception in thread "main" java.lang.NoClassDefFoundError: antlr/RecognitionException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getDeclaredMethod(Unknown Source)
at java.io_ObjectStreamClass.getPrivateMethod(Unknown Source)
at java.io_ObjectStreamClass.access$1700(Unknown Source)
at java.io_ObjectStreamClass$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.io_ObjectStreamClass.<init>(Unknown Source)
at java.io_ObjectStreamClass.lookup(Unknown Source)
at java.io_ObjectStreamClass.initNonProxy(Unknown Source)
at java.io_ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io_ObjectInputStream.readClassDesc(Unknown Source)
at java.io_ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io_ObjectInputStream.readObject0(Unknown Source)
at java.io_ObjectInputStream.defaultReadFields(Unknown Source)
at java.io_ObjectInputStream.readSerialData(Unknown Source)
at java.io_ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io_ObjectInputStream.readObject0(Unknown Source)
at java.io_ObjectInputStream.defaultReadFields(Unknown Source)
at java.io_ObjectInputStream.readSerialData(Unknown Source)
at java.io_ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io_ObjectInputStream.readObject0(Unknown Source)
at java.io_ObjectInputStream.defaultReadFields(Unknown Source)
at java.io_ObjectInputStream.readSerialData(Unknown Source)
at java.io_ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io_ObjectInputStream.readObject0(Unknown Source)
at java.io_ObjectInputStream.readObject(Unknown Source)
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObjectVersion2_2(JavaSerializationManager.java:239)
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:133)
at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:120)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedRead(MicroSocketClientInvoker.java:943)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:584)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1550)
at org.jboss.remoting.Client.invoke(Client.java:530)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:103)
at $Proxy1.ListenallerBanken(Unknown Source)
at ob.client.BankClient.main(BankClient.java:44)

Meine Session Bean sieht so aus:

@Stateless
public class BankVerwaltungBean implements BankVerwaltungRemote
{
@PersistenceContext(unitName="onlineBankingPersistenceUnit")
private EntityManager manager;

public BankVerwaltungBean()
{

}

@SuppressWarnings("unchecked")
public List<BankBean> ListenallerBanken()
{
System.out.println("Test 1");
// TODO Auto-generated method stub
List<BankBean> erg = null;
Query query = manager.createQuery("SELECT c from Bank AS c");
System.out.println("Test 2");
erg = (List<BankBean>) query.getResultList();
System.out.println("Test 3");
return erg;
}

public BankBean SucheBank(Integer blz)
{
// TODO Auto-generated method stub
BankBean bean = null;
bean = (BankBean) manager.find(BankBean.class, blz);

return bean;
}

public void neueBankAnlegen(Integer blz, String name, String strasse, String ort, String plz, String email,
String telefon, String fax)
{
// TODO Auto-generated method stub
BankBean bank = new BankBean(blz, name, strasse, ort, plz, email, telefon, fax);
UserBean user = new UserBean();
user.setFirstName("admin");
user.setLastName("admin");
user.setBank(bank);
user.setEMail("admin@sparkasse.de");
user.setLogin("admin");
user.setOrt("ort");
user.setPassword("password");
user.setPlz("55560");
user.setStrasse("strasse");
user.setTelefon("0671123456");
bank.getUsers().add(user);
manager.persist(bank);

}

}
danke im voraus
Thomas
 
Hallo !

Ich denke, Du steckst in der gleichen Misere, wie ich auch .
Das Problem ist, dass der ClassLoader der beim Start des Plugins verwendet wird, nicht der gleiche ist, wie der, der zum Deserialisieren der übertragenen Bean verwendet wird.
Da aber die Klassen zweier verschiedener Classloader per Definition nicht ineinander castbar sind, bekommst Du die ClassCastException auch, wenn rein optisch alles übereinstimmt.

Das Problem ist durch Googeln in dutzenden von Varianten zu finden,
aber eine echte Lösung habe ich leider noch nicht auftreiben können.
Und ich suche und probiere inzwischen schon ein paar Tage daran herum.

Ich kann zwar nicht glauben, dass so ein extrem grundlegendes Problem nicht lösbar ist :suspekt:,
aber so langsam gehen mir die Ideen aus.

Für erbauliche (und konstruktive) Vorschläge wäre ich wirklich dankbar.

Werner

PS: Sorry, dass ich keine Lösung habe :confused:
 
Zurück