Tomcat数据源 数据库连接池问题

水不多 2011-08-28 08:41:09
<%@ page contentType="text/html" pageEncoding="gbk"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*"%>

<%
String DSNAME="java:comp/env/jdbc/mydatabase" ;
Context ctx = new InitialContext() ;
DataSource ds = (DataSource) ctx.lookup(DSNAME);
Connection conn = ds.getConnection() ;

%>
<%=conn%>
连接成功并关闭
<%
conn.close() ;//将连接放回池中
%>


Tomcat安装目录下的server.xml和web-inf下的web.xml都正确配置了,而且这个jsp页面正常输出了conn连接的路径
但是下面的:
package sjy.xg.myc.datasource;

import java.sql.*;//Connection
import javax.sql.*;//DataSource
import javax.naming.*;//Context
public class DatabaseConnection{
private Connection conn = null ;
private String DSNAME="java:comp/env/jdbc/mydatabase" ;
public DatabaseConnection() throws Exception{
Context ctx = new InitialContext() ;
DataSource ds = (DataSource) ctx.lookup(DSNAME);
this.conn = ds.getConnection() ;
}

public Connection getConnection(){
return this.conn ;
}

public void close() throws Exception {
if(this.conn != null){
try{
conn.close() ;
}catch(Exception e){
throw e ;
}
}
}

public static void main(String[] args) throws Exception{
Connection conn = new DatabaseConnection().getConnection();
System.out.println("sucess"+conn);
}

}


老出现错误:
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in env
ironment or system property, or as an applet parameter, or in an application resource file: java.na
ming.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 sjy.xg.myc.datasource.DatabaseConnection.<init>(DatabaseConnection.java:11)
at sjy.xg.myc.datasource.DatabaseConnection.main(DatabaseConnection.java:30)

怎么解决?????
...全文
115 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
水不多 2011-08-28
  • 打赏
  • 举报
回复
<%@ page contentType="text/html" pageEncoding="gbk"%>
<%@ page import="sjy.xg.myc.datasource.*"%>
<%@ page import="java.sql.*"%>
<%
Connection conn = new DatabaseConnection().getConnection() ;
%>
<%=conn %>


成功了,我明白这句话的意思了“此程序只能在WEB下运行,而不能使用Application程序运行”
,就是不鞥单独测试这个类,而要使它在web容器了运行。而使它在web容器里运行的方法就是放在jsp中了。这也是它的有用的地方了。

谢谢楼上的帮助了 谢谢
水不多 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 goldenfish1919 的回复:]
jsp的时候,tomcat容器帮你初始化了InitialContext,但是在普通的java应用里面,需要你自己来初始化。
java:comp/env/jdbc/mydatabase这是使用jndi的访问方式,问题是你的java应用程序里面没有容器,谁给你提供jndi呢?
因此,你需要新建一个DataSource的实例,然后进行初始化,然后就可以使用了。而不是使用jndi的方式进行查找。
[/Quote]

我是看视频学习着写的,建立了Tomcat的虚拟目录,并在Tomcat中配置了数据库连接池并在目录下创建jsp文件测试数据源,成功。
然后在虚拟目录下又建立的上面的java文件,测试同一个数据库连接池,在原本的java测试不成功。

视频还这样说了:此程序只能在WEB下运行,而不能使用Application程序运行。那么怎么在web下运行测试呢????
宁波朱超 2011-08-28
  • 打赏
  • 举报
回复
连接池必须要在容器启动之后才有的,

你用MAIN方法测试能不能使用连接池!?搞笑不!?
水不多 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sydhappy 的回复:]
LZ 能给看看你的context.xml文件吗?
[/Quote]

<!-- The contents of this file will be loaded for each web application -->
<Context>

<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>

<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->

</Context>

Context.xml还用配置吗??

那个jsp的没有涉及到Context.xml配置也可以成功啊?
水不多 2011-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 goldenfish1919 的回复:]
jsp的时候,tomcat容器帮你初始化了InitialContext,但是在普通的java应用里面,需要你自己来初始化。
java:comp/env/jdbc/mydatabase这是使用jndi的访问方式,问题是你的java应用程序里面没有容器,谁给你提供jndi呢?
因此,你需要新建一个DataSource的实例,然后进行初始化,然后就可以使用了。而不是使用jndi的方式进行查找。
[/Quote]
具体怎么写呢?

帮忙写一下吧
若鱼1919 2011-08-28
  • 打赏
  • 举报
回复
jsp的时候,tomcat容器帮你初始化了InitialContext,但是在普通的java应用里面,需要你自己来初始化。
java:comp/env/jdbc/mydatabase这是使用jndi的访问方式,问题是你的java应用程序里面没有容器,谁给你提供jndi呢?
因此,你需要新建一个DataSource的实例,然后进行初始化,然后就可以使用了。而不是使用jndi的方式进行查找。
24K純帥 2011-08-28
  • 打赏
  • 举报
回复
没用过,看下这对LZ有帮助没
http://fixunix.com/websphere/215497-javax-naming-noinitialcontextexception-need-specify-class-name-environment-system-property.html
Leo灬叔叔 2011-08-28
  • 打赏
  • 举报
回复
LZ 能给看看你的context.xml文件吗?

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧