我在使用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;
}
答案 0 :(得分:0)
玩得开心! 马库斯
答案 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数据库了。
不确定为什么我必须手动执行两个步骤。
由于