2

我正在使用 IntelliJ IDEA 8 和 Axis 设置部署在 Tomcat5.5 上的 Web 服务。生成的 wsdl 如下所示:http ://track.priskick.se/Tracker.wsdl

方法被声明为

public void storeImpressionReport(int siteId, int adId, int zoneId, int count,
                                  int excludeCount) { ... }

并暴露在网络服务中。接下来,我使用 Axis 构建客户端(也是 Java),但是由于使用参数对方法进行运行时调用0,0,0,0,0,所以我得到了这个:

Tried to invoke method public void com.xxxxx.xxxx.xxxx.xxxxx.storeImpressionReport(int,int,int,int,int) with arguments java.lang.Integer,null,null,null,null.  The arguments do not match the signature.; nested exception is: java.lang.IllegalArgumentException

将方法的参数数量减少到 1 使其工作,但这感觉像是一个非常愚蠢的限制和奇怪的行为。如果您知道这里可能出了什么问题,请帮助我 - 为什么我不能公开方法并让它们采用多个参数?

=== 更新

我现在尝试使用从 IntelliJ 生成的 wsdl 生成客户端 java,而不是使用 ?wsdl 选项调用服务。此 wsdl 保留正确的参数名称,可能是因为生成器可以访问源。现在我明白了

没有这样的操作 'siteId' AxisFault

这些是相关文件: http: //track.priskick.se/Tracker/TrackerSoapBindingStub.java http://track.priskick.se/Tracker/TrackerServiceTestCase.java http://track.priskick.se/Tracker/Tracker_PortType。 java http://track.priskick.se/Tracker/TrackerService.java http://track.priskick.se/Tracker/TrackerServiceLocator.java

用于客户端的 wsdl 位于 http://track.priskick.se/Tracker.wsdl

该服务位于 http://stage.klikki.com/services/Tracker

干杯马库斯约翰逊

4

1 回答 1

1

哦,喜悦。我将服务样式更改为 WRAPPED,这似乎解决了问题。

于 2009-11-03T23:10:35.843 回答