1

我正在构建一个利用 JADE 代理执行某些任务的系统。在一种情况下,其中一个代理需要托管 Web 服务以与移动应用程序通信。

不幸的是,代理打开的端口对系统不可见。我正在使用代码在 localhost 上打开端口 9191:

    Endpoint.publish("http://" + Inet4Address.getLocalHost().getHostAddress()":9191/QrReceiver", qr);

这个 getLocalHost() 例程返回 127.0.1.1(不是 localhost),但是当我强制 ip 为 127.0.0.1 时,我可以访问 wsdl 文件

    http://localhost:9191/QrReceiver?wsdl 

但我无法使用任何其他设备访问此端口上的任何内容。此外,portscanner 实用程序没有找到此端口(但确实找到了 JADE 代理(和容器)用于设备间通信的端口 1099 和 7778)。

如何使用 JADE 代理来托管基于 wsdl 的 Web 服务?

在此先感谢,马丁

4

1 回答 1

1

我以前有同样的问题。这可能是因为两件事。

  1. Inet4Address.getLocalHost().getHostAddress()方法返回您的localhost地址。也就是说127.0.0.1,您的服务是在本地托管的,并且仅对您的本地主机可见。它无法通过网络访问。

    如果您使用的是静态 IP 地址,例如192.168.1.1. 然后将其作为 服务端点Endpoint.publish("http://192.168.1.1:9191/QrReceiver", qr);,无需动态获取本地 IP。然后,您将能够通过网络访问它。

  2. 可能您的防火墙可能会阻止该端口9191。因此,请确保该端口是空闲的并且对连接开放。

于 2014-10-11T13:14:58.100 回答