2011-12-21 2 views
1

EclipseでAxis2 Webサービスを開発すると、Eclipseが自動的にAxis2のlibフォルダから新しいプロジェクトのlibフォルダにクラスをコピーしていることに気付きました。ただし、Axis2のlibフォルダのすべてのクラスがコピーされているわけではありません。興味深いことに、Webサービスは、Axis2のjarファイルがコピーされていない場合でも、Eclipse経由でTomcatにデプロイしても問題なく実行されます。また、Tomcatの一時ファイルを見ると、Webサービスのmodules.listにリストされているモジュールのjarファイルが生成されているようです。EclipseはすべてのAxis2 jarsをインポートしませんが、プロジェクトはまだTomcat上で実行されますか?

これで何が起こっているのか誰かが教えてくれますか? EclipseがAxis2のすべてのjarファイルをコピーしないのはなぜですか? Axis2の他のjarファイルがなくてもWebサービスをTomcatで実行できるのはなぜですか?それらの一時ファイルは何ですか?いつ、なぜそれが生成されていますか?

WebSphereで同じプロジェクトを実行しようとしましたが、JarsがないためClassDefNotFound例外が発生します。私の問題は、EclipseでコピーされなかったすべてのAxis2 jarファイルを自分のプロジェクトにコピーしたときに解決されました。しかし、私はTomcatがそれらのジャーを使わなくても私のプロジェクトを動かすことができるので私の解決策には満足できません。私のソリューションは本当に適切なソリューションですか?または、構成設定が欠落していますか?

これは単に明確化のためである:

私のWebサービスはすでにAxis2の中で実行されています。私のクラスロードポリシーはPARENT_LASTに設定されています。 WebSphereは独自のAxis2構成を持っているので、WebSphereがプロジェクト自体からAxis2を使用するように、クラス・ローディング・ポリシーをPARENT_LASTに設定する必要があります。クラスローディングポリシーを設定する以外に、WebサービスをWebSphere上で動作させるために何かをしました。私は上記のことを説明します。なぜ私はそのような方法を取らなければならないのでしょうか?

答えて

1

WebSphereには、JAX-WS用のJava EEサーバー仕様の一部として独自のaxis2構成があります。クラスロードポリシーをPARENT_LASTに変更し、問題が解決するかどうかを確認してください。

編集: 元の記事ではすでに述べているとおり、WebSphereは標準Java JAX-WS Webサービスをサポートするバージョンに応じてJava EEサーバーです。実際にWebサービスは標準JDKの一部となりました。

Introduction to JAX-WSまたはbuilding web servicesのようにJAX-WSを使用する場合は、Webサービスを実行するためのサードパーティライブラリを追加する必要はありません。 axis2のような非JDK実装を使用するとすぐに、アプリケーションとパッケージ化する必要があります。

IBMは軸2をWAS/JDKにパックするだけでなく、変更しました。私はTomcatが何を提供しているのかは分かりませんが、JAX-WSを使用している限り、問題はありません。 JAX-WSでは、org.apache.axisパッケージを直接インポートすることはありません。これらのインポートを使用する場合は、ライブラリを提供し、ライブラリがロードされていることを確認する必要があります。

+0

私はすでに彼に言いました(http://stackoverflow.com/questions/8502240/module-is-not-valid-when-deploying-an-axis2-web-service-on-websphereを参照)。聞こえません... –

+0

@ AndreasVeithen:WebSphereには独自の設定があることはわかっています。あなたが答えたという質問をするまでに、私のクラスロードポリシーはすでにPARENT_LASTに設定されています。私のクラスローディング方針が既にPARENT_LASTに設定されていても、私のWebサービスはまだ動作していないので、私は質問を投稿したのです。とにかく、私のwebserviceは既に働いていて、あなたのソリューションは私の問題の解決策ではありません。自分の質問に答えを掲載しました。たぶんあなたはそれをまだチェックしていないかもしれません。そして、私の現在の問題はそれを解決する方法ではありません。 – Arci

+0

@Udo開催:あなたの返事に感謝しますが、私の質問はそれを解決する方法ではありません。私はすでにAxis2でWebサービスを実行できました。私のアプローチは私のポストに示されました。私の疑問は、Axis2 WebサービスをWebSphere上で動作させるためにはなぜそうしたアプローチが必要なのかということです。クラスローディング方針に関するものではありません。 – Arci

関連する問題