2

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

  1. 使用以下内容创建 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>
    
  2. 在 WEB-INF/web.xml 中输入以下文本

    <resource-ref>
        <description>Datasource</description>
        <res-ref-name>jdbc/mydb</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    
  3. 在代码中使用它

    public class MyServlet extends HttpServlet {
    
      private DataSource ds;             
    
      public void init() {
    
        try {
        Context ctx = new InitialContext();
        ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mydb");
    
        } catch (NamingException e) {           
            e.printStackTrace();
        }
     }
    
      protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException {
        //this is where the exception is thrown
        Connection conn = ds.getConnection(); 
    
        //...do stuff with the connection
    }
    

但是继续出现以下错误

“映射期间遇到异常。错误:无法创建 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");

我什至尝试输入无效的网址,但仍然出现相同的错误。这是怎么回事???

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

4

1 回答 1

4

现在它正在工作。好像在我与以下代码建立连接之后

    Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "foo", "foobar");

然后切换回使用数据源,就可以了。也许这是一个缓存问题?

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

这个链接真的很有帮助。 http://pwu-developer.blogspot.com/2010/02/why-isnt-my-datasource-configuration.html

于 2012-05-02T14:14:04.987 回答