1

セキュリティ用の城壁を備えた軸ベースの Web サービスを構築しようとしています。軸をインストールして軸内に展開するのではなく、単一の戦争を tomcat に展開することを望んでいました。(私はそれに固執していません...これは私にとってすべて非常に新しい領域なので、あなたが持っているかもしれないフィードバックを使用できます。)

私はいくつかの問題に直面しています:

  • mvn jetty:run 正常に動作します -- Web サービスを使用して、末尾に ?wsdl を付けてサービスの URL を押すことで wsdl を取得できます (例: http://localhost:8080/webservice/services/ResultService?wsdl "webservice"はこのプロジェクトの名前です)、ただし、mvn jetty:run-war は失敗します。最初に、rampart-1.4.mar と rahas-1.4.mar を WEB-INF/lib ディレクトリに手動でコピーしない限り失敗します。これが行われていない場合、jetty:run-war は利用できない城壁モジュールに関する一連の例外を生成し、上記と同じ wsdl URL をヒットすると空のページが返されます。(wsdl の適切なチャンクである必要がありますが、コンテンツはまったくありません) スタック トレースは次のとおりです

  • 生成された war の mar ファイルの場所に関係なく、Tomcat で Web サービスを適切に提供することができませんでした。ログには何も記録されず (Web アプリケーションがデプロイされたことを示す INFO のみ)、上記の URL に wsdl は提供されません。 http://localhost:8180/infoassist/services/ResultService?wsdlは何も返しません。('infoassist.war' は生成された war の名前であるため、jetty とは異なる URL です)

?wsdl で終わらない URL を照会すると、ブラウザーで軸の例外が発生します。これはおそらく問題ありません。機能的な jetty:run サーバーを実行している場合でも発生します。これまでに行ったことはすべて SOAP をテストするためだけなので、ブラウザーで「実際の」出力はまだ期待していません。ただし、軸がTomcatで使用されていることを示しているため、少なくとも戦争の依存関係のいくつかは機能しています:

org.apache.axis2.AxisFault: The service cannot be found for the
endpoint reference (EPR) /infoassist/ at
org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:65)
at org.apache.axis2.engine.Phase.invoke(Phase.java:334) at
org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251) at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:160) at
org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:135)
at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:130)
at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:838)
at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:262)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)

私はここでストローを本当に把握しています-どんな助けでも大歓迎です.もちろん、もっと多くの詳細を提供できますが、何が役立つかわかりません.

4

2 に答える 2

1

さまざまなソースからの重要な助けを借りて、私はそれを理解しました:

初め、

次の指示に従います。

ただし、axis war をビルドするときは、次の手順に従って、まずビルドを微調整して、axis2-codegen-1.5.jar がアーカイブから除外されないようにする必要があります

Axis2 サーバーのインストールで Rampart コードを使用するには、新しい axis2.war ファイルを作成する必要があります。このファイルには、追加された Rampart .jar および .mar ファイルが含まれています。ファイルの末尾近くにある行 <exclude name="axis2-codegen*.jar"/> を削除するという 1 つの変更を加えれば、webapp ディレクトリにある Ant build.xml を使用して axis2.war を作成できます。次に、Axis2 webapp ディレクトリへのコンソールを開き、ant. build.xml を実行すると、作成された axis2.war Web アプリケーションが Axis2 インストールの dist ディレクトリーにあります。

これで、axis 管理ページ (おそらくhttp://localhost:8080/axis2/axis2-admin/listModules にある) からロードされたモジュールのリストに城壁が表示されます。ただし、バイナリ配布を使用している場合は、これらのライブラリ (axis/rampart) は、コードを 1.5 と互換性のある Java クラス仕様にコンパイルすることにも注意する必要があります。私はこれを行っていなかったので、java.lang.UnsupportedClassVersionErrorエラーが発生し続けましたが、実際に何があったかを明確にするものは何もありませんでした。問題の原因 -- 私は axis2-codegen-1.5.jar を疑っていましたが、これは赤ずきんでした -- 問題は実際には、コンパイルしたクラスファイルのバイトコード バージョンにありました. これは、ディストリビューションから城壁のサンプルをビルドしたときにも発生しました。それらはソース形式で配布されており、私のデフォルトのコンパイラは Java 1.6 です。

于 2009-11-13T01:01:28.747 に答える
1

質問に続いて提案。

Q: Eclipse を使用して WSDL を生成しましたか? もしそうなら、それが Axis の正しいバージョンであることを確認しましたか?

S: Tomcat がサポートしていると思われる EAR にすべてをドロップします。EAR は、複数の WAR および JAR を格納できるディレクトリーです。

于 2009-11-12T00:27:59.977 に答える