Oracle 尝试在Tomcat 6中创建数据源时获取“ORA-01017:无效用户名/密码;登录被拒绝”

Oracle 尝试在Tomcat 6中创建数据源时获取“ORA-01017:无效用户名/密码;登录被拒绝”,oracle,tomcat,servlets,datasource,ora-01017,Oracle,Tomcat,Servlets,Datasource,Ora 01017,我一直在尝试在Tomcat中为应用程序设置数据源。我采取的步骤是 创建包含以下内容的META-INF/context.xml <Context> <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@gpqa6.myserver.com:15

我一直在尝试在Tomcat中为应用程序设置数据源。我采取的步骤是

创建包含以下内容的META-INF/context.xml

<Context>
 <Resource name="jdbc/mydb"
  auth="Container"
  type="javax.sql.DataSource"
  driverClassName="oracle.jdbc.OracleDriver"
  url="jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6"
  username="foo"
  password="foobar"
  maxActive="20"
  maxIdle="30"
  maxWait="-1" />           
</Context>
但是继续得到下面的错误

映射过程中遇到异常。错误:无法创建PoolableConnectionFactory ORA-01017:无效的用户名/密码;拒绝登录 org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法创建PoolableConnectionFactory ORA-01017:无效的用户名/密码;拒绝登录

我知道用户名和密码是正确的。因为下面的代码是有效的

    Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "foo", "foobar");
我甚至尝试输入一个无效的url,但仍然得到相同的错误。发生什么事了


另外,Tomcat是否有类似于WebLogic或Glassfish的测试数据源的方法?

现在它可以工作了。似乎在我建立了与以下代码的连接之后

    Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "foo", "foobar");
然后切换回使用数据源,这很好。可能是缓存问题

-更新- 这是一个缓存问题。我必须删除\conf\Catalina文件夹

这个链接真的很有帮助。
现在它开始工作了。似乎在我建立了与以下代码的连接之后

    Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "foo", "foobar");
然后切换回使用数据源,这很好。可能是缓存问题

-更新- 这是一个缓存问题。我必须删除\conf\Catalina文件夹

这个链接真的很有帮助。

显然,您没有一个用户foo的密码是foobart,这只是一个例子。我已经验证了用户名和密码是正确的。显然不是,否则您不会得到错误消息this code works Class.forNameoracle.jdbc.OracleDriver.newInstance;conn=DriverManager.getConnectionjdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6,foo,foobar;但是,当对数据源使用相同的配置时,这里没有类似的设置,但工作正常。唯一的区别是driverClassName=oracle.jdbc.driver.OracleDriver,因为我使用oracle11的驱动程序+数据源通过spring注入我的对象这一事实。检查jdbc驱动程序,确保只有一个版本,而不是多个版本,例如tomcat的公共lib/中有一个版本,应用程序的web inf/lib/中有另一个版本,因为这会产生一些令人讨厌的bug。显然,您没有一个用户foo和密码foobart这只是一个示例。我已经验证了用户名和密码是正确的。显然不是,否则您不会得到错误消息this code works Class.forNameoracle.jdbc.OracleDriver.newInstance;conn=DriverManager.getConnectionjdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6,foo,foobar;但是,当对数据源使用相同的配置时,这里没有类似的设置,但工作正常。唯一的区别是driverClassName=oracle.jdbc.driver.OracleDriver,因为我使用oracle11的驱动程序+数据源通过spring注入我的对象这一事实。检查jdbc驱动程序,确保只有一个版本,而不是多个版本,例如tomcat的公共lib/中有一个版本,应用程序的web inf/lib/中有另一个版本,因为这会产生一些讨厌的bug。
    Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "foo", "foobar");