我已获得第三方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()方法中的一个缓存值?
答案 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>
我希望这有助于在这个问题上提出一些启示或进一步的想法。
您可能还想检查您部署的内容是否正常。这可能根本不是客户端生成的问题。毕竟它说服务器错误。检查服务器上的日志文件是否存在堆栈跟踪,可能有线索。