gpt4 book ai didi

java - Tomcat 7/Tomee/Java 数据源

转载 作者:行者123 更新时间:2023-11-30 09:00:31 25 4
gpt4 key购买 nike

免责声明:我在工作时(凭内存)写这个问题,当时我的代码在家里的另一台 PC 上,我今晚可能无法访问。我现在正在写这个问题,因为它在我的内存中是新鲜的,所以对任何错误表示歉意。

问题: 我正在 Tomee 中编写一个连接到 MySQL 数据库的网络应用程序。我已经在 Tomee 中成功创建了一个数据源,如下所示:

<Resource auth="Container" 
driverClassName="com.mysql.jdbc.Driver"
maxActive="100"
maxIdle="30"
maxWait="10000"
name="jdbc/TestDB"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/java"
username="u5ser"
password="p4ssword"/>

这工作得很好,但确实依赖于在我部署代码的任何/所有 Tomcat/Tomee 实例中配置的数据源。最终我希望能够将此代码部署到其他容器中,如 Glassfish 或Weblogic 或其他 Tomcat/Tomee 的。也就是我想要 War 文件中的数据源。

考虑到这一点,有没有一种方法可以用 Java 编写我自己的数据源 (MyDataSource.class) 并将其捆绑到 WAR 文件中并使用 WebListener 对其进行初始化。

本质上:我想知道如何将上面的 XML 编码到我自己的 DataSource 中(即使这不是推荐的方法 - 我真的只是在试验)。

另外,一个考虑因素是我想对此进行编码,以便我可以从属性文件中读取并使数据源的各个方面可配置。

我在 Web 上找到了几个示例,但它是我所追求的 maxActive、maxIdle、maxWait 位,以便我可以在代码中创建连接池。这些似乎都不见了。

感谢任何帮助。

最佳答案

您可以在 WAR 中包含 Apache Commons DBCPApache Commons Pool创建自己的数据源:

package com.company.app.util;

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;

public final class ConnectionProvider {
private static final DataSource DATA_SOURCE;
static {
try {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost/test");
dataSource.setUsername("root");
dataSource.setPassword("");
dataSource.setValidationQuery("select now()");
dataSource.setTestOnBorrow(true);
dataSource.setRemoveAbandoned(true);
DATA_SOURCE = dataSource;
} catch (Throwable t) {
throw new ExceptionInInitializerError(t);
}
}
public static Connection getConnection() throws SQLException {
return DATA_SOURCE.getConnection();
}
}

如果您想使用属性文件,请参阅 Reading Properties file in Java 并替换上面代码中的属性

关于java - Tomcat 7/Tomee/Java 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26761468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com