Incompatibles sérialisation des Uides dans les EJB Distant de la Méthode java.util.date & DBTimestamp

J'ai une application web java qui est déployé dans les deux Oreilles - un pour la couche utilisateur (contient une GUERRE module) et un pour la couche d'entreprise (contient un module EJB). Les deux niveaux sont déployés pour WebSphere Application Server 7. Les niveaux sont connectés via des EJB 3.0 beans de session sans état. Les haricots sont regardé via JNDI.

Nous utiliser Hibernate pour la persistance, et une base de données DB2.

Lorsque la distance EJB appel est renvoyé, l'erreur suivante se produit sur le côté client:

java.rmi.MarshalException: CORBA MARSHAL 0x4942f896 No; nested exception is: 
    org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched serialization UIDs : Source (RepId RMI:java.util.Date:AC117E28FE36587A:686A81014B597419) = 686A81014B597419 whereas Target (RepId RMI:com.ibm.db2.jcc.DBTimestamp:AA774DBE96ECCE99:7AFCE1FB570D419C) = 7AFCE1FB570D419C  vmcid: IBM  minor code: 896  completed: No

La java.util.Date champ sur l'objet est retourné à partir d'Hiberner comme une com.ibm.db2.jcc.DBTimestamp domaine, qui s'étend java.sql.Timestamp qui s'étend java.util.Date. Comme c'est une sous-classe de java.util.Date et est sérialisable, ne devrait-ce pas être traités?

J'en ai parlé à un plus d'expérience de la personne qui a dit que la cause probable est que la version de la JVM ou DBTimestamp version de la classe est différente entre le web et la couche d'entreprise ÉTAIT serveurs. Les deux serveurs ont la même JVM, a ÉTÉ, et un POT de version.

J'ai aussi un local a ÉTÉ de 7 serveur, où les deux niveaux sont déployées sur le même serveur. Les Ejb sont toujours résolu à distance, via un JNDI appel à localhost. L'application fonctionne très bien sur mon serveur local. La seule différence, je suis conscient, c'est un autre micro-version de a ÉTÉ, ainsi que le déploiement de deux niveaux sur le même serveur.

Quelle est la cause du problème? Est-ce que le DBTimestamp classe ne peut pas être trouvé sur la couche web, ou que la version de la classe est-elle différente? Ou est-ce un problème avec le polymorphisme, ou tout autre chose?

Côté d'une réponse, je voudrais aussi apprécie tous les conseils sur ce que le débogage pour essayer - je suis à court d'idées.

OriginalL'auteur J Barclay | 2012-07-19