在Wildfly 10中找不到无状态Bean中的java JNDI
我用的是wildfly 10
出于某种原因,我犯了这样的错误:
javax.naming.NameNotFoundException: ServiceAImpl-- service jboss.naming.context.java.global.ServiceAImpl: javax.naming.NameNotFoundException: ServiceAImpl -- service
我访问jndi的方式:
InitialContext initialContext = new InitialContext();
Context context = (Context) initialContext.lookup("java:global/");
IWorker worker = (IWorker) context.lookup("ServiceAImpl");
worker.createTimer(task);
代码的其余部分:
public interface IWorker{
void createTimer(ExecutableTask aExecutableTask);
}
@Stateless
@Local(IServiceA.class)
public class IServiceAImpl
implements IServiceA {
@Override
public void createTimer(ExecutableTask aExecutableTask) {
System.out.println("I am doing some jobs");
}
}
@Local
public interface IServiceAextends IWorker{
}
我怎样才能接触到这个IWorker?如何获得这个JNDI
# 1 楼答案
看看here。当它开始的时候,你会在你的Wildfly日志中找到类似的东西
因此,您可以在控制台日志中找到所需的JNDI,就像上面的示例一样。在你的情况下,你就快到了,但你必须用完整的信息来完成这段代码:
Context context = (Context) initialContext.lookup("java:global/<HereYouNeedMoreInformation>");