【问题标题】:Publishing a WS with Jax-WS Endpoint使用 Jax-WS 端点发布 WS
【发布时间】:2010-09-09 21:07:26
【问题描述】:

我构建了一个最小的 Web 服务并使用 javax.xml.ws.Endpoint 发布它。 如果我尝试在 http://localhost:1234/AddService?wsdl 工作正常。

尝试通过http://192.168.0.133:1234/AddService?wsdl 接收它,我没有收到任何东西。 这个地址和localhost一样。

是否可以在不提供地址的情况下发布网络服务?

package test;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class AddService {

    @WebMethod
    public int add(int a, int b){
        return a+b;
    }

    public static void main(String[] args ){
        Endpoint.publish("http://localhost:1234/AddService", new AddService());
    }
}

把代码改成

Endpoint.publish("http://192.168.0.133:1234/AddService", new AddService());

在 IP 地址上获取 wsdl,但在 localhost 上没有。

难道不能只定义端口吗?

【问题讨论】:

    标签: java web-services jax-ws endpoint


    【解决方案1】:

    您可以尝试在 0.0.0.0 上发布它吗?

    【讨论】:

    • 这行得通。 localhost、0.0.0.0 和 192.168.0.133 让我获得了 wsdl。但是为什么不呢,在 localhost 或其他 ip 上发布时。
    • 很高兴听到它有效。 localhost 是 ip 127.0.0.1 ,并且 Endpoint.publish (显然)仅绑定到提供的地址。使用 0.0.0.0,您可以告诉它“监听”到任何 IP 地址(与您的计算机相关联)的传入连接。仅绑定到特定的 IP 地址可能是一个方便的功能,例如如果您希望您的服务仅可用于某个子网...
    • 绝招。这是官方支持还是只是一个方便的副作用?
    • 这是一种“官方方式”,但它为什么起作用是ipv4规范的问题;检查en.wikipedia.org/wiki/IPv4 或有关此主题的stackoverflow 问题:stackoverflow.com/search?q=0.0.0.0
    • IPv6 的等价物是什么?
    【解决方案2】:

    这是我的代码:

    Endpoint.publish("http://localhost:8080", new ServiceController());

    它说地址的路径应该以/开头

    【讨论】:

    • 这正是 OP 正在尝试的,请阅读问题,不要随意发布无效的内容。
    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 2012-07-09
    • 1970-01-01
    • 2011-10-20
    • 2021-12-05
    相关资源
    最近更新 更多