2012-07-19 9 views
5

私は、UI層(WARモジュールを含む)とビジネス層(EJBを含む)の2つのEARに配置されたJava Webアプリケーションを持っています。 EJBモジュール)。どちらの層もWebSphere Application Server 7にデプロイされます。これらの層は、EJB 3.0のステートレス・セッションBeanを介して接続されます。 BeanはJNDI経由で参照されます。EJBリモートメソッドの直列化UIDが一致しません - java.util.dateとDBTimestamp

私たちは永続性のためにHibernateを使用し、DB2データベースを使用します。

リモートEJB呼び出しが返された場合、次のエラーがクライアント側で発生しますオブジェクトに

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 

java.util.Dateフィールドが延びjava.sql.Timestampを拡張com.ibm.db2.jcc.DBTimestampフィールドとして休止状態から返されるjava.util.Datejava.util.Dateのサブクラスであり、シリアライズ可能なので、これは処理されるべきではありませんか?

JVMバージョンまたはDBTimestampクラスのバージョンがWeb層とビジネス層のWASサーバーで異なると思われるより多くの経験者と話しました。両方のサーバーには、同じJVM、WAS、およびJARバージョンがあります。

ローカルWAS 7サーバーもあり、両方の層が同じサーバーに配置されています。 EJBは、localhostへのJNDI呼び出しを介してリモートで解決されます。アプリケーションはローカルサーバー上で正常に動作します。私が知っている唯一の違いは、WASの異なるマイクロバージョンと、両方のティアを同じサーバーに配置することです。

問題の原因は何ですか? DBTimestampクラスがWeb層で見つからないか、クラスのバージョンが異なっていますか?それとも、多形性に問題があるのでしょうか、それとも全く別のものですか?

答えとは別に、試してみるデバッグのアドバイスもありがとうございます。私はアイデアがありません。

答えて

2

私は、Web層のEARに関連するDB2ドライバJARをパッケージ化することによって問題を解決することができました。

この問題の原因は、クラスがWeb層のクラスパスで使用できなかったためです。 なぜ環境が利用できないのかを調べるために環境の設定を調べる必要がありますが、少なくとも問題は明らかです。

関連する問題