为什么TCP/IP监视器不会在eclipse中捕获soap消息

3 java eclipse soap web-services jax-ws

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

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

我的出版商

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

我的客户

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");
    }
Run Code Online (Sandbox Code Playgroud)

当我在Console中调用客户端时,我看到了

------->>  Call Started
Hello, Welcom to jax-ws friend !!!
------->>  Call Ended
Run Code Online (Sandbox Code Playgroud)

因此它是工作服务.

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

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

我做错了什么?

请帮忙)

Nic*_*lla 5

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

http://localhost:8080/WS/Greeting
Run Code Online (Sandbox Code Playgroud)

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

http://localhost:8081/WS/Greeting
Run Code Online (Sandbox Code Playgroud)

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

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

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

      ((BindingProvider) greeting).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,"http://localhost:8080/WS/Greeting");
    
    Run Code Online (Sandbox Code Playgroud)