2012-02-23 127 views
0

我有一个使用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

你可以发布让你的数据库连接的代码吗? – 2012-02-23 21:05:20

+0

@CarlosGavidia我已经添加了我的数据库连接部分作为更新1上面。 – user75ponic 2012-02-24 07:41:57

回答

0

我已解决此问题。

我在GlassFish下创建了一个JDBC资源,并指向连接到我在日期源资源管理器下创建的连接。它创建了一个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数据库。

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

谢谢

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

玩得开心! Markus