gpt4 book ai didi

java - 启动连接池时数据源出现NullPointerException

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

所以我在context.xml中有一个代码,其中包含数据库连接的信息

<?xml version="1.0" encoding="UTF-8"?>

<Resources name="jdbc/murach" auth="Containter"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/murach"
username="root" password="root"
maxActive="100" maxIdle="30" maxWait="10000"
logAbandoned="true" removeAbandoned="true"
removeAbandonedTimeout="60" type="javax.sql.DataSource" />

<ResourceLink name="jdbc/murach"
global="jdbc/mydb"
type="javax.sql.DataSource" />

对于连接池,我创建了一个类来启动并将其连接到数据库。错误从 getConnection() 方法开始。请问我应该在查找中真正添加什么才能使其工作。顺便说一下,在datasource.getConnection()的返回中,错误是NullPointerException

package lars.data;

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;


public class ConnectionPool {
private static ConnectionPool pool = null;
private static DataSource dataSource = null;

private ConnectionPool() {
try {
InitialContext ic = new InitialContext();
dataSource = (DataSource) ic.lookup("java:/comp/env/jdbc/murach");
System.out.print(dataSource);
} catch (NamingException e) {
System.out.println(e);
}
}

public static synchronized ConnectionPool getInstance() {
if (pool == null) {
pool = new ConnectionPool();
}
return pool;
}

public Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
System.out.println(e);
return null;
}
}

public void freeConnection(Connection c) {
try {
c.close();
} catch (SQLException e) {
System.out.println(e);
}
}
}

最佳答案

我相信您的问题在于 ResourceLink 的配置,尤其是属性 global 的值,该值应与 Resource< 中定义的值匹配,应该是:

 <ResourceLink name="jdbc/murach"
global="jdbc/murach"
type="javax.sql.DataSource" />

global: The name of the linked global resource in the global JNDI context.

name: The name of the resource link to be created, relative to the java:comp/env context.

注意事项1:定义资源的节点名称是Resource,而不是Resources。换句话说,它应该是:

<Resource name="jdbc/murach" ... />

NB 2:您应该尝试ic.lookup("java:comp/env/jdbc/murach")

关于java - 启动连接池时数据源出现NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39170365/

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