Публикация WS с конечной точкой Jax-WS

Я создал минимальный веб-сервис и опубликовал его с помощью javax.xml.ws.Endpoint. Если я попытаюсь получить WSDL на http://localhost:1234/AddService?wsdl, он будет работать нормально.

Пытаюсь получить его на http://192.168.0.133:1234/AddService?wsdl, но ничего не получаю. Этот адрес совпадает с адресом localhost.

Есть ли возможность опубликовать веб-сервис без указания адреса?

package test;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class AddService {

    @WebMethod
    public int add(int a, int b){
        return a+b;
    }

    public static void main(String[] args ){
        Endpoint.publish("http://localhost:1234/AddService", new AddService());
    }
}

Изменение кода на

Endpoint.publish("http://192.168.0.133:1234/AddService", new AddService());

получает мне wsdl на IP-адресе, но не на localhost.

Разве нет возможности просто определить порт?


person daniel    schedule 09.09.2010    source источник


Ответы (2)


Не могли бы вы попробовать опубликовать его на 0.0.0.0?

person ivy    schedule 09.09.2010
comment
Это работает. localhost, 0.0.0.0 и 192.168.0.133 дает мне файл wsdl. Но почему этого не происходит при публикации на localhost или другом ip. - person daniel; 10.09.2010
comment
Рад слышать, что это работает. localhost - это ip 127.0.0.1, а Endpoint.publish (очевидно) привязывается только к предоставленному адресу. С 0.0.0.0 вы говорите ему «слушать» входящие соединения на любой IP-адрес (связанный с вашим компьютером). Это может быть удобная функция для привязки только к определенному IP-адресу, например. если вы хотите, чтобы ваш сервис был доступен только для определенной подсети ... - person ivy; 17.09.2010
comment
Отличный трюк. Это официально поддерживается или это просто побочный эффект? - person Thorbjørn Ravn Andersen; 22.08.2011
comment
Это «официальный способ», но почему он работает, зависит от спецификации ipv4; проверьте en.wikipedia.org/wiki/IPv4 или вопросы по stackoverflow по этой теме: stackoverflow.com/search?q=0.0.0.0 - person ivy; 05.09.2011
comment
Что было бы эквивалентом для IPv6? - person Thorbjørn Ravn Andersen; 19.06.2012
comment
У меня есть пара вопросов. 1) Метод публикации конечной точки принимает URL-адрес для привязки, но URL-адрес изменяется от среды к среде. Итак, динамическое построение пути - лучший способ или есть другой лучший способ. 2) Мой текущий проект выполняется на IBM WAS8.5.5, и аннотированные классы JAX-WS сканируются автоматически. Итак, когда следует использовать метод публикации Endpoint. - person S R Chaitanya; 11.09.2018
comment
Удивительно, как вопрос дает ответ, хотя многие другие ответы на самом деле являются вопросами. - person 9ilsdx 9rvj 0lo; 06.06.2019

Вот мой код:

Endpoint.publish ("http://localhost:8080", новый ServiceController ());

Он говорит, что путь к адресу должен начинаться с /

person sachJuve    schedule 07.03.2019
comment
Это именно то, что пытается сделать OP, прочтите вопрос и не публиковайте что-то случайное, что не работает. - person 9ilsdx 9rvj 0lo; 06.06.2019