双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

连接池问题 Need to specify class name in envir

zcjzcj111 zcjzcj111 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
<Resource name="news" auth="Container" type="javax.sql.DataSource" maxActive="1000000" maxIdle="30" maxWait="10000" username="system" password="ok" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:orcl"/>


<resource-ref>
<res-ref-name>news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
运行:
public static void main(String[] args){

try {
Context ctx = new InitialContext();

Context envContext = (Context)ctx.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("news");

Connection conn = ds.getConnection();
conn.close();
System.out.print("连接成功");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
报错:
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:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at dao.ForumDao.main(ForumDao.java:33)用实例类进行测试时候遇到了上述问题,用Servlet或jsp页面却是成功的,没有错误。为什马呢?

浏览器访问test.jsp没问题,显示连接成功!
test.jsp:
<%@ page language="java" import="javax.naming.*,javax.sql.*,java.sql.*" pageEncoding="GBK"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/news");
Connection con = ds.getConnection();
out.print("连接成功");

%>

...全文
评论 3
收藏 已收藏
分享
返回顶部
zcjzcj111
Web 开发 81,108 成员 341,721 内容