Use*_*854 6 java wsdl axis2 web-services jax-ws
我正在尝试学习Web服务(Axis2)
我使用的是Jboss EAP 7.0,eclipse_mars和JDK 8,以及最新的Axis2(axis2-1.7.4).
运行客户端代码时
package com.durgasoft.service;
public class Test {
public static void main(String[] args) throws Exception{
CalServiceStub stub = new CalServiceStub();
//Code to invoke add()
CalServiceStub.Add params =
new CalServiceStub.Add();
params.setI(13);
params.setJ(10);
CalServiceStub.AddResponse
res = stub.add(params);
int result = res.get_return();
System.out.println(result);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Exception in thread "main" org.apache.axis2.AxisFault: The ServiceClass object does not implement the required method in the following form: OMElement add(OMElement e)
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:508)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:368)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:414)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)
at com.durgasoft.service.CalServiceStub.add(CalServiceStub.java:181)
at com.durgasoft.service.Test.main(Test.java:12)
Run Code Online (Sandbox Code Playgroud)
我在StackOverFlow中查看了以下帖子:
尝试更新http://www.w3.org/2004/08/wsdl/in-only至http://www.w3.org/ns/wsdl/in-only和http://www.w3.org/ 2004/08/wsdl/in-out to http://www.w3.org/ns/wsdl/in-out
尝试在service.xml中添加操作标记,如在webapp中嵌入的Axis2的Simple axis2.xml中所述
此外,我甚至确保Axis2.xml中描述的messageReceivers和service.xml中提到的messageReceivers是相同的.我完全没想到了.如果您知道如何解决此问题,请帮助我.
我创建了这些服务,
package com.durgaSoft.service;
public class CalService {
public int add(int i, int j){
return i+j;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用eclipse wsdl生成工具来生成WSDL.生成的WSDL文件如下所示.
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://service.durgaSoft.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" targetNamespace="http://service.durgaSoft.com">
<wsdl:documentation>Please Type your service description here</wsdl:documentation>
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.durgaSoft.com">
<xs:element name="add">
<xs:complexType>
<xs:sequence>
<xs:element name="i" type="xs:int"/>
<xs:element name="j" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="addResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="addRequest">
<wsdl:part name="parameters" element="ns:add"/>
</wsdl:message>
<wsdl:message name="addResponse">
<wsdl:part name="parameters" element="ns:addResponse"/>
</wsdl:message>
<wsdl:portType name="CalServicePortType">
<wsdl:operation name="add">
<wsdl:input message="ns:addRequest" wsaw:Action="urn:add"/>
<wsdl:output message="ns:addResponse" wsaw:Action="urn:addResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CalServiceSoap11Binding" type="ns:CalServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="add">
<soap:operation soapAction="urn:add" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CalServiceSoap12Binding" type="ns:CalServicePortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="add">
<soap12:operation soapAction="urn:add" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="CalServiceHttpBinding" type="ns:CalServicePortType">
<http:binding verb="POST"/>
<wsdl:operation name="add">
<http:operation location="add"/>
<wsdl:input>
<mime:content type="application/xml" part="parameters"/>
</wsdl:input>
<wsdl:output>
<mime:content type="application/xml" part="parameters"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CalService">
<wsdl:port name="CalServiceHttpSoap11Endpoint" binding="ns:CalServiceSoap11Binding">
<soap:address location="http://localhost:8080/Axis2CalService/services/CalService.CalServiceHttpSoap11Endpoint/"/>
</wsdl:port>
<wsdl:port name="CalServiceHttpSoap12Endpoint" binding="ns:CalServiceSoap12Binding">
<soap12:address location="http://localhost:8080/Axis2CalService/services/CalService.CalServiceHttpSoap12Endpoint/"/>
</wsdl:port>
<wsdl:port name="CalServiceHttpEndpoint" binding="ns:CalServiceHttpBinding">
<http:address location="http://localhost:8080/Axis2CalService/services/CalService.CalServiceHttpEndpoint/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Run Code Online (Sandbox Code Playgroud)
ServiceXML:
<service name="CalService" >
<Description>
Please Type your service description here
</Description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<!--
<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" locked="false">com.durgaSoft.service.CalService</parameter>
</service>
Run Code Online (Sandbox Code Playgroud)
小智 1
我也面临这个问题并且我解决了。
在服务文件中继续此路径:
WebContent--> WEB-INF--> services--> ProjectName--> META-INF--> sevices.xml
Run Code Online (Sandbox Code Playgroud)
之后更改此代码:
http://www.w3.org/2004/08/wsdl/in-only
Run Code Online (Sandbox Code Playgroud)
到:
http://www.w3.org/ns/wsdl/in-only
Run Code Online (Sandbox Code Playgroud)
并改变这个:
http://www.w3.org/2004/08/wsdl/in-out
Run Code Online (Sandbox Code Playgroud)
对此:
http://www.w3.org/ns/wsdl/in-out
Run Code Online (Sandbox Code Playgroud)
因为在 axis2.xml 文件中你正在使用这个 URL。所以检查并更改它。
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |