Java 使EJB3.1绑定默认为接口而不是类名
束缚Java 使EJB3.1绑定默认为接口而不是类名,java,java-ee-6,ejb-3.1,Java,Java Ee 6,Ejb 3.1,束缚 @Singleton public class DummySentenceManager implements SentenceManager { 我希望它绑定到: [java:global/appname/mypkg.DummySentenceManager, java:global/appname/mypkg.DummySentenceManager!mypkg.SentenceManager] 不诉诸: [java:global/appname/mypkg.SentenceMan
@Singleton
public class DummySentenceManager implements SentenceManager {
我希望它绑定到:
[java:global/appname/mypkg.DummySentenceManager, java:global/appname/mypkg.DummySentenceManager!mypkg.SentenceManager]
不诉诸:
[java:global/appname/mypkg.SentenceManager]
谢谢 您为什么希望它像那样绑定?无论如何,EJB在模块名称中必须是唯一的,因此没有理由用包限定名称。另外,
java:global
绑定的全部要点是它们不能以这种方式进行定制:它们遵循严格且可预测的模式
(值得一提的是,
在XML中根据XSD指定时不是ejb名称的有效名称。如果您因此在ejb实现中遇到问题,我不会感到惊讶。)如果我不这样做,如何对任何实现SentenceManager接口的EJB执行JNDI查找?没有仅通过接口查找EJB的标准机制。如果您在应用程序中的某个地方定义了@EJB(name=“java:app/EJB/mypkg.ServiceManager”,beanInterface=mypkg.ServiceManager.class)
,那么您可以使用new InitialContext().lookup(“java:app/EJB/mypkg.ServiceManager”)
。
@Singleton(name="mypkg.SentenceManager")
public class DummySentenceManager implements SentenceManager {