1

perl クライアント (activePerl 5.16) からの Java エンドポイント (以下のコード) の呼び出しに問題があります。これらのコード スニペットは本 Java Web Services Up And Running からのものです。

package ch01.ts;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style=Style.RPC)
public interface TimeServer {

    @WebMethod
    String getTimeAsString();

    @WebMethod
    long getTimeAsElapsed();
}

package ch01.ts;

import java.util.Date;
import javax.jws.WebService;

@WebService(endpointInterface="ch01.ts.TimeServer")
public class TimeServerImpl implements TimeServer {

    public String getTimeAsString() {
        return new Date().toString();
    }

    public long getTimeAsElapsed() {
        return new Date().getTime();
    }
}

package ch01.ts;

import javax.xml.ws.Endpoint;

public class TimeServerPublisher {
    public static void main(String[] args) {
         Endpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl());
    }
}

そして、perl コンシューマ:

use SOAP::Lite;

my $url = 'http://127.0.0.1:9876/ts?wsdl';
my $service = SOAP::Lite->service($url);

print "\nCurrent time is: ",$service->getTimeAsString();
print "\nElapsed miliseconds from the epoch: ", $service->getTimeAsElapsed();

Web サービスを呼び出すと、次のスタック トレースが表示されます。

maj 04, 2013 10:21:40 AM com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit    handle
SEVERE: Couldn't create SOAP message. Expecting Envelope in namespace     http://schemas.xmlsoap.org/soap/envelope/, but got http://schemas.xmlsoap.org/wsdl/soap/
com.sun.xml.internal.ws.protocol.soap.VersionMismatchException: Couldn't create SOAP   message. Expecting Envelope in namespace http://schemas.xmlsoap.org/soap/envelope/, but got   http://schemas.xmlsoap.org/wsdl/soap/
at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(Unknown Source)

SOAP のバージョンが問題だと思います。上記の例は、クライアント コードを

my $service = SOAP::Lite->service($url)->soapversion('1.2');

その後、別のエラーがスローされます

com.sun.xml.internal.ws.server.UnsupportedMediaException: Unsupported Content-Type: application/soap+xml; charset=utf-8 Supported ones are: [text/xml]

エンベロープの問題またはコンテンツ タイプの処理について助けが必要です。指示、コード、その他の助けに感謝します。

4

1 に答える 1