ServiceTrackerを使用して OSGi サービスを EJB に注入できることはわかっています。
しかし、OSGi Blueprint XML 構成を使用して標準 EJB にサービスを注入し、EJB が別の場所で使用されているときにサービスを利用できるようにするにはどうすればよいでしょうか? それとも、EJB は独自のレイヤーで動作するため、本当に不可能なのでしょうか?
私は JBoss AS7 を使って Aries Blueprint と Gemini Blueprint でこれをやろうとしましたが、運が悪かったです。
ビーンの例として:
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();
}
}