Получение "ORA-01017: неверное имя пользователя / пароль; вход в систему запрещен" при попытке создать источник данных в Tomcat 6

Я пытался настроить источник данных в 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");

Я даже пытался ввести неверный URL, но все равно получаю ту же ошибку. В чем дело???

Кроме того, есть ли у Tomcat какой-либо способ тестирования источника данных, аналогичный WebLogic или Glassfish?

1 ответ

Решение

Теперь это работает. Похоже, после того, как я установил соединение с помощью следующего кода

    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

Другие вопросы по тегам