-1

私のwsdlのsoapアドレスの場所は次のとおりです"<soap:address location="http://localhost:8080/rpc/soap/helloworldsoap"/>"

私のWebサービスメソッドには、次のパスがあります。

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

SOAP 応答オブジェクトを取得したい。

以下のURLを試してみました。

http://localhost: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: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>

しかし、私は応答オブジェクトを取得していません。

これを達成する方法を教えてください。

前もって感謝します。

4

2 に答える 2

0

あなたは多くの情報を与えていません。しかし、試してみてください

telnetからlocalhost8080に、サービスが実行されているかどうかを確認します

次に、コマンドラインからcurlを使用して、WSDLが実際に使用可能であることを確認します。

于 2013-01-07T07:04:50.357 に答える
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;

import 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";
    }
}

例が役立つことを願っています

于 2013-01-07T07:32:25.907 に答える