Как внедрить службу OSGi в EJB с помощью Blueprint

Я знаю, что можно использовать ServiceTracker внедрить службы OSGi в EJB.

Однако как мне использовать конфигурацию OSGi Blueprint XML для внедрения служб в стандартные EJB, чтобы службы были доступны, когда EJB используются в другом месте? Или это действительно невозможно, поскольку EJB работают на своем собственном уровне?

Я безуспешно пытался сделать это с помощью Aries Blueprint, а также Gemini Blueprint с JBoss AS7.

Например, боб:

import javax.annotation.PostConstruct;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import org.osgi.framework.BundleContext;

@Stateless
@LocalBean
public class SimpleStatelessSessionBean {

  InformationService service; // how'd I go about to get this populated?

  @PostConstruct
  public void init() {

  }

  public String getMessage() {

    if (service == null)
      throw new IllegalStateException("Service not available");

    return "EJB:" + service.getMessage();
  }
}

person eis    schedule 12.12.2012    source источник
comment
PAX CDI предназначен специально для решения этой проблемы. Вы должны изучить это.   -  person Björn Pollex    schedule 12.12.2012
comment
@BjörnPollex говорит на team.ops4j.org/wiki/display/PAXCDI/Web +Приложения, что Pax CDI работает только с традиционным контейнером Pax Web Jetty. Он еще не поддерживает контейнер Pax Web Tomcat. - Не думаю, что это альтернатива другим контейнерам   -  person eis    schedule 21.12.2012


Ответы (1)


Кажется, то, что я спросил, на самом деле невозможно.

Что возможно, это

person eis    schedule 21.12.2012