java - 在 Bluemix 服务器上发布端点

标签 java web-services jax-ws ibm-cloud

我正在尝试在 Bluemix 服务器上发布 Web 服务端点。当我尝试调用方法时:

public class HelloWorldPublisher{

    public static void main(String[] args) {
        Endpoint.publish("http://myapp.eu-gb.mybluemix.net/ws/hello", new HelloWorldImpl());
    }
}

或类似:

public class HelloWorldPublisher{

    public static void main(String[] args) {
        Endpoint.publish("/ws/hello", new HelloWorldImpl());
        }
}

并尝试访问 wsdl 文档,我收到 Error 404: java.io.FileNotFoundException: SRVE0190E: File not found:/ws/hello

顺便说一下,我正在关注this tutorial 。 感谢您的帮助。

最佳答案

发布网络服务时您应该使用http://<host>:<port>/<path>格式。

示例:

Endpoint.publish("http://localhost:80/ws/hello", new HelloWorldImpl());

但是,当您指定localhost时,目前还不清楚您的网络服务将在哪个网络适配器上可用。如果您的服务器有 LAN 和无线网络适配器,则您的服务可能仅在这两个适配器之一上可用。

如果您知道该服务将在哪个网络地址上运行,那么您应该将其替换为特定的 IP 地址。 或者,如果您指定 0.0.0.0 ,它将在所有网络适配器上运行。

Endpoint.publish("http://0.0.0.0:80/ws/hello", new HelloWorldImpl());

我的建议是尝试使用“0.0.0.0”地址,并仔细检查端口号。

编辑:

我发现这里有一个困惑的根源。所以这里有一个更长的解释。 (如果不需要,请跳过此部分):

现在计算机有多个网络适配器。其中一些可以是虚拟的,一些是真实的物理连接。你看,我有7个。 My network adapters

当今大多数网络应用程序都是基于 TCP/IP 的(例如 FTP、HTTP、电子邮件等)TCP/IP 应用程序需要一个 IP 地址和一个端口号来托管或连接到服务。 Web 服务也不异常(exception)。您需要在 IP 地址和端口号上发布您的 Web 服务。

这就是事情变得棘手的地方。您的计算机有多个网络适配器。 因此,您的计算机很可能有多个 IP 地址。如果您只是发布服务而没有指定应使用哪个地址,那么您的 Web 服务可能只能通过一个特定的网络适配器使用。而且也有可能是错误的。

因此建议准确指定您想要托管服务的地址。例如,如果您首选的局域网适配器具有固定的 IP 地址(例如 192.168. 1.20) 然后您可以在 http://192.168.1.20:80/ws/hello 上发布您的服务。现在,您想要在哪个适配器上启动服务已经非常清楚了。

问题是并非所有计算机都有固定的 IP 地址。所以,幸运的是您还可以指定 http://localhost:80/ws/hello 。在这种情况下,您的网络服务也可用于网络上的其他计算机。除了 !!!! ...这很重要!除非您的 Web 服务是在错误的网络适配器上启动的。您会看到,因为您没有指定确切的 IP 地址,所以您的计算机将选择一个或多个网络适配器。但并不总是清楚是哪一个。可能是错误的。

所以,这将我们引向 http://0.0.0.0:80/ws/hello 这是一个特殊的IP地址。这意味着网络服务将在所有可能的网络适配器上可用(请注意,IP 地址实际上应该是 0.0.0.0 ,与此处所写的完全相同。不能用真实 IP 替换。0.0.0.0 是您需要使用的 IP。这是一个特殊的地址。)

还有什么问题吗? :)

关于java - 在 Bluemix 服务器上发布端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30543836/

相关文章:

java - 不可转换类型错误

java - 使用 JAX-WS 时,我收到多个 SLF4J 绑定(bind)警告、启动处理程序错误和 NoSuchMethodError

与 JAX-WS(部署在 WL 10.3 中)的 Java ssl/https 连接失败

web-services - 发现 REST Web 服务的参数

xml - 如何使用 Axis2 和 Rampart 在 SOAP 请求中添加 MessageID

java - 当部分访问器元素通过 namespace 限定时,JAX WS Web 服务接收 null 参数

java - Spring 休息。消除 HTTP.POST 中的 json 属性

java - 在 zip 中写入(修改或添加)文件

java - 将一个存储库用于多个 Dao 是 MVVM 的最佳实践吗?

c# - VS2010 中跨多个 Web 服务的通用 DTO