axis 动态发布报错 The arguments do not match the signature 而后卡死

在使用Axis进行webservice动态发布时遇到异常,导致服务无法访问。错误信息显示方法参数不匹配。经测试,当并发达到20时,Tomcat会卡死并持续报错。解决办法是改用静态发布方式,创建server-config.wsdd文件,配置服务和映射。静态发布后,服务可以通过http://localhost:9090/axis/services/myService正常访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司用到webservice简单学习了一下axis的动态发布就直接用上了,运行过程中经常出现如下错误,过后webservice无法访问,只有重启tomcat。

 Tried to invoke method public java.lang.String CenterService.test(java.lang.String) with arguments java.lang.String.  The arguments do not match the signature.
java.lang.IllegalArgumentException: java.lang.ClassCastException@7040e7
 at sun.reflect.GeneratedMethodAccessor125.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
 at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
 at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
 at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
 at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
 at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
 at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
 at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
 at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
 at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
 at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
 at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:833)
 at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
 at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
 at java.lang.Thread.run(Thread.java:595)

 

测试发现如果axis采用动态发布(即用jws的方式)用jmeter加压到并发为20,重启tomcat,系统立即卡死,不断报错。

解决的方法是采用静态方式发布:即在WEB-INF中添加server-config.wsdd,内容如下:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>    
   <service name="myService" provider="java:RPC">
        <parameter name="className" value="com.casit.Test"/>
        <parameter name="allowedMethods" value="test"/>
    </service> 
<transport name="http">
<requestFlow>
    <handler type="URLMapper"/>
</requestFlow>
</transport>
</deployment>

修改红色部分一看就明白哈,我不多说

而后通过地址:http://localhost:9090/axis/services/myService访问这个webservice

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值