我正在学习WebServices(Axis2)
我使用的是Jboss EAP7.0、eclipse_mars和JDK8以及最新的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);
}
}
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)
尝试将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更新为http://www.w3.org/ns/wsdl/in-out
尝试在service.xml中添加操作标记,如webapp中嵌入的用于Axis2的简单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;
}
}
我已经使用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>
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>
我也面临这个问题,我解决了。
在服务文件中执行此路径:
WebContent--> WEB-INF--> services--> ProjectName--> META-INF--> sevices.xml
之后,更改以下代码:
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
http://www.w3.org/ns/wsdl/in-out
将axis2从1.6.2升级到1.7.0后,出现以下异常: “ServiceClass对象不以以下形式实现所需的方法:OMElement” 不同的是命名空间以前是“Axis2ns2”,现在是“nsomzdg”。不知道这是从哪里来的..而且,我并不是通过调用ws restful来获取所有参数,而是只获取第一个参数...
我是大学里的一个新手Java程序员。今天我发现了一些东西,打破了我关于Java语法如何工作的一个概念。 在ArrayList类中找不到方法stream(),但它可能看起来好像在那里。当我将鼠标移到Eclipse中的-方法上时,它表示这是集合的一部分,但我在其在线文档中的任何地方都找不到方法。 如果方法不是我调用它的类的一部分,为什么它可以调用它?
问题内容: 我的用户库具有以下用于注册的代码 在我的mongooes模式中,我实现了中间件 得到以下问题 我的问题是:: 如何解决这个问题? 如何从mongooes中间件捕获错误到我的lib函数(捕获)? 问题答案: 似乎您没有使用Bluebird,但使用了mongoose promises(mpromise),它没有方法。 您可以通过解决此问题 在确定模型后使用, 使用投猫鼬承诺变成一个蓝鸟
我面临的错误是java.lang.IllegalArgumentException:Java8日期/时间类型默认情况下不支持:添加模块com.fasterxml.jackson.datatype: jackson-datatype-jsr310启用处理,要解决这个问题,我已经包含了上面提到的依赖项,并且还在对象映射器中进行了更改以注册(新的javaTimeModule()),它在进行一些更改后正在
问题内容: 我可以在HTML表单中使用PUT方法将数据从表单发送到服务器吗? 问题答案: XHTML 1.x表单仅支持GET和POST。GET和POST是“ method”属性的唯一允许值。