java - JADE - 代理托管 Web 服务 (wsdl)

标签 java wsdl agents-jade agents

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

不幸的是,代理打开的端口对系统不可见。我正在使用代码在本地主机上打开端口 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 服务?

提前致谢, 马丁

最佳答案

我之前也遇到过同样的问题。发生这种情况可能是由于两件事。

  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。因此,请确保该端口空闲并且对连接开放。

关于java - JADE - 代理托管 Web 服务 (wsdl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24631027/

相关文章:

java - Java 中的套接字最佳实践

java - eclipse jdt 从命令行导入项目

xml - 如何使 xsd 元素扩展另一个

java - 加载 WSDL 时出现 SoapUI "failed to load url"错误

java - 从非 JADE 应用程序与 JADE 通信

java - 访问 JADE 中每个代理的对象

java - 从 Python 调用 java 程序(带参数)并将结果返回给 Python

java wsdl 哪些 wsdl 元素被解析为 java 类?

Java jade 连接数据库

java - 如何检查 double 的小数部分是否包含特定数字?