数据库连接指向错误的数据库

时间:2012-02-23 21:04:06

标签: database eclipse web-applications glassfish

我在使用glassfish的eclipse中有一个web项目。我在context.xml中有以下数据源条目

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="jdbc/TestDS" type="javax.sql.DataSource"
        url="jdbc:oracle:thin:@server:1521:db1"
        driverClassName="oracle.jdbc.OracleDriver" username="test" password="test" />
</Context>

当我运行我的应用程序时

DatabaseMetaData dmd = connection.getMetaData();
 String name = dmd.getDatabaseProductName();

数据库产品名称始终为Apache Derby

这可能是什么原因?我正在尝试连接到Oracle数据库,但是连接到Apache Derby。

如何解决此问题?

由于

更新1

public static DatabaseConnection getInstance(String name)
            throws DatabaseException {

        DatabaseConnection instance;
        DataSource ds;
        try {
            InitialContext ctx = new InitialContext();
            ds = (DataSource) new InitialContext().lookup("java:comp/env/"
                    + name);


        } catch (NamingException e) {
            e.printStackTrace();
            throw new DatabaseException("###data source is invalid ###" + e);

        }
        instance = new MYDataSource(ds);

        return instance;
    }

2 个答案:

答案 0 :(得分:0)

好像你在这里混合了一些东西。 context.xml显然是一个Apache Tomcat配置文件。在GlassFish中,您需要使用glassfish-resources.xml或直接通过admin GUI或domain.xml配置您的域。 在GlassFish文档中有一个如何使用GlassFish 3.1执行此操作的基本示例: http://docs.oracle.com/cd/E18930_01/html/821-2416/ggndx.html

玩得开心! 马库斯

答案 1 :(得分:0)

我已经解决了这个问题。

我在GlassFish下创建了一个JDBC资源,并指向我在Date Source Explorer下创建的连接的连接。它创建了一个sun-resources.xml。我必须手动将其重命名为glassfish-resource.xml。默认情况下,没有密码输入,因此我必须手动添加<property name="Passwrod" value="password" />。当我运行我的Web应用程序时,我收到此错误

java.sql.SQLException: Error in allocating a connection. Cause: No PasswordCredential found

因此,要解决此错误,我在glassfish管理服务器的JDBC连接池中添加了一个属性。现在我可以连接到Oracle数据库了。

不确定为什么我必须手动执行两个步骤。

由于