Java JBoss EJB客户端处理程序缺少参数

Java JBoss EJB客户端处理程序缺少参数,java,jboss,ejb,jms,initial-context,Java,Jboss,Ejb,Jms,Initial Context,我试图以以下方式设置一个新的InitialContext(我相信这是相当标准的): 代码在使用属性创建新InitialContext的行中“失败”,我得到一个java.lang.NullPointerException。我怀疑我错过了一场辩论。以下是堆栈跟踪: WARN: EJB client integration will not be available due to a problem setting up the EJB client handler java.lang.NullPoi

我试图以以下方式设置一个新的
InitialContext
(我相信这是相当标准的):

代码在使用属性创建
新InitialContext
的行中“失败”,我得到一个
java.lang.NullPointerException
。我怀疑我错过了一场辩论。以下是堆栈跟踪:

WARN: EJB client integration will not be available due to a problem setting up the EJB client handler java.lang.NullPointerException
at org.jboss.naming.remote.client.InitialContextFactory.<clinit>(InitialContextFactory.java:118)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
警告:由于设置EJB客户端处理程序java.lang.NullPointerException时出现问题,EJB客户端集成将不可用
位于org.jboss.naming.remote.client.InitialContextFactory。(InitialContextFactory.java:118)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:348)
位于com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
位于com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672)
位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
位于javax.naming.InitialContext.init(InitialContext.java:244)
位于javax.naming.InitialContext。(InitialContext.java:216)
有什么建议吗


我正在运行JBossEAP6.4并使用EJB3。我在类路径中有
jboss client.jar

我检查了源代码:

jboss-remote-naming/src/main/java/org/jboss/naming/remote/client/InitialContextFactory.java
并找到日志消息的来源:

public class InitialContextFactory implements javax.naming.spi.InitialContextFactory {
    // code
    private static final String REMOTE_NAMING_EJB_CLIENT_HANDLER_CLASS_NAME = "org.jboss.naming.remote.client.ejb.RemoteNamingStoreEJBClientHandler";
    // code
        try {
            klass = classLoader.loadClass(REMOTE_NAMING_EJB_CLIENT_HANDLER_CLASS_NAME);
            method = klass.getMethod("setupEJBClientContext", new Class<?>[] {Properties.class, List.class});
        } catch (Throwable t) {
            logger.warn("EJB client integration will not be available due to a problem setting up the EJB client handler", t);
        }
    // other code
}
这是因为将maven与着色jar一起使用很有可能导致类版本冲突,这就是为什么 我们不会将此jar发布到maven存储库。”


因此,我添加了maven依赖项,而不是将jar放在我的类路径中,瞧!它起作用了!

我认为您缺少一个属性:
properties.put(“jboss.naming.client.ejb.context”,true)
。您可以找到文档和示例。我已经尝试过了,但没有任何区别。您如何测试
getInitialContext()
method?您是否在JBoss上部署了一个调用它的应用程序,或者您是通过一个主类调用它…?@aribeiro我是通过一个主类调用它进行测试的。我找到了解决方案!我需要添加maven依赖项,而不是在类路径中添加
JBoss client.jar
public class InitialContextFactory implements javax.naming.spi.InitialContextFactory {
    // code
    private static final String REMOTE_NAMING_EJB_CLIENT_HANDLER_CLASS_NAME = "org.jboss.naming.remote.client.ejb.RemoteNamingStoreEJBClientHandler";
    // code
        try {
            klass = classLoader.loadClass(REMOTE_NAMING_EJB_CLIENT_HANDLER_CLASS_NAME);
            method = klass.getMethod("setupEJBClientContext", new Class<?>[] {Properties.class, List.class});
        } catch (Throwable t) {
            logger.warn("EJB client integration will not be available due to a problem setting up the EJB client handler", t);
        }
    // other code
}
<dependencies>
    <dependency>
        <groupId>org.jboss.as</groupId>
        <artifactId>jboss-as-ejb-client-bom</artifactId>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.as</groupId>
        <artifactId>jboss-as-jms-client-bom</artifactId>
        <type>pom</type>
    </dependency>
</dependencies>