读书人

axis2,这是什么东东:namespace mismat

发布时间: 2012-08-10 12:19:33 作者: rapoo

axis2,这是什么错误:namespace mismatch
我写了一个调用sql server的java文件,生成了web service放在了axis2\web-inf\services目录下:

-AgriNewsService
--dbfolder
----AgriNewsService.class,News.class
--lib
--meta-inf
----services.xml

其中services.xml的内容如下:

<service name="AgriNewsService" scope="application">
<description>
AgriNews Sample Service
</description>
<messageReceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">
dbfolder.AgriNewsService
</parameter>
</service>

我在客户端调用的代码如下:

String endpoint="http://localhost:8080/axis2/services/AgriNewsService";

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(endpoint);

call.setOperationName("searchInfo");

String result = (String)call.invoke(new Object[]{"牛"});

其中函数searchInfo参数是string,返回值也是string.要读取数据库.

在执行是出现下列错误:
Eclipse的console中输出:namespace mismatch require http://dbfolder found none

服务器端tomcat输出:

[ERROR] Exception occurred while trying to invoke service method searchInfo
org.apache.axis2.AxisFault: namespace mismatch require http://dbfolder found none

at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.jav
a:172)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic
(RPCMessageReceiver.java:98)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusines
sLogic(AbstractInOutMessageReceiver.java:40)

不知道为什么?我用同样的代码调用axis1的服务就没有错误,

请各位指点一二,是服务器端错误,还是客户端有问题??????????



[解决办法]
我用同样的代码调用axis1的服务就没有错误,

建议你看看1/2的区别,特别是命名空间部分。
[解决办法]
axis1和axis2完全不同,他的架构完全不同,现在Axis已停止更新的。去官方网站看看
[解决办法]
<messageReceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>

我没做过你这个,但这几天在看这方面的书。我觉得以上部分可能有问题。
mep="http://www.w3.org/2004/08/wsdl/in-only" 这个应该表示消息的单向传递 mep="http://www.w3.org/2004/08/wsdl/in-out" 而这个才是表示的请求调用 。
你把消息的单向传递的这个注释掉再试看看。

以上全是我的猜测,你可以试一下。
[解决办法]
mep="http://www.w3.org/2004/08/wsdl/in-only" 这个应该表示消息的单向传递

mep="http://www.w3.org/2004/08/wsdl/in-out" 而这个才是表示的请求响应 。

读书人网 >J2EE开发

热点推荐