2013-01-07 151 views
-1

SOAP响应我在WSDL中的SOAP地址位置如下"<soap:address location="http://localhost:8080/rpc/soap/helloworldsoap"/>"获取从SOAP对象在web服务

在我的web服务方法,我有以下路径。

@HttpResource(location="/{name}") 

我想获得SOAP响应对象。

我试过下面的url。

的http://本地主机:8080/RPC/SOAP/helloworldsoap/ABCD

WSDL

<?xml version='1.0' encoding='UTF-8'?> 

<wsdl:definitions name="HelloWorldImplService" targetNamespace="some name space" xmlns:ns1="http://test.com/webservices" xmlns:ns2="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="some name space" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <wsdl:import location="http://localhost:8080/rpc/soap/helloworldsoap?wsdl=HelloWorld.wsdl" namespace="http://test.com/webservices"> 
    </wsdl:import> 
    <wsdl:binding name="HelloWorldImplServiceSoapBinding" type="ns1:HelloWorld"> 
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="getHelloWorldAsString"> 
     <soap:operation soapAction="" style="rpc" /> 
     <wsdl:input name="getHelloWorldAsString"> 
     <soap:body namespace="http://test.com/webservices" use="literal" /> 
     </wsdl:input> 
     <wsdl:output name="getHelloWorldAsStringResponse"> 
     <soap:body namespace="http://test.com/webservices" use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="HelloWorldImplService"> 
    <wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort"> 
     <soap:address location="http://localhost:8080/rpc/soap/helloworldsoap" /> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

SOAP:

<soap:Envelope> 
     <soap:Body> 
     <soap:Fault> 
     <faultcode>soap:Server</faultcode> 
     <faultstring>No such operation: (HTTP GET PATH_INFO: /soap/helloworldsoap)  
     </faultstring> 
    </soap:Fault> 
    </soap:Body> 
    </soap:Envelope> 

但我没有得到响应对象。

任何人都可以告诉我如何实现这一点。

在此先感谢。

回答

0

我很困惑我们是否可以使用SOAP的资源位置。对于REST,它可以保持良好, 也可以从您的错误中发现,它在服务器端(您的输入保持良好)也会出现错误,这也与位置有关。

尝试一些像这样的事情......

删除资源的位置,使用@WebMethod。

发布您的接口定义和SOAP输入。

实施例:

接口:

@WebService 
public interface Service { 

public Address validate(Address address); 

@WebMethod 
public String sayHi(
    @WebParam(mode = WebParam.Mode.IN) 
    String msg); 
} 

实现:

package com.example; 

进口javax.jws.WebService;

@WebService(endpointInterface = "com.example.AddressService") 
public class AddressServiceImpl implements AddressService { 

@Override 
public Address validateAdress(Address address) { 
    return address; 
    } 

    @Override 
    public String sayHi(String msg) { 
     return "Vinay"; 
    } 
} 

希望的例子有助于

0

你没有提供太多的信息。但尝试

远程登录到本地主机8080,看服务是否正在运行

如果再卷曲使用来自命令行来检查WSDL实际可用。

+0

@戴夫..感谢您的答复。该服务正在运行。添加wsdl和其他文件。请看一看 – Patan