4

Java EE 6 プラットフォームでエンタープライズ アプリケーションを開発しています。IDE は NetBeans 7.2 で、アプリケーション サーバーは GlassFish 3.1.2.2 です。

ビジネス ロジックは、ライブラリ (具体的には HBase-RDF) を使用して、そのコアでいくつかのタスクを処理する必要があります。元の HBase-RDF コードは多くのパッケージに依存しており、それらの新しいバージョンはすでに Glassfish で使用されていると思います。たとえば、javax.xml、javax.activation、com.sun.jersey などのパッケージが既に jar ファイルに含まれていることがわかります。

私は過去にそれほど重要ではない Java EE アプリケーションを開発したことがありますが、これに関連するかどうかに関係なく、アプリケーションの開発で数え切れないほどの頭痛の種に直面しました。何十ものスタックオーバーフローの質問やバグ追跡システムなど、Web で読んだことから、元のライブラリ (HBase-RDF) をすべての依存関係と共にパッケージ化できれば、これらの頭痛の種のいくつかを取り除くことができると思います。 jar ファイル全体を削除し、それらがプロジェクトに直接含まれないようにします。

私の最初の質問は、問題の原因について私は正しいですか? これが私の問題の原因でしょうか? クラスパスから JAXB および Xerces jar を削除することで問題の 1 つを既に解決しており、幸いなことに、Hbase-RDF のこれらの部分を使用する必要があるため、答えはイエスだと思います。

2 番目の質問は、前の質問について私が正しい場合、どうすればこれを行うことができるかということです。これらのライブラリを 1 つのライブラリ (Hbase-RDF) だけが使用するように制限するにはどうすればよいですか?


注: ビルド プロセスが問題なく終了したと言うのは役に立つかもしれませんが、プロジェクトのデプロイと実行に関して 2 つの大きな問題に直面しています。まず、アプリケーションは、netbeans と一緒にインストールされているローカルの Glassfish インスタンスに正常にデプロイされますが、同じ .ear パッケージが別の同じバージョンのインスタンスにデプロイできず、server.log ファイルには問題の原因を見つけるのに役立つ情報が含まれていません。 . エラーはこれと非常によく似ていますが、提案された解決策は機能しません。2番目の問題はこれと非常によく似ており、提案されたすべての解決策を試してみましたが、うまくいきませんでした。Web モジュール内の Web サービスは EJB を正常に呼び出しますが、JSF facelet index.html の実行に失敗するのは興味深いことです。

4

1 に答える 1

0

あなたの懸念がビルド プロセスに関するものなのか、デプロイに関するものなのか、よくわかりません。
展開のために、別のバージョンのライブラリに依存するライブラリがある場合、既に展開している場合、これに頼らずに作業することは不可能ですOSGi(同じクラスローダーを持つライブラリの両方のバージョンを持つことはできません)。
依存ライブラリを完全に削除して、新しいバージョンのみを使用しようとしましたか?
あなたの唯一の依存関係が forJAXBxmlJava のパッケージである場合、あなたは幸運かもしれません

于 2012-08-29T20:55:33.300 に答える