我正在尝试与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)
答案 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
中提及此问题希望它有所帮助!