Context.xml方式获取连接

时间:2013-09-27 04:45:03

标签: java

我尝试使用context.xml文件在我的java代码中与数据库建立连接,我的代码如下,

 InitialContext ic = new InitialContext();
    Context xmlContext = (Context) ic.lookup("java:comp/env"); 
    DataSource myDatasource = (DataSource) ((InitialContext)
xmlContext).lookup("jdbc/MyDatasource");


    con = myDatasource.getConnection();

但我在最后一行得到错误(con = myDataSource.getConnection();)说明添加强制转换为myDataSource..m无法解决此问题。任何帮助?我的进口如下

import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


import com.lowagie.text.pdf.codec.postscript.ParseException;

2 个答案:

答案 0 :(得分:0)

我基本上是在Eclipse中复制/粘贴你的代码,并且靠在编译器上来建议你看到的导入。在我的案例中,con的类型来自java.sql.Connection

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

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

public class Test {

    void doit() throws NamingException, SQLException {
        InitialContext ic = new InitialContext();
        Context xmlContext = (Context) ic.lookup("java:comp/env");
        DataSource myDatasource = (DataSource) ((InitialContext) xmlContext)
                .lookup("jdbc/MyDatasource");

        Connection con = myDatasource.getConnection();
    }
}

答案 1 :(得分:0)

我希望它可以解决你的问题,因为它在我的情况下工作:

 Context ic = new InitialContext();
 DataSource myDatasource= (DataSource) initContext.lookup("java:comp/env/jdbc/MyDatasource");
 Connection con = myDatasource.getConnection();

或以下JNDI datasource

Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/MyDatasource");
Connection conn = ds.getConnection();