有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在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) 个答案

  1. # 1 楼答案

    看看here。当它开始的时候,你会在你的Wildfly日志中找到类似的东西

    java:global/<your-project>/bus-facade-fumo/WUFFacade!<your-project>.wuf.WUFFacadeRemote
    java:app/bus-facade-<your-project>/WUFFacade!<your-project>.wuf.WUFFacadeRemote
    java:module/WUFFacade!<your-project>.wuf.WUFFacadeRemote
    java:jboss/exported/<your-project>/bus-facade-<your-project>/WUFFacade!<your-project>.wuf.WUFFacadeRemote
    java:global/<your-project>/bus-facade-<your-project>/WUFFacade
    java:app/bus-facade-<your-project>/WUFFacade
    java:module/WUFFacade
    

    因此,您可以在控制台日志中找到所需的JNDI,就像上面的示例一样。在你的情况下,你就快到了,但你必须用完整的信息来完成这段代码:

    Context context = (Context) initialContext.lookup("java:global/<HereYouNeedMoreInformation>");