java - 无法在 java 程序中创建初始上下文
问题描述
public static void setupInitialContext() {
try {
System.out.println("Loading Initial Context");
NamingManager.setInitialContextFactoryBuilder(new InitialContextFactoryBuilder() {
@Override
public InitialContextFactory createInitialContextFactory(Hashtable<?, ?> environment)
throws NamingException {
return new InitialContextFactory() {
@Override
public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
InitialContext context = null;
try {
context = new MockLocalContext();
} catch (Exception ex) {
ex.printStackTrace();
}
return context;
}
};
}
});
System.out.println("Loaded Initial Context");
} catch (NamingException ne) {
ne.printStackTrace();
}
}
public static void main(String[] args) throws NamingException {
setupInitialContext();
InitialContext context = new InitialContext();
context.lookup(DS_ORACLE);
}
MockLocalContext 是一个扩展 javax.naming.InitialContext 类的类。这是创建 InitialContext 对象时的错误。
我得到以下堆栈跟踪:
Exception in thread "main" java.lang.StackOverflowError
at com.sun.naming.internal.VersionHelper12$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.naming.internal.VersionHelper12.getJndiProperties(Unknown Source)
at com.sun.naming.internal.ResourceManager.getInitialEnvironment(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at net.citigroup.mexico.pg.pgs.mock.MockLocalContext.<init>(MockLocalContext.java:97)
at net.citigroup.mexico.pg.pgs.mock.MockLocalContext.<init>(MockLocalContext.java:95)
at net.citigroup.mexico.pg.pgs.mock.MockLocalContext$3$1.getInitialContext(MockLocalContext.java:400)
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 net.citigroup.mexico.pg.pgs.mock.MockLocalContext.<init>(MockLocalContext.java:97)
at net.citigroup.mexico.pg.pgs.mock.MockLocalContext.<init>(MockLocalContext.java:95)
at net.citigroup.mexico.pg.pgs.mock.MockLocalContext$3$1.getInitialContext(MockLocalContext.java:400)
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 net.citigroup.mexico.pg.pgs.mock.MockLocalContext.<init>(MockLocalContext.java:97)
at net.citigroup.mexico.pg.pgs.mock.MockLocalContext.<init>(MockLocalContext.java:95)
at net.citigroup.mexico.pg.pgs.mock.MockLocalContext$3$1.getInitialContext(MockLocalContext.java:400)
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)
它与具有相同内容的多行内容一致,我只是对其进行了修剪以适合此处。谢谢!
解决方案
看起来您的 MockLocalContext 启动了一个 InitialContext,它试图获取默认的初始上下文,即 MockLocalContext,它启动 MockLocalContext,它启动一个 InitialContext,依此类推。
推荐阅读
- php - composer global 需要 laravel/installer 不工作
- python - 正则表达式获取 < > 之间的值
- javascript - 如何在 JavaScript 中随机打乱列表项
- ruby-on-rails - 父对象只拾取 has_many 中的第一个子对象
- php - 如何使用 Jquery Ajax 将表单输入字段发送为 JSON 格式
- java - 确定回文的程序只执行 else 条件
- python - 获取具有相同数字和连续索引的子数组
- json - Alexa 一直回复“请求的技能的响应有问题”
- php - 如何使用 json_encode 对两个数组进行编码?
- sql-server - SQL Server CONTAINS 无法按预期工作