java - 如何从容器外部访问Websphere 7.0中定义的JNDI命名空间?

标签 java jndi websphere-7

我正在尝试使用 iiop 协议(protocol)从容器外部查找在 Websphere 应用程序服务器 7.0 上定义的资源,如下所示:

(RMI 客户端)Test.jar 的 Java 代码:

public static void main(String[] args){
Hashtable<Object, Object> properties = new Hashtable<Object, Object>();
properties.put(Context.INITIAL_CONTEXT_FACTORY, 
        "com.ibm.websphere.naming.WsnInitialContextFactory"); 
           properties.put(Context.PROVIDER_URL, "iiop://localhost:2809"); 
InitialContext intCt;
try {
       InitialContext initCtx = new InitialContext(properties);
       Object obj = intCt.lookup(JNDI_NAME);
     }catch (NamingException namingE) {
            System.out.println("Naming Exception occurred :");
            namingE.printStackTrace();
        }   
}

调用Test.jar的命令文件:

set appClassPath=C:\WebSphere\AppServer7.0\deploytool\itp\plugins\com.ibm.websphere.v7_7.0.1.v20090422_1423\wasJars\naming.jar;C:\WebSphere\AppServer7.0\deploytool\itp\plugins\com.ibm.websphere.v7_7.0.1.v20090422_1423\wasJars\namingclient.jar;C:\WebSphere\AppServer7.0\properties;C:\Batch\CommandFiles\JobServer\Test.jar

C:\WebSphere\AppServer7.0\java\jre\bin\java -jar -cp "%appClassPath%" C:\Batch\CommandFiles\JobServer\Test.jar %Parameters%  

注意:请注意,我在本地机器上运行客户端,引导主机是:localhost,端口是 2809。

在从命令文件运行 Test.jar 代码时,出现以下错误:

javax.naming.NoInitialContextException: Failed to create InitialContext using factory specified in hashtable {java.naming.provider.url=iiop://localhost:2809, java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory} [Root exception is java.lang.NullPointerException]
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:243)
    at javax.naming.InitialContext.initializeDefaultInitCtx(InitialContext.java:327)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:357)
    at javax.naming.InitialContext.internalInit(InitialContext.java:295)
    at javax.naming.InitialContext.(InitialContext.java:212)
    at com.uuic.ets.rmi.server.client.Client.main(Client.java:130)
Caused by: java.lang.NullPointerException
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:235)
    ... 5 more

我不知道为什么这段代码无法实例化 InitialContext(Hashmap env)。同样的代码在 Websphere 应用程序服务器 5.1 版中运行,但在 Websphere 应用程序服务器 7.0 版中出现问题。

最佳答案

不支持将 WAS_HOME/deploytool 中的 JAR 用于类路径。尝试使用已记录的 EJB thinclient使用 WAS_HOME/runtimes/com.ibm.ws.ejb.thinclient_7.0.0.jar。

关于java - 如何从容器外部访问Websphere 7.0中定义的JNDI命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739965/

相关文章:

java - 如何从字符串变量中获取小时和分钟?

jndi - 通过 JNDI 访问 Wildfly <system-properties><property>

scala - 在 Tomcat 中使用动态数据源

java - 通过使用 ejb3 和 jsf,我还需要进行 jndi 查找吗?

java - 如何在 WebSphere Application Server 7.0 中池化 Java 对象?

java - opencv中的以下代码行是什么意思?

2个应用程序之间的Java通信

java - 在 WebSphere7 中,当对象保留内存和共享类缓存已满 100% 时,Dozer 中出现 ClassCastException

java - Android 模拟器错误,控制台错误日志重复错误

java - 在 Websphere 7 中使用 Hibernate 最新版本