javabean连接池初始化问题 在servlet中写初始化代码,然后将这个servlet配置为load on startup,就是工作目录一启动就运行的servlet. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只是最近我比较活跃。赚到猩猩就停止 :)))如果你的工作目录\WEB-INF目录下没有web.xml,则创建一个,加入一下代码:<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <servlet> <servlet-name>SharkInitServlet</servlet-name> <servlet-class>你的Servlet类路径,比如:servlet.MyServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet></web-app>----------接着,servlet代码:package servlet.MyServlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public final class SharkInitServlet extends HttpServlet{ public void init() { // 做点什么吧 }} 我们一开始的那个论坛作完了。。可是接下来要做的东西还要辛苦。要用到数据库连接池,自定义标签等一些新的东西。。学java好辛苦的说 对了。。xml要加上servlet-map吗?servlet是不是可以只要init方法。。有没有什么简单的可以实现线城池的方法。。我对目前用到的方法有一种深深的恐惧感非常怀疑可能失败。。我是从论坛上看到的那个javabean实现线程类。。然后自己写了个实现类。。不过我看帖子说这种javabean不能适合做实际应用。。会出bug .tomcat有自身比较好的线城池机制。。可是要用到jndi..我对jndi生疏的很...那有什么适合我的线城池方法? 自己写数据库连接池是比较惨,自定义标签要自己写的话,那真是惨死了。可以考虑直接用struts/jsf/apache的,呵呵。 对于一个load on startup的servlet来说,只需要init方法。不考虑tomcat本身的数据库连接池吗?我们公司的部门经理原来写过一个连接池,使用Stack堆栈管理连接,预先建好连接,只负责出入栈。使用时不管比它们。但是这样只适合20人之内使用,因为每个连接占用的资源是很大的。 恩。。是的。。我也想用tomcat里的连接池。。但是我发现里面用到了一些jndi的知识。。我对这种东西完全不了解所以有些担心。。 呵呵。。刚刚出去买了夜宵和水。。今天晚上刷夜看能jndi... 也就2行代码。Context ctxt = new InitialContext();DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource"); 包括取得连接3行:Connection conn = ds.getConnection(); jndi不是还要建个什么域名服务器的什么吗? 什么名字服务器,目录服务器什么的。。好多概念阿。。翻书的时候又看到什么jini..什么hitemite..头都大了。 使用jndi需要配置什么才能使用?我电脑配置是tomcat5.0.12jdk1.4.2 今晚解决你这个问题就手工。只是使用的话,是很简单的,因为tomcat本身就是服务器了。从tomcat admin界面配置连接池方法:记住先把所需数据库的jar文件放到%CATALINA_HOME%\common\lib目录。http://localhost:8080/admin密码和用户名在你安装的时候设定的,如果忘记(或没有)的话,去改%CATALINA_HOME%\conf\tomcat-users.xml,添加admin和manager两个role,一个用户,该用户的role为admin和manager就可以了,按原有的xml复制修改就可以。1.点击左边框架中Service菜单项左边的小圆,展开列表.2.点击左边框架中Host (localhost)菜单项左边的小圆,展开列表.3.点击左边框架中你要添加连接池的工作目录的菜单项左边的小圆,展开列表.4.点击左边框架中Data Sources蔡单项,右边框架出现设置页。5.从右边框架中右上角的下拉列表中选择create new data source6.怎么填看下面的示例:7.点击右边框架中右上角save按钮8.点击顶部框架Commit Changes按钮。连接池设置示例:JNDI Name: jdbc/MyDataSourceData Source URL: jdbc:oracle:thin:@localhost:1521:MyOracleJDBC Driver Class: oracle.jdbc.driver.OracleDriverUser Name: testPassword: test使用示例:Context ctxt = new InitialContext();DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");Connection conn = ds.getConnection();conn.close(); 恩。。那是瞒远的。。不过以后要是来武汉玩得话也可以过来找我。。xixi..省了一餐饭钱哦对了。。学j2ee这个东西快的话1年能初窥门道吗? 关键是要碰到像我这样能够一直跟进问题状态的人。其实很多问题只是繁琐,但难度不高。初学者走到某一步出错之后看不到问题所在,等回答者解决了之后他又走到下一个常见错误处......如此循环,所以有耐心跟进的人不多。而且大部分人工作在身,跟进初学者问题进度工作进度就慢了。实话说,j2ee大部分用途是数据库系统开发,目前数据库系统开发在国内不怎么挣钱了。所以我推荐j2me,或者专门研究oracle数据库优化配置配合java开发,如果数学很好,就攻c/c++,作算法分析,对系统内核有天分的也是c之类的了。我现在就是做数据库系统开发,工作比较累,薪水也不高(考虑跳槽中) 恩。。呵呵。其实我本来也不是准备学java的。。我主要看的是游戏设计的书。很认真地看了两年。。今年大4,实习的时候和几个人分到了武汉开目。。那家公司主要是啃java的。。于是我们几个人就开始了java的学习。。到现在也有两个多月了。。而且也开始做一些实际的项目。。想想。。学java的话可以做到实际的项目。。有工作经验。。比自己自学游戏开发怎么说也要好些。。于是就开始了j2ee之路。。很辛苦有时候也想过不搞了。。但是。。自己学了这么长时间。。花了这么多功夫。。怎么说也应该学点什么什么都没学会就放手了。说不过去。 对了。。用这些要import什么包Context ctxt = new InitialContext();DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");Connection conn = ds.getConnection();conn.close();你要不要gmail。我有几个邀请函你要就发给你。。 贴漏,全部如下:import javax.naming.*;import java.sql.*;import javax.sql.*;import java.util.*; 谢谢你的gmail,平时不怎么用mail的,给我也是浪费资源。呵呵 :) 哈哈。。可惜啊。。对了。。要抛出什么异常吗?系统提示4个错误。。就是Context ctxt = new InitialContext();DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");Connection conn = ds.getConnection();conn.close();都要定义抛出异常我都定义了Exception他又说什么---------- java编译 ----------DataBaseBean.java:15: illegal start of type try{ ^DataBaseBean.java:61: <identifier> expected}^2 errors输出完成 (耗时 0 秒) - 正常终止我很仔细的检查了括号阿什么的。。应该不是这得错误 package db;import java.sql.*;import java.io.*;import javax.naming.*;import javax.sql.*;import java.util.*;public class DataBaseBean{ private final String jdbcdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; private final String dburl="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jbb"; private final String dbUsername="sa"; private final String dbPassword="hubuonline"; Statement stmt; CallableStatement cstmt; ResultSet rs; try{ Context ctxt = new InitialContext(); DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource"); Connection conn = ds.getConnection();}catch(Exception e){ System.out.println("error"); } public DataBaseBean(){ try{ stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); System.out.println("success to connect!"); }catch(SQLException ex){ System.out.println("error occurs when connecting");System.err.println(ex); } } public CallableStatement getCstmt(String strSQL){ try{ cstmt=conn.prepareCall(strSQL,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); return cstmt; }catch(SQLException e){ System.out.println(e);return null; } } public ResultSet executeQuery(String sql){ try{ rs=stmt.executeQuery(sql); }catch(SQLException e){ System.out.print("error occured when querying !"); } return rs; } public void executeUpdate(String sql){ try{ stmt.executeUpdate(sql); }catch(SQLException e){ System.out.print("error occured when updatinging !"); e.printStackTrace(); } } public void close(){ try{ conn.close(); }catch(Exception e){ System.out.println("error"); } }} package db;import java.sql.*;import java.io.*;import javax.naming.*;import javax.sql.*;import java.util.*;public class DataBaseBean{ private final String jdbcdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; private final String dburl="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jbb"; private final String dbUsername="sa"; private final String dbPassword="hubuonline"; Statement stmt; CallableStatement cstmt; ResultSet rs; try{ Context ctxt = new InitialContext(); DataSource ds = (javax.sql.DataSource)ctxt.lookup ("java:comp/env/jdbc/MyDataSource"); Connection conn = ds.getConnection(); }catch(Exception e){ System.out.println("error"); }public DataBaseBean(){ try{ stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); System.out.println("success to connect!"); } catch(SQLException ex){ System.out.println("error occurs when connecting"); System.err.println(ex); }}public CallableStatement getCstmt(String strSQL){ try{ cstmt=conn.prepareCall (strSQL,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); return cstmt; } catch(SQLException e){ System.out.println(e); return null; }}public ResultSet executeQuery(String sql){ try{ rs=stmt.executeQuery(sql); }catch(SQLException e){ System.out.print("error occured when querying !"); } return rs;}public void executeUpdate(String sql){ try{ stmt.executeUpdate(sql); }catch(SQLException e){ System.out.print("error occured when updatinging !"); e.printStackTrace(); }} public void close(){ try{ conn.close(); }catch(Exception e){ System.out.println("error"); }}} try{ Context ctxt = new InitialContext(); DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource"); Connection conn = ds.getConnection();}catch(Exception e){ System.out.println("error"); }这段是不是应该放到public DataBaseBean(){ try{ // 加到这里 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); System.out.println("success to connect!"); }catch(SQLException ex){ System.out.println("error occurs when connecting");System.err.println(ex); } } hehe ..成功编译了。。谢谢你啊。。睡觉啦。。~~88888 DataSource只需要初始化1次:public class DbPool{ private static DataSource ds = null; public DbPool() { if ( ds != null ) { try { Context ctxt = new InitialContext(); DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource"); } catch ( Exception e ) { } } }} jsp的c标签的问题 [help]html写文件的问题 学习java,看官方文档!如果你是高手就请你进来说一说 我已问遍大江南北:Hibernate中的一个问题 tomcat5.5和5.0在连接ACCESS上有区别吗? 一个关于Linux下安装Oracle 9i 的问题? javaclub论坛招募“斑竹”(http://www.13u0.com) 如何根据地址栏找到相应文件?——新手问题吗? HttpServletRequest 和 ServletRequest 有什么区别? 配置问题 学JSP投石问路,我要快车道 PetStore+glassfish 的问题
如果你的工作目录\WEB-INF目录下没有web.xml,则创建一个,加入一下代码:<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
<servlet>
<servlet-name>SharkInitServlet</servlet-name>
<servlet-class>你的Servlet类路径,比如:servlet.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>----------
接着,servlet代码:
package servlet.MyServlet;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public final class SharkInitServlet extends HttpServlet
{
public void init()
{
// 做点什么吧
}
}
要用到数据库连接池,自定义标签等一些新的东西。。学java好辛苦的说
servlet是不是可以只要init方法。。
有没有什么简单的可以实现线城池的方法。。
我对目前用到的方法有一种深深的恐惧感
非常怀疑可能失败。。我是从论坛上看到的那个javabean实现线程类。。
然后自己写了个实现类。。
不过我看帖子说这种javabean不能适合做实际应用。。会出bug .
tomcat有自身比较好的线城池机制。。
可是要用到jndi..我对jndi生疏的很...
那有什么适合我的线城池方法?
所以有些担心。。
DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
Connection conn = ds.getConnection();
好多概念阿。。翻书的时候又看到什么jini..什么hitemite..头都大了。
我电脑配置是tomcat5.0.12
jdk1.4.2
2.点击左边框架中Host (localhost)菜单项左边的小圆,展开列表.
3.点击左边框架中你要添加连接池的工作目录的菜单项左边的小圆,展开列表.
4.点击左边框架中Data Sources蔡单项,右边框架出现设置页。
5.从右边框架中右上角的下拉列表中选择create new data source
6.怎么填看下面的示例:
7.点击右边框架中右上角save按钮
8.点击顶部框架Commit Changes按钮。连接池设置示例:
JNDI Name: jdbc/MyDataSource
Data Source URL: jdbc:oracle:thin:@localhost:1521:MyOracle
JDBC Driver Class: oracle.jdbc.driver.OracleDriver
User Name: test
Password: test使用示例:
Context ctxt = new InitialContext();
DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
Connection conn = ds.getConnection();
conn.close();
xixi..省了一餐饭钱哦
对了。。学j2ee这个东西快的话1年能初窥门道吗?
而且大部分人工作在身,跟进初学者问题进度工作进度就慢了。实话说,j2ee大部分用途是数据库系统开发,目前数据库系统开发在国内不怎么挣钱了。所以我推荐j2me,或者专门研究oracle数据库优化配置配合java开发,如果数学很好,就攻c/c++,作算法分析,对系统内核有天分的也是c之类的了。我现在就是做数据库系统开发,工作比较累,薪水也不高(考虑跳槽中)
今年大4,实习的时候和几个人分到了武汉开目。。那家公司主要是啃java的。。于是我们几个人就开始了java的学习。。到现在也有两个多月了。。而且也开始做一些实际的项目。。想想。。
学java的话可以做到实际的项目。。有工作经验。。比自己自学游戏开发怎么说也要好些。。
于是就开始了j2ee之路。。很辛苦有时候也想过不搞了。。但是。。自己学了这么长时间。。花了这么多功夫。。怎么说也应该学点什么什么都没学会就放手了。说不过去。
Context ctxt = new InitialContext();
DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
Connection conn = ds.getConnection();
conn.close();
你要不要gmail。我有几个邀请函你要就发给你。。
import java.sql.*;
import javax.sql.*;
import java.util.*;
对了。。要抛出什么异常吗?系统提示4个错误。。
就是
Context ctxt = new InitialContext();
DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
Connection conn = ds.getConnection();
conn.close();
都要定义抛出异常
我都定义了Exception他又说什么---------- java编译 ----------
DataBaseBean.java:15: illegal start of type
try{
^
DataBaseBean.java:61: <identifier> expected
}
^
2 errors输出完成 (耗时 0 秒) - 正常终止
我很仔细的检查了括号阿什么的。。应该不是这得错误
import java.sql.*;
import java.io.*;
import javax.naming.*;
import javax.sql.*;
import java.util.*;
public class DataBaseBean{
private final String jdbcdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private final String dburl="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jbb";
private final String dbUsername="sa";
private final String dbPassword="hubuonline";
Statement stmt;
CallableStatement cstmt;
ResultSet rs;
try{
Context ctxt = new InitialContext();
DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
Connection conn = ds.getConnection();}catch(Exception e){
System.out.println("error");
} public DataBaseBean(){
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.println("success to connect!");
}catch(SQLException ex){
System.out.println("error occurs when connecting");System.err.println(ex);
}
}
public CallableStatement getCstmt(String strSQL){
try{
cstmt=conn.prepareCall(strSQL,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
return cstmt;
}catch(SQLException e){
System.out.println(e);return null;
}
}
public ResultSet executeQuery(String sql){
try{
rs=stmt.executeQuery(sql);
}catch(SQLException e){
System.out.print("error occured when querying !");
}
return rs;
}
public void executeUpdate(String sql){
try{
stmt.executeUpdate(sql);
}catch(SQLException e){
System.out.print("error occured when updatinging !");
e.printStackTrace();
}
}
public void close(){
try{
conn.close();
}catch(Exception e){
System.out.println("error");
}
}
}
import java.sql.*;
import java.io.*;
import javax.naming.*;
import javax.sql.*;
import java.util.*;
public class DataBaseBean{
private final String jdbcdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private final String dburl="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jbb";
private final String dbUsername="sa";
private final String dbPassword="hubuonline";
Statement stmt;
CallableStatement cstmt;
ResultSet rs;
try{
Context ctxt = new InitialContext();
DataSource ds = (javax.sql.DataSource)ctxt.lookup ("java:comp/env/jdbc/MyDataSource");
Connection conn = ds.getConnection();
}catch(Exception e){
System.out.println("error");
}
public DataBaseBean(){
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.println("success to connect!");
}
catch(SQLException ex){
System.out.println("error occurs when connecting");
System.err.println(ex);
}
}
public CallableStatement getCstmt(String strSQL){
try{
cstmt=conn.prepareCall (strSQL,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
return cstmt;
}
catch(SQLException e){
System.out.println(e);
return null;
}
}
public ResultSet executeQuery(String sql){
try{
rs=stmt.executeQuery(sql);
}catch(SQLException e){
System.out.print("error occured when querying !");
}
return rs;
}
public void executeUpdate(String sql){
try{
stmt.executeUpdate(sql);
}catch(SQLException e){
System.out.print("error occured when updatinging !");
e.printStackTrace();
}
}
public void close(){
try{
conn.close();
}catch(Exception e){
System.out.println("error");
}
}
}
Context ctxt = new InitialContext();
DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
Connection conn = ds.getConnection();}catch(Exception e){
System.out.println("error");
}这段是不是应该放到public DataBaseBean(){
try{
// 加到这里
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.println("success to connect!");
}catch(SQLException ex){
System.out.println("error occurs when connecting");System.err.println(ex);
}
}
睡觉啦。。~~88888
public class DbPool
{
private static DataSource ds = null; public DbPool()
{
if ( ds != null )
{
try
{
Context ctxt = new InitialContext();
DataSource ds = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
}
catch ( Exception e )
{
}
}
}
}