5

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です

4

1 に答える 1

11

で定義した名前はstandalone.xml?

それはあなたが定義する必要がある名前です@Resource

lookupただし、ちょっとしたコツがあります。 の代わりにプロパティで設定する必要がありますname

ここに例を示します。DS jndi がjava:jboss/ExampleDS.

@Resource(lookup = "java:jboss/ExampleDS")
private DataSource dataSource;
于 2013-03-21T13:04:09.377 に答える