3

Axis Webサービスのカスタム暗号化用に、サードパーティのwsdlとデプロイメント記述子などが提供されています。私はWSDL2Javaを使用してJavaクラスを生成しましたが、それはすべてかなりうまく機能しています...ある程度まで。数分間隔でメソッドを呼び出すと、メソッドは正しく機能し、有効なデータを返します。しかし、(必要に応じて)それらをすばやく連続して呼び出すと、(以下の)単純な古いサーバーエラーが発生します。

axisFaultの障害コードと詳細を出力すると、次のようになります。-

class org.apache.axis.AxisFault Fault Code = {http://xml.apache.org/axis/} Server Fault Reason = Server Error Fault String = Server Error Fault Details = [Lorg.w3c.dom.Element; @ 2d4ba772 [org.apache.axisのorg.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:473)のサーバーエラー。org.apache.axisのorg.apache.axis.server.AxisServer.invoke(AxisServer.java:281)。 transport.http.AxisServlet.doPost(AxisServlet.java:699)at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java: 327)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)atorg.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:175)at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:241)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:580)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447)at java.lang.Thread.run(Thread.java:595)、サードパーティホスト名org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)のconnector.CoyoteAdapter.service(CoyoteAdapter.java:241)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java: 580)org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447)at java.lang.Thread.run(Thread.java:595)、サードパーティホスト名org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)のconnector.CoyoteAdapter.service(CoyoteAdapter.java:241)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java: 580)org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447)at java.lang.Thread.run(Thread.java:595)、サードパーティホスト名

誰か助けてもらえますか?私は私の知恵の終わりにいます..それはタイミング/キャッシングの問題でしょうか?おそらく、WSDL2JAVAツールが作成するcreateCall()メソッドのキャッシュ値の1つですか?

4

1 に答える 1

0

Ant ビルド スクリプトを使用して軸クライアントを生成する方法は次のとおりです。

<java classname="org.apache.axis.wsdl.WSDL2Java" fork="true" failonerror="true" classpathref="classpath.path">
    <arg value="-v"/>
    <arg value="-o"/>
    <arg file="tmp/src"/>
    <arg value="-p"/>
    <arg value="com.your.package"/>
    <arg value="${server.url}/${servicename}?wsdl"/>
</java>

たぶん、パラメータの奇妙な組み合わせを使用していますか? それらをチェックしましたか?上記は、私が覚えている限り、軸1.4用です。

2.0 または 1.4 のどのバージョンを使用していますか? 2.0でこれを正しく行うには、かなりの時間がかかりました。mvn での動作は次のとおりです。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>axistools-maven-plugin</artifactId>
    <version>1.3</version>
    <configuration>
        <outputDirectory>${project.build.directory}/generated/main/java</outputDirectory>
        <urls>
            <url>http://yourserver:yourport/YourService?wsdl</url>
        </urls>
        <packageSpace>com.your.package</packageSpace>
        <serverSide>false</serverSide>
        <subPackageByFileName>false</subPackageByFileName>
        <wrapArrays>false</wrapArrays>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

これが、この問題に関するいくつかの光やさらなるアイデアをもたらすのに役立つことを願っています.

また、展開したものが正しく機能しているかどうかを確認することもできます。これは、クライアントの世代の問題ではない可能性があります。結局、サーバーエラーと表示されます。サーバー上のログファイルでスタックトレースを確認してください。そこに手がかりがあるかもしれません。

于 2011-03-15T15:23:10.563 に答える