我有以下用于获取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;
HIbernate创建数据库表 - java我正在学习JPA-Hibernate。我正在关注这个article在Dog.java中,它被称为@Table(name = "dog")。 在persistence.xml中,我有以下内容<property name="hibernate.hbm2ddl.auto" value="create"…
使Java中的未处理异常中断程序 - java假设我们有一个位于调用堆栈深处的函数。该函数执行多项操作,并调用5个引发异常的不同函数。在C#中,我可以保留这些异常,并确保如果抛出任何异常,则程序会中断。这就是我所希望的-这些异常应停止程序。在Java中,编译时会出现错误。据我所知,我有两种选择:处理所有这些并保持程序运行。但正如我所说-我确实想破坏程序,处理所有异常可能只会使代码混乱。使函数重新抛出这些…
Java:正则表达式模式匹配器是否有大小限制? - java我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)
Java:线程池如何将线程映射到可运行对象 - java试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …
JAVA:字节码和二进制有什么区别? - javajava字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…