Поиск источника данных Java внутри функции

Итак, у меня есть веб-приложение, которое работает в нескольких средах. У меня было немного кода, чтобы найти информацию о соединении с базой данных из context.xml, подключиться, выполнить запрос к табличной функции, чтобы получить строку свойств для данного ключа, строку, назначенную ранее в коде в файле сервлета.

Context ctx = new InitialContext();
Context dbContext = (Context) ctx.lookup("java:comp/env/jdbc");
DataSource ds = (DataSource) dbContext.lookup("System");

//try to get db connection
Connection conn = ds.getConnection();
//try to query the database for properties
String q = "SELECT property_string FROM system.list_all WHERE key = ?";
PreparedStatement stmt = conn.prepareStatement(q);
stmt.setString(1, key);
ResultSet rs = stmt.executeQuery();
rs.next();
String properties = rs.getString("property_string");
conn.close();

Это работало нормально. Продолжая разработку приложения, я решил, что мне нужно выполнить тот же запрос в другом месте, поэтому я добавил возврат свойств и сделал его функцией getProperties в файле служебных функций.java. Протестировал, что он все еще работает, он сделал, и приступил к написанию второго сервлета и заставил его вызвать функцию.

Только второй вызов не проходит. Он настаивает на том, что в ResultSet нет результатов, даже когда я передаю точно такой же строковый ключ. Итак, теперь у меня есть два сервлета, каждый из которых объявляет экземпляр служебного класса и вызывает одну и ту же функцию с одним и тем же входным сигналом, один вызов завершается успешно и возвращает свойства, а другой завершается ошибкой без результатов.

Я что-то упустил с Context или DataSource? Почему один звонок работает, а другой нет?

0 ответов

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