Получение "ORA-01017: неверное имя пользователя / пароль; вход в систему запрещен" при попытке создать источник данных в Tomcat 6
Я пытался настроить источник данных в 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>
Введите следующий текст в 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>
Используя это в коде
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