XML スキーマを既存の EJB プロジェクトに追加しようとしていました。JAXB は、XML スキーマを Java クラスにバインドするために使用されます。EJB がセッション中の場合、検索エンジンを使用して DTO をクロールします。
エンティティ クラス ファイルを XML スキーマにマップするための直接的な方法は見つかりませんでした。
これまでに達成できた唯一の方法は、Web サービスを作成し、xml-schema (XSD) を生成する WSDL を生成し、JAXB (xjc コマンド) を介して XSD ファイルを解析して Java クラス ファイルを作成することです。mapping-binding.xml ファイルを使用して、XML と Java クラス ファイルの両方をマップできます。
しかし、ここでも問題は、これをエンティティ クラスにマップする方法です。
これが私たちが達成したいことです:
- XML スキーマを持つ XML データ オブジェクト (これは JAXB 仕様に既に存在します)。
- エンティティ Bean は、この JAXB オブジェクトへのインターフェースを拡張するか、または持っています。
- すべての永続化機能はエンティティ Bean によって管理されます...
- エンティティ Bean には、JAXB にある XML マーシャリング機能とアンマーシャリング機能が含まれます。
- 値オブジェクトは、エンティティ Bean オブジェクトからバイナリ形式または XML 形式で取得できます。
- JSP は、値オブジェクトから XML スキーマと XML データを簡単に抽出し、XSL 変換などの操作を実行できます。
私の主張は、Entity Beans には JAXB オブジェクトとのインターフェースのための標準的な方法がないということです。
Castor が解決策になるかもしれませんが、Web サービスを実装するか、Castor JDO を使用する必要があります。
XStream は、エンティティ Bean クラス オブジェクトを呼び出して xml ファイルを生成できるコンバーター クラスを使用するため、非常に便利であることがわかりました。しかし、私は別のクラスを使用することを好みませんでしたが、既存の Bean クラスに関数を組み込みました。
この点で私を助けてもらえますか?
私が実際に達成しようとしていることをお伝えします。EJB のセッション中に呼び出され、DTO を介してクローラーを使用し、XML 形式でスナップショットを取得する検索エンジンを作成しています。検索は異なる基準で行われます。
Lucene は検索エンジン ツールの 1 つですが、独自のプロパティとファイルを使用します (スタンドアロンのように動作します)。
PHPとJavaアプリケーション(EJBレイヤー)の間で通信するためにWebサービスで使用されるDTOがすでにあります。jaxb でこれらの DTO をクローラーとして再利用して、XML のテーブルから出力を取得したかったのですが、JAXB は xml-schema を介して独自に生成されたクラスを使用するため、これを行うことができませんでした。あなたが言ったように、JAXBにBeanクラスを指示する方法をまだ見つけていません。