【问题标题】:No Initial Context Exception in j2eej2ee 中没有初始上下文异常
【发布时间】:2016-08-27 11:28:18
【问题描述】:

我正在尝试使用context.xml 进行连接池 和web.xml

context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/project_1">

<Resource auth="Container"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    maxActive="100" maxIdle="30"
    maxWait="10000"
    name="connpool"
    password="oracle11"
    type="javax.sql.DataSource"
    url="jdbc:oracle:thin:@localhost:1523:system"
    username="system"/>
</Context>

web.xml

<resource-ref>
        <description>DB Connection</description>
        <res-ref-name>connpool</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

连接代码

InitialContext initialContext = new InitialContext();
Context context = (Context) initialContext.lookup("java:comp/env");
// The JDBC Data source that we just created
DataSource ds = (DataSource) context.lookup("connpool");
this.con = ds.getConnection();

异常和堆栈跟踪

Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at demo.main(demo.java:27)

C:\Users\BigGoal\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

【问题讨论】:

  • 您可以尝试将您的资源命名为“jdbc/connpool”而不是“connpool”吗?

标签: java web.xml context.xml


【解决方案1】:

Hemal ,当您在服务器上运行代码时,默认构造函数将返回您的上下文。当您有一个独立程序时,默认构造函数不会返回 IC。你将不得不看看如何获​​得IC,你可能想要设置它

Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.rmi.registry.RegistryContextFactory");
env.put(Context.PROVIDER_URL, "rmi://server:1099");
InitialContext context = new InitialContext(env);

这被引用 Tomcat book heredocumentation here

您可能还想在此处提及此问题Initialcontext in a standalone Java program

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多