Создание веб-сервиса в JBoss AS 7 с использованием аннотаций - PullRequest
4 голосов
/ 10 декабря 2011

У меня есть EAR-файл с вложенным EJB-проектом, динамический веб-проект .war и файл .jar, содержащий определения бина сущности.

Я пытаюсь создать простой веб-сервис на основе SOAPиспользуя этот удаленный интерфейс:

package session;

import javax.ejb.Remote;
import javax.jws.WebMethod;
import javax.jws.WebService;

@Remote
@WebService
public interface HelloWorldRemote {
    @WebMethod
  public String greet(String from);
    @WebMethod
  public String getMessage();
}

и этот класс реализации:

package session;

import javax.ejb.Stateless;
import javax.jws.WebService;

@Stateless
@WebService(endpointInterface = "session.HelloWorldRemote", serviceName = "HelloWorldWS")
public class HelloWorldImpl implements HelloWorldRemote {

  public String greet(String from) {
    return "Hello, " + from + ".";
  }

  public String getMessage() {
    return "It's working.";
  }
}

Однако при развертывании файла EAR в журнале не упоминается ни один из классов, WSDL, веб-сервисы,или что-нибудь, что заставило бы меня поверить, что он пытается создать веб-сервис на основе моих аннотаций.

Чего мне не хватает?

Ответы [ 2 ]

5 голосов
/ 10 декабря 2011

Это заняло слишком много времени, и я столкнулся с ним совершенно случайно.Я нашел форум, объясняющий, что мне нужно использовать флаг "--server-config = standalone-preview.xml", чтобы включить поддержку определенных частей функциональности JBoss.После попытки выяснить, где можно найти / получить standalone-preview.xml, я узнал, что использую неправильную версию JBoss.

В отличие от этого, профиль "Web" в JBoss 7 делаетне поддерживает веб-сервисы.(По крайней мере, не из серии JAX-WS.)

Решением было загрузить профиль «Все» и затем использовать вышеуказанный флаг.Если вы работаете в Eclipse, как я, вы можете добавить флаг, дважды щелкнув по вашему серверу на вкладке «серверы» внизу, а затем нажав «Открыть конфигурацию запуска».

Я надеюсьсэкономил кому-то еще столько часов, сколько я потратил на это.

2 голосов
/ 10 декабря 2011

Вы зарегистрировали свой веб-сервис в войне web.xml?

 <servlet>
    <servlet-name>HelloWorldImpl</servlet-name>
    <servlet-class>session.HelloWorldImpl</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>HelloWorldImpl</servlet-name>
    <url-pattern>/*</url-pattern>
 </servlet-mapping>
...