3

我是肥皂和 jax-ws 的新手。

在阅读了很多信息后,我知道 eclipse 可以捕获肥皂消息,但我有问题。

我的出版商

public static void main(String[] args) {
        Endpoint.publish("http://localhost:8081/WS/Greeting",
                new GreetingImpl());
    }

我的老手

public static void main(String[] args) {

        GreetingImplService service = new GreetingImplService();
        Greeting greeting = service.getGreetingImplPort();
        System.out.println("------->>  Call Started");
        System.out.println(greeting.sayHello("friend !!!"));
        System.out.println("------->>  Call Ended");
    }

当我在控制台中调用客户端时,我看到

------->>  Call Started
Hello, Welcom to jax-ws friend !!!
------->>  Call Ended

因此它是工作服务。

但在 TCP|IP 监视器中,我看到空列表。

我的 TCP|IP 监视器配置 在此处输入图像描述

我做错了什么?

请帮忙)

4

1 回答 1

5

我认为问题在于您的客户端直接指向端口 8081(ws 的端口),因此 tcp/ip 监视器不起作用。由于监视器正在侦听端口 8080,因此您的客户端应使用此端点:

http://localhost:8080/WS/Greeting

TCP/IP 监视器将接收到 http 请求,然后将消息转发到

http://localhost:8081/WS/Greeting

要更改客户端使用的端点,您有两种可能性:

  • 如果客户端使用本地 wsdl 文档(例如,您在文件系统上保存了 wsdl 的副本并使用它来调用 wsimport),您可以在其中修改端点(查看 wsdl 末尾的元素服务)。service.getGreetingImplPort() 返回的存根从 wsdl 读取端点。

  • 您可以在客户端的 main 方法中使用该指令

      ((BindingProvider) greeting).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,"http://localhost:8080/WS/Greeting");
    
于 2013-11-04T22:09:16.643 回答