При публикации веб-службы вы должны использовать формат http://<host>:<port>/<path>
.
Пример:
Endpoint.publish("http://localhost:80/ws/hello", new HelloWorldImpl());
Однако, когда вы указываете localhost
, не очень понятно, на каком сетевом адаптере будет доступен ваш веб-сервис. Если на вашем сервере есть адаптер локальной сети и беспроводной сети, возможно, ваша служба доступна только на одном из этих 2.
Если вы знаете, на каком сетевом адресе будет работать служба, то вам следует заменить его конкретным IP-адресом. В качестве альтернативы, если вы укажете 0.0.0.0
, он будет работать на ВСЕХ сетевых адаптерах.
Endpoint.publish("http://0.0.0.0:80/ws/hello", new HelloWorldImpl());
Я предлагаю попробовать адрес «0.0.0.0» и дважды проверить номер порта.
ИЗМЕНИТЬ:
Я вижу, что здесь есть источник путаницы. Итак, здесь следует более длинное объяснение. (пропустите это, если не нужно):
В наши дни компьютеры имеют несколько сетевых адаптеров. Некоторые из них могут быть виртуальными, некоторые — реальными физическими соединениями. Смотрите, у меня 7. ![Мои сетевые адаптеры](https://i.stack.imgur.com/mLCxo.jpg)
Большинство современных сетевых приложений основаны на TCP/IP (например, FTP, HTTP, электронная почта и т. д.). Приложениям TCP/IP требуется IP-адрес и номер порта для размещения или подключения к службам. . Веб-сервисы ничем не отличаются. Вам необходимо опубликовать свой веб-сервис по IP-адресу и номеру порта.
Здесь все становится сложнее. Ваш компьютер имеет несколько сетевых адаптеров. Поэтому вполне вероятно, что у вашего компьютера несколько IP-адресов. Если вы просто опубликуете свой сервис, не указав адрес, который он должен использовать, возможно, что ваш веб-сервис будет доступен только через один конкретный сетевой адаптер. И возможно, что это неправильный.
По этой причине рекомендуется точно указать, на каком адресе вы хотите разместить свою службу. Например, если ваш предпочтительный адаптер локальной сети имеет фиксированный IP-адрес (например, 192.168.1.20), тогда вы можете опубликовать свой сервис на http://192.168.1.20:80/ws/hello
. Теперь абсолютно понятно, на каком адаптере вы хотите запустить свой сервис.
Проблема в том, что не все компьютеры имеют фиксированный IP-адрес. Так что, к счастью, вы также можете указать http://localhost:80/ws/hello
. В этом случае ваш веб-сервис также будет доступен для других компьютеров в вашей сети. Кроме !!!! ...и это важно!!! кроме случаев, когда ваш веб-сервис был запущен на неправильном сетевом адаптере. Видите ли, поскольку вы не указали точный IP-адрес, ваш компьютер выберет сетевой адаптер или несколько. Но не всегда понятно, какой. Он может быть неправильным.
Итак, это приводит нас к http://0.0.0.0:80/ws/hello
, который является специальным IP-адресом. Это означает, что веб-сервис будет доступен на ВСЕХ возможных сетевых адаптерах. (Обратите внимание, что IP-адрес действительно должен быть 0.0.0.0
точно таким, как написано здесь. Его не можно заменить реальным IP-адресом. 0.0.0.0
— это IP-адрес, который вам нужно использовать. Это специальный адрес. .)
Есть еще вопросы ? :)
person
bvdb
schedule
03.06.2015