Инъекция @EJB не удалась, но поиск JNDI работает в классе веб-сервиса в Glassfish - PullRequest
4 голосов
/ 24 февраля 2012

У меня есть класс @WebService, который внедряет @EJB. EJB упакован в файл .jar, который находится в том же файле .war, что и классы веб-служб. Инъекция @EJB всегда дает сбой, но я могу выполнить поиск JNDI на EJB. Я пытался создать EJB и его интерфейс @Remote, но это не имело значения. Инъекция все еще не удается, и поиск JNDI все еще работает.

Я использую версию 3.0 web.xml. В файле ejb.jar нет дескриптора развертывания ejb, но это не имеет значения в EJB 3.1.

Я что-то упустил или это ошибка в Glassfish?

Вот мой код.

Класс EJB и интерфейс, упакованные в файл .jar в файле .war:

//@Remote
public interface ReportServiceI {

    public String testAlive();
}

@Stateless
//@Remote (ReportServiceI.class)
public class ReportService implements ReportServiceI {...}

Класс веб-службы:

@WebService(
  targetNamespace = "http://www.reps.corp.com/services/reports/ReportService", 
  portName="ReportPort",
  serviceName="ReportService", 
  endpointInterface="com.corp.reps.reports.ws.server.ReportServiceWSI")

public class ReportServiceWS implements ReportServiceWSI {

  public static Logger logger = Logger.getLogger(ReportServiceWS.class);

//  These all fail
//  @EJB
//  @EJB(beanInterface=ReportServiceI.class)
//  @EJB(lookup="java:global/repsreports/ReportService")
  ReportServiceI reportService;

  public String testAlive() {

    //  this works
    try {
      InitialContext context = new InitialContext();
      reportService = (ReportServiceI)context.lookup("java:global/repsreports/ReportService");
    }
    catch (NamingException ex) {
      logger.error(ex);

      return "InitialContext.lookup() failed.";
    }

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Это ошибка в Glassfish (очевидно, в стеке веб-сервисов).

0 голосов
/ 24 февраля 2012

Петр,

Нет обоим.

beans.xml - это файл CDI, и я использую Glassfish в качестве контейнера для инъекций.Я попытаюсь сделать компонент @WebService @stateless - это единственное, что я не пробовал - но в этом нет необходимости.

(Это программное обеспечение форума не позволяет мне добавлять комментарииниже Петра.)

...