Я создаю систему, которая использует агенты JADE для выполнения определенных задач. Один сценарий, один из агентов должен разместить веб-сервис для связи с мобильным приложением.
К сожалению, порт, открытый агентом, не отображается в системе. Я использую код для открытия порта 9191 на localhost:
Endpoint.publish("http://" + Inet4Address.getLocalHost().getHostAddress()":9191/QrReceiver", qr);
Эта процедура getLocalHost() возвращает 127.0.1.1 (которая не является локальным хостом), но когда я заставляю ip быть 127.0.0.1, я могу получить доступ к файлу wsdl на
http://localhost:9191/QrReceiver?wsdl
но я не могу использовать какое-либо другое устройство для доступа к чему-либо на этом порту. Кроме того, утилита portscanner не находит этот порт (но находит порты 1099 и 7778, которые используются агентами JADE (и контейнером) для обмена данными между устройствами).
Как я могу использовать агент JADE для размещения веб-службы на основе wsdl?
спасибо заранее, Мартин
Раньше у меня была такая же проблема. Это может произойти из-за двух вещей.
Inet4Address.getLocalHost().getHostAddress()
возвращает ваш адрес localhost
. т.е. 127.0.0.1
Таким образом, ваша служба размещена локально и доступна только для вашего локального хоста. Он не может получить доступ через сеть.
Если вы используете статический IP-адрес, такой как 192.168.1.1
. Затем поставьте его в конечную точку обслуживания как Endpoint.publish("http://192.168.1.1:9191/QrReceiver", qr);
, без динамического локального IP-адреса. Тогда вы сможете получить доступ к ней по сети.
Возможно, ваш брандмауэр может заблокировать порт 9191
. Поэтому убедитесь, что порт свободен и открыт для соединений.