繁体   English   中英

Glassfish NameNotFoundException用于远程JNDI查找

[英]Glassfish NameNotFoundException for remote JNDI lookup

澄清

当所有内容都在本地主机(一个JVM)上时,所有这三个名称(我想都会确认)起作用。 当客户端和Glassfish在不同的计算机上时,没有任何工作。

答案很可能是正确的,可能完全是另一个问题。


查找MyQueueRemote的正确名称和语法是MyQueueRemote 当客户端在本地主机上进行JNDI查找时,它运行良好。 当同一客户端在远程服务器上执行JNDI查找时,客户端将引发NameNotFoundException客户端。

SingletonQueue可以在本地正确部署和运行 但是,尽管EAR远程部署(请参阅下文),但客户端无法正确查找和解决远程查找,抛出Root exception is javax.naming.NameNotFoundException: dur.bounceme.net.remote.MyQueueRemote not found

当作为EAR部署到Glassfish时,客户端可以针对SingletonQueue正确运行:

thufir@dur:~$ 
thufir@dur:~$ glassfish-4.1/glassfish/bin/appclient -client NetBeansProjects/SingletonClient/dist/SingletonClient.jar 
Sep 24, 2014 10:44:00 PM net.bounceme.dur.jndi.RemoteJNDI main
INFO: 
Sep 24, 2014 10:44:00 PM net.bounceme.dur.jndi.RemoteJNDI main
INFO: {org.omg.CORBA.ORBInitialPort=3700, java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, org.omg.CORBA.ORBInitialHost=localhost, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
Sep 24, 2014 10:44:05 PM net.bounceme.dur.jndi.RemoteJNDI main
INFO: id    379
Sep 24, 2014 10:44:05 PM net.bounceme.dur.jndi.RemoteJNDI main
INFO: id    380
Sep 24, 2014 10:44:05 PM net.bounceme.dur.jndi.RemoteJNDI main
INFO: id    381
Sep 24, 2014 10:44:05 PM net.bounceme.dur.jndi.RemoteJNDI main

远程Glassfish日志显示MyQueueRemoteJNDI名称:

ejb@ix:~$ 
ejb@ix:~$ tail glassfish4/glassfish/domains/domain1/logs/server.log  -n 63
[2014-09-25T01:50:10.470-0400] [glassfish 4.1] [INFO] [jts.startup_msg] [javax.enterprise.system.core.transaction.com.sun.jts.CosTransactions] [tid: _ThreadID=17 _ThreadName=RunLevelControllerThread-1411624177172] [timeMillis: 1411624210470] [levelValue: 800] [[
  JTS5014: Recoverable JTS instance, serverId = [3700]]]

[2014-09-25T01:50:20.028-0400] [glassfish 4.1] [INFO] [AS-EJB-00054] [javax.enterprise.ejb.container] [tid: _ThreadID=17 _ThreadName=RunLevelControllerThread-1411624177172] [timeMillis: 1411624220028] [levelValue: 800] [[
  Portable JNDI names for EJB MyQueue: [java:global/SingletonQueue/SingletonQueue-ejb/MyQueue, java:global/SingletonQueue/SingletonQueue-ejb/MyQueue!dur.bounceme.net.remote.MyQueueRemote]]]

[2014-09-25T01:50:20.030-0400] [glassfish 4.1] [INFO] [AS-EJB-00055] [javax.enterprise.ejb.container] [tid: _ThreadID=17 _ThreadName=RunLevelControllerThread-1411624177172] [timeMillis: 1411624220030] [levelValue: 800] [[
  Glassfish-specific (Non-portable) JNDI names for EJB MyQueue: [dur.bounceme.net.remote.MyQueueRemote#dur.bounceme.net.remote.MyQueueRemote, dur.bounceme.net.remote.MyQueueRemote]]]

在远程Glassfish服务器上运行时,客户端stacktrace:

thufir@dur:~$ 
thufir@dur:~$ glassfish-4.1/glassfish/bin/appclient -client NetBeansProjects/SingletonClient/dist/SingletonClient.jar 
Sep 24, 2014 10:58:47 PM net.bounceme.dur.jndi.RemoteJNDI main
INFO: 
Sep 24, 2014 10:58:47 PM net.bounceme.dur.jndi.RemoteJNDI main
INFO: {org.omg.CORBA.ORBInitialPort=3700, java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, org.omg.CORBA.ORBInitialHost=ix.bounceme.net, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'dur.bounceme.net.remote.MyQueueRemote' in SerialContext[myEnv={org.omg.CORBA.ORBInitialPort=3700, java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, org.omg.CORBA.ORBInitialHost=ix.bounceme.net, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: dur.bounceme.net.remote.MyQueueRemote not found]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
    at javax.naming.InitialContext.lookup(InitialContext.java:411)
    at net.bounceme.dur.jndi.RemoteJNDI.main(RemoteJNDI.java:16)
Caused by: javax.naming.NameNotFoundException: dur.bounceme.net.remote.MyQueueRemote not found
    at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:237)
    at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:204)
    at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:66)
    at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:109)
    at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:143)
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:173)
    at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatchToServant(ServerRequestDispatcherImpl.java:528)
    at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatch(ServerRequestDispatcherImpl.java:199)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1549)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:1425)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleInput(MessageMediatorImpl.java:930)
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:213)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:694)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.dispatch(MessageMediatorImpl.java:496)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.doWork(MessageMediatorImpl.java:2222)
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
thufir@dur:~$ 

客户代码:

package net.bounceme.dur.jndi;

import dur.bounceme.net.remote.MyQueueRemote;
import java.util.logging.Logger;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class RemoteJNDI {

    private static final Logger log = Logger.getLogger(RemoteJNDI.class.getName());

    public static void main(String... args) throws NamingException {
        InitialContext ctx = new InitialContext();
        log.info(ctx.getNameInNamespace());
        log.info(ctx.getEnvironment().toString());
        Object obj = ctx.lookup("dur.bounceme.net.remote.MyQueueRemote");
        MyQueueRemote queue = (MyQueueRemote) obj;
        while (true) {
            log.info("id\t" + queue.next());
        }
    }
}
Portable JNDI names for EJB MyQueue: [java:global/SingletonQueue/SingletonQueue-ejb/MyQueue, java:global/SingletonQueue/SingletonQueue-ejb/MyQueue!dur.bounceme.net.remote.MyQueueRemote]

java:global/SingletonQueue/SingletonQueue-ejb/MyQueue
java:global/SingletonQueue/SingletonQueue-ejb/MyQueue!dur.bounceme.net.remote.MyQueueRemote 

尝试其中两个之一

dur.bounceme.net.remote.MyQueueRemote

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM