gpt4 book ai didi

java - 正确的 JNDI @Resource(name)

转载 作者:搜寻专家 更新时间:2023-11-01 01:27:21 24 4
gpt4 key购买 nike

我有以下用于获取 JDBC 连接的类:

package util;

import java.sql.Connection;
import java.sql.SQLException;

import javax.annotation.Resource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class OracleConnection implements AutoCloseable{

private final String oracle_DS_CTX = "java:jboss/oracleDS";

// @Resource(name="java:jboss/oracleDS")
// private DataSource ds; //doesn't work

private Connection _conn;

public OracleConnection() throws SQLException, NamingException{

Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(oracle_DS_CTX);
_conn = ds.getConnection();
}

@Override
public void close() throws Exception {
if(_conn != null){
_conn.close();
}
}

public Connection getConnection() throws SQLException {
return _conn;
}
}

我在使用 @Resource 注释时遇到问题。通过 InitialContext 获得的数据源没有任何问题,但我不确定应该将什么字符串放入资源名称(在我的代码中注释掉)。

我试过:

@Resource(name="java:jboss/oracleDS")

@Resource(name="oracleDS")

AS是JBOSS AS7

最佳答案

您在standalone.xml 中定义了什么名称?

这是您需要在@Resource 中定义的名称

不过有个小技巧,需要在lookup属性中设置,而不是在name中设置。

这是一个例子,假设我的 DS jndi 是 java:jboss/ExampleDS

@Resource(lookup = "java:jboss/ExampleDS")
private DataSource dataSource;

关于java - 正确的 JNDI @Resource(name),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15547986/

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