Axis WSDL2Java生成代码:快速连续执行请求时出现服务器错误

时间:2011-01-16 09:15:03

标签: java axis wsdl2java

我已获得第三方wsdl和部署描述符等,用于Axis Web服务的自定义加密。我使用WSDL2Java来生成java类,它们都运行良好......直到某一点。当我相隔几分钟调用这些方法时,它们可以正常工作并返回有效数据。但是当我快速连续调用它们(因为我需要)时,我得到一个普通的旧服务器错误(下面)。

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

  

类org.apache.axis.AxisFault   故障代码= {http://xml.apache.org/axis/}Server   故障原因=服务器错误   Fault String =服务器错误   故障详情= [Lorg.w3c.dom.Element; @ 2d4ba772   [服务器错误           在org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:473)           在org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)           在org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)           在javax.servlet.http.HttpServlet.service(HttpServlet.java:637)           在org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)           在javax.servlet.http.HttpServlet.service(HttpServlet.java:717)           在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)           在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)           在org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)           在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)           在java.lang.Thread.run(Thread.java:595)      ,3rdpartyhostname

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

1 个答案:

答案 0 :(得分: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>

我希望这有助于在这个问题上提出一些启示或进一步的想法。

您可能还想检查您部署的内容是否正常。这可能根本不是客户端生成的问题。毕竟它说服务器错误。检查服务器上的日志文件是否存在堆栈跟踪,可能有线索。