3

我已经获得了第 3 方 wsdl 和部署描述符等,用于 Axis Web 服务的自定义加密。我使用 WSDL2Java 来生成 Java 类,并且一切都运行良好……在某种程度上。当我每隔几分钟调用这些方法时,它们会正常工作并返回有效数据。但是当我快速连续调用它们(因为我需要)时,我得到一个普通的旧服务器错误(如下)。

如果我输出axisFault故障代码和详细信息,我会得到以下信息:-

class org.apache.axis.AxisFault 故障代码 = {http://xml.apache.org/axis/}服务器故障原因 = 服务器错误故障字符串 = 服务器错误故障详细信息 = [Lorg.w3c.dom.Element;@2d4ba772 [org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 上 org.apache.axis.SOAPService.invoke(SOAPService.java:473) 的服务器错误。 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) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core 的 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)。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) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 在 org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:175) 在 org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 在 org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:241) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 在 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) , 3rdpartyhostnameconnector.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) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 在 java.lang.Thread.run(Thread.java:595) , 3rdpartyhostnameconnector.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) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 在 java.lang.Thread.run(Thread.java:595) , 3rdpartyhostname

有人可以帮忙吗?我束手无策..这可能是时间/缓存问题吗?也许是 WSDL2JAVA 工具创建的 createCall() 方法中的缓存值之一?

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 回答