Я пробираюсь через учебник по Java EE 6 и нахожусь в разделе о веб-сервисах. Я пытаюсь запустить helloservice, потому что мне нужно сделать что-то подобное в ближайшем будущем. Однако, хотя он собирается и развертывается без ошибок, при попытке его использовать я получаю 404 ошибки от GlassFish. Я посмотрел в журналах GlassFish и не нашел ничего, указывающего на какие-либо проблемы. Вот код из сервиса:
package helloservice.endpoint;
import javax.jws.WebService;
import javax.jws.WebMethod;
@WebService
public class Hello {
private String message = "Hello, ";
public void Hello() {
}
@WebMethod
public String sayHello(String name) {
return message + name + ".";
}
}
Исходя из того, что я прочитал, @WebService должен предоставить класс с именем службы HelloService (имя базового класса + «Служба»). Тем не менее, когда я иду к:
http://localhost:8080/helloservice/HelloService?wsdl
Я получаю ошибку 404. Я работал со всеми предыдущими примерами, поэтому я знаю, что GlassFish работает и отвечает на порт 8080 для других приложений, которые я развернул. Я вижу в консоли администратора, что helloservice развернут и работает. «asadmin list-domains» показывает, что мой домен1 (мой единственный домен) работает. Я подумал, что, возможно, значение по умолчанию для аннотации @WebService было неправильным, поэтому я установил явное значение с помощью @WebService (serviceName = "Foobar"), но это не имело значения, когда я попытался проверить wsdl (заменив HelloService на Foobar).
Я видел, что у некоторых других людей была похожая проблема, но я не видел опубликованных решений. Может кто-нибудь объяснить, что может быть не так, или как это исправить?