私はJAX-WSを使ったプロジェクトに取り組んでいます。
私はこのようにする必要があります。(それが可能かどうかさえ私にはわかりません)
このような EJB が 3 つあるとします。
public abstract class AbstractEjb<T extends A>
@Stateless
@LocalBean
public class ConcreteEjbB extends AbstractEjb<B>
@Stateless
@LocalBean
public class ConcreteEjbC extends AbstractEjb<C>
現在、私のエンドポイントは次のようになっています
@WebService
public class ConcretEndpointB {
@Ejb private ConcretEjbB;
}
@WebService
public class ConcretEndpointC {
@Ejb private ConcretEjbC;
}
私はこのようにすることができますか?
public class AbstractEndpoint<T extends A> {
public AbstractEndpoint(final Class<T> ejbType) {
super();
this.ejbType = ejbType;
}
@WebMethod
public String echo(@WebParam final String message) {
//return ejb.echo(message); // :(
// now can I look up the actual ejb instance with 'ejbType'?
lookup(ejbType).echo(message);
}
private final Class<T> ejbType;
@EJB protected AbstractEjb<T> ejb; // I don't think this gonna work.
}
@WebService
public class ConcretEndpointB extends AbstractEndpoint<B> {
public ConcreteEndpointB() {
super(ConcreteEjbB.class);
}
//public String echo(final String message) {
// return ejbB.echo(message);
//}
//@Ejb private ConcretEjbB ejbB;
}
@WebService
public class ConcretEndpointC extends AbstractEndpoint<C> {
public ConcreteEndpointC() {
super(ConcreteEjbC.class);
}
//public String echo(final String message) {
// return ejbC.echo(message);
//}
//@Ejb private ConcretEjbC ejbC;
}
うまくいかないと思います。
私の本当の質問は次のとおりです。指定された実際のコンクリート Bean を見つけるためのポータブルで標準的な方法はありますejbClass
か?