j2ee中没有初始上下文异常

时间:2016-08-27 11:28:18

标签: java web.xml context.xml

我正在尝试与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)

1 个答案:

答案 0 :(得分: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 here以及documentation here

您可能还想在Initialcontext in a standalone Java program

中提及此问题

希望它有所帮助!