【发布时间】:2016-02-19 02:00:05
【问题描述】:
我正在尝试以下列方式设置一个新的InitialContext(我相信这是相当标准的):
private static InitialContext getInitialContext() throws NamingException {
InitialContext context = null;
try {
Properties properties = new Properties();
properties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
properties.put(Context.PROVIDER_URL, "remote://localhost:4447");
properties.put(Context.SECURITY_PRINCIPAL, "username");
properties.put(Context.SECURITY_CREDENTIALS, "password");
context = new InitialContext(properties);
System.out.println("\n\tGot initial Context: " + context);
}
catch (Exception e) {
e.printStackTrace();
}
return context;
}
public static void sendMessage(RoboticsParameters object_msg) throws Exception {
InitialContext context = getInitialContext();
// other code
}
代码“失败”在使用属性创建new 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)
有什么建议吗?
我正在运行 JBoss EAP 6.4 并使用 EJB 3。我在类路径中有 jboss-client.jar。
【问题讨论】:
-
我试过了,但没有任何区别。
-
您如何测试您的
getInitialContext()方法?您是否有部署在 JBoss 上的应用程序正在调用它,或者您正在通过主类调用它...? -
@aribeiro 我正在通过一个主类调用它以进行测试。我找到了解决方案!我需要添加 maven 依赖项,而不是在类路径中添加
jboss-client.jar。
标签: java jboss ejb jms initial-context