我正在使用 JAX-WS 开发一个项目。
我需要这样做。(我什至不确定这是否可能)
假设有三个这样的 EJB。
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;
}
我认为这行不通。
我真正的问题是;是否有任何便携式和标准的方法来定位指定的实际混凝土豆ejbClass
?