Ⅰ 求助:Java数据源怎么配置
一 首先要配置Tomcat的server.xml文件,在对应的web应用的<Context>中加入<Resource>元素,比如:
<Context path="/Manager" reloadable="true">
<Resource
name="hello"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="123456"
maxIdle="4"
maxActive="4"
maxWait="5000"
url="jdbc:mysql://127.0.0.1/jspdev"
/>
</Context>
其中:
name:指定Resource的JNDI名字
type:指定Resource所属的Java类名
driverClassName:指定连接数据库的JDBC驱动程序
username:指定连接数据库的用户名
password:指定连接数据库的口令
maxIdle:指定数据库连接池中的最大空闲连接数目,0表示不受限制
maxActive:指定数据库连接池中的最大活动连接数目,0表示不受限制
maxWait:指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限
url:指定连接数据库的URL
二 在Web应用中使用数据源:
javax.naming.Context提供了查找JNDI Resource的接口,可以通过三个步骤来使用数据源对象:
A.获得对数据源的引用:
Context ctx = new InitalContext();
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/hello");
B.获得数据库连接对象:
Connection con = ds.getConnection();
C.返回数据库连接到连接池:
con.close();
在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接。
三 如果通过数据源访问数据库,由于数据源由Servlet容器创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat安装目录下的common/lib目录下,确保Servlet容器能够访问驱动程序。
Ⅱ javaweb怎么连接mysql数据库
用jdbc的方法去连接:
String url = "jdbc:mysql://localhost:3306/javabase";
String username = "java";
String password = "password";
System.out.println("Connecting database...");
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("Database connected!");
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
Ⅲ 在java web 开发中 怎么搭建与数据库的连接
一般设置 jdbc 或者 数据库连接池,跟具体的数据库 关系不大,只是更改方言等具体细节而已
下载个jdbc的包,放到lib路径里面
#b2bplatform.dialect=org.hibernate.dialect.MySQLDialect 此处改为sqlserver的方言即可
b2bplatform.show_sql=true
b2bplatform.generateDdl=true
b2bplatform.minPoolSize=1
b2bplatform.maxPoolSize=10
b2bplatform.connection.url=jdbc:mysql://127.0.0.1:3306/b2b?characterEncoding=UTF-8 这个地方要改下端口什么的
b2bplatform.connection.username=root
b2bplatform.connection.password=123456
b2bplatform.connection.driver_class=com.mysql.jdbc.Driver //这个地方改下驱动名称
Ⅳ Java web项目中tomcat中配置jndi数据源配置失败
//localhost/pubs
替换成完整的tns看看
Ⅳ javaweb多数据源问题求解
很久没用了,ssh的本机线程栈 creteria能localthreadd 里取的。大概就是这样,要在xml里面打开一个东西 把它变成全局的,记不清了,你试试吧
Ⅵ JAVA WEB一定要配置数据源吗
不一定,你也可以直接从数据库读取数据,但是配置了一个数据源了,你就不用重复进行打开关闭数据库的操作,这都是很浪费时间的操作
Ⅶ JAVA EE web。xml配置局部数据源的问题~
你创建的是基于servlet3.0的项目,没选择生成web.xml文件吧。servlet3.0支持注解,可以用注解取代web.xml文件,你可以选择重新新建项目,注意在这里最好选2.5及以下版本,也可以选择3.0,但要注意在之后选择生成web.xml.,如果选择不生成xml就用servlet3.0注解吧。当然你也可以把你之前新建好的servlet3.0的项目改成2.0的,需要手动修改一个配置文件,和添加web.xml,这里不作详解
Ⅷ Java web点击按钮切换数据源
如果要在Javaweb切换数据源,首先你需要新建数据源常量类,此类中的常量是通过spring-db.xml映射对应的,然后配置spring-db.xml,这个是spring链接数据库的配置文件,再进行动态数据源设置,这个类是用来切换数据源,再获取jdbcTemplate的管理类。最后测试动态数据源,一般会用Junit4做单元测试。
总结:这种切换比较规范和简单,麻烦的是必须先配置多个数据源,以前是参考网上资料,自己修改的,希望对你有参考作用!
Ⅸ java web中怎么配置数据库池
使用proxool数据库连接池步骤:
在WEB-INF的lib中导入proxool-0.9.0RC3.jar
在WEB-INF中新建一个XML文件,取名为proxool.xml
在proxool.xml中的内容如下:
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<!--
the proxool configuration can be embedded within your own application's. Anything outside the "proxool"
tag is ignored.
-->
<something-else-entirely>
<proxool>
<alias>smms</alias> <!--数据源的别名-->
<driver-url>jdbc:mysql://127.0.0.1:3306/smms</driver-url><!--url连接串-->
<driver-class>com.mysql.jdbc.Driver</driver-class><!--驱动类-->
<driver-properties>
<property name="user" value="root" /><!--用户名-->
<property name="password" value="root" /><!--密码-->
</driver-properties>
<!--最大连接数(默认 5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由
maximum-new-connections决定-->
<maximum-connection-count>100</maximum-connection-count>
<!--最小连接数(默认2个)-->
<minimum-connection-count>10</minimum-connection-count>
<!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默
认30秒-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-
->
<maximum-new-connections>10</maximum-new-connections>
<!--最少保持的空闲连接数(默认2个)-->
<prototype-count>5</prototype-count>
<!--在使用之前测试-->
<test-before-use>true</test-before-use>
<!--用于保持连接的测试语句 -->
<house-keeping-test-sql>select id from t_sysadmin</house-keeping-test-sql>
</proxool>
</something-else-entirely>
在web.xml中添加以下节点:
[html] view plain
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
t;/servlet>
数据库操作类如下:
[java] view plain
package cn.e.hbcit.smms..database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.ProxoolFacade;
import org.logicalcobwebs.proxool.admin.SnapshotIF;
/**
* 数据库操作类
* @author lw
*
*/
public class DBConn {
private static Connection conn;
private static ResultSet rs;
private static PreparedStatement ps;
private static String driverClass = "org.logicalcobwebs.proxool.ProxoolDriver";//proxool驱动类
//private static String url = "jdbc:mysql://localhost:3306/bbs?user=root&password=123";
private static int activeCount = 0; //活动连接数
protected final Logger log = Logger.getLogger(DBConn.class.getName());
/**
* 获取数据库连接
* @return Connection
*/
public Connection getConn() {
try {
Class.forName(driverClass);
conn = DriverManager.getConnection("proxool.smms"); //此处的smms是在proxool.xml中配置的连接池别名
this.showSnapshotInfo(); //查看连接池信息
} catch (Exception e) {
log.error(e.getMessage());
log.debug("数据库连接错误!");
//System.out.println(e.getMessage());
//System.out.println("数据库连接错误!");
}
return conn;
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public void freeConnection(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池中的连接信息
*/
private void showSnapshotInfo(){
try{
SnapshotIF snapshot = ProxoolFacade.getSnapshot("smms", true);
int curActiveCount=snapshot.getActiveConnectionCount();//获得活动连接数
int availableCount=snapshot.getAvailableConnectionCount();//获得可得到的连接数
int maxCount=snapshot.getMaximumConnectionCount() ;//获得总连接数
if(curActiveCount!=activeCount)//当活动连接数变化时输出的信息
{
log.debug("活动连接数:"+curActiveCount+"(active);可得到的连接数:"+availableCount+"(available);总连接数:"+maxCount+"(max)");
//System.out.println("活动连接数:"+curActiveCount+"(active);可得到的连接数:"+availableCount+"(available);总连接数:"+maxCount+"(max)");
activeCount=curActiveCount;
}
}catch(ProxoolException e){
e.printStackTrace();
}
}
}
Ⅹ JAVA web 与数据库的连接到底是怎样连的啊
JAVA Web开发中与数据库的连接操作,配置:
1、新建数据库。
新建登录角色,在新建数据库的时候把数据库的所有权交给你新建的角色。用用户和密码控制数据库。保证数据库的安全。
2、编写context.xml文件 Xml文件的目的是封装用户和密码,也是封装的一种,方便操作。
以下为context.xml文件样例:
<?xml version="1.0" encoding="utf-8"?>
<Context reloadable = "true">
<Resource
name="jdbc/sampleHS"
type="javax.sql.DataSource"
maxActive="14"
maxIdle="10"
username="hstaoshu"
maxWait="5000"
driverClassName="org.postgresql.Driver"
password="hstaoshu"
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
</Context>
详细说明:
name="jdbc/sampleHS"里面的ssampHS是可改名称,建议根据需要自己命名;
username="hstaoshu"
password="hstaoshu"此两项为你新建的数据库登录角色用户名和密码信息,只有匹配 了才能访问。这里简单为了表示,把用户名和密码弄成了跟数据库名字一样。其实这是很不安全的。
url="jdbc:postgresql://localhost:5432/hstaoshu"/>
这是连接数据库的URl,就像访问网站的地址一样。没有这个是无法访问数据库的。localhost:5432表示本地端口。一般不需要改动,如果你在配置数据库的时候改动过端口,那么你需要把它改回来。/hstaoshu是你的数据库名称。
其他选项请勿擅自改动。
3、编写DAO类。
DAO类的作用是与数据连接后,对数据库的一些操作的封装。封装的作用。为了更好的数据管理。
DAO是真正如何使用数据库的关键步骤,前两步只是部署和配置。
private static InitialContext context = null;
private DataSource dataSource = null;
//一般把跟数据库的连接放在DAO类的构造函数里,只要被实例化,就能和数据库连接。
public BookDAO() {
try {
if (context == null) {
context = new InitialContext();
}
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/sampleHS");
// 连接数据库,前面在context.xml文件配置里的URl
} catch (NamingException e2) {
e2.printStackTrace();
}
}
public Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();// 获得数据源的连接对象
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
做完上面的三步操作,开发环境已经完全和数据库连接OK,可以开始数据库的操作了。一般来说,对数据库的操作语句都是提前封装好的。这样修改起来会对下面的代码影响降到最小。
如下:
// ------------------数据库操作语句代码封装------------------
/* 查看所有图书 */
private static final String SELECT_ALL_SQL = "SELECT * FROM book";
那么在使用的时候只要直接调用:
pstmt = conn.prepareStatement(SELECT_ALL_SQL);