EJB客户端运行时出现异常

4
javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interf
aces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: o
rg.jnp.interfaces.NamingContextFactory]
        at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
        at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
        at javax.naming.InitialContext.init(Unknown Source)
        at javax.naming.InitialContext.<init>(Unknown Source)
        at Client_TestPortal.main(Client_TestPortal.java:54)
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFac
tory
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
        ... 5 more

我希望这里能够帮助您解决在Jboss 5.1中的此问题。 - HM.Rajjaz
3个回答

10

该异常表示在初始化Client_TestPortal应用程序的InitialContext时失败。原因是未能加载类org.jnp.interfaces.NamingContextFactory,这是您平台上默认的Java命名提供程序(我推测)。

您的应用程序类路径似乎缺少必需的JAR文件。根据此 findjar 查询,可能是以下之一:

[LOCAL] jbossall-client.jar
[LOCAL] jbossjmx-ant.jar
[MAVEN2] jnpserver-3.2.3.jar
[MAVEN2] jbossall-client-3.2.1.jar
[MAVEN2] jbossall-client-3.2.3.jar
[MAVEN2] jbossjmx-ant-3.2.3.jar
[MAVEN2] jnp-client-3.2.1.jar
[MAVEN2] jnp-client-4.0.2.jar

... 或者类似的东西。哪一个JAR文件是最合适的(如果有的话)很难说。


Stephen,如果我创建Bean对象时在运行时遇到以下错误???java.lang.ClassCastException at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(Unknown S ource) at javax.rmi.PortableRemoteObject.narrow(Unknown Source) at Client_TestPortal.main(Client_TestPortal.java:71) 原因是:java.lang.ClassCastException: javax.naming.Reference ... 3 more如何在我的客户端中创建Bean对象? 我有接口名称:TestPortal Bean类名称:TestPortalBeanEar名称:PortalEJB - saran
@saran - 你没有提供足够的信息来回答这个问题。请开一个新的问题。 - Stephen C

1
你没有提供足够的信息,例如你使用的环境、应用程序服务器等。
无论如何,看起来JNDI相关的JAR不在类路径上。如果已经放在那里但仍然无法工作,则可能错过了正确的上下文信息,请将JNDI信息传递给InitialContext的构造函数。

0

我曾经遇到同样的问题,但是我找到了解决方法。你只需要在客户端项目中添加jbossall-client.jar库文件,然后就可以了!你可以在客户端文件夹内找到这个文件。 例如:jboss-6.1.0.Final_GPT\client 我使用的是Jboss 6.1.0版本。 你也可以从这个链接获得帮助: https://community.oracle.com/thread/1157701?start=0

希望对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接