#java #sql #stored-procedures #jdbc #ejb
#java #sql #хранимые процедуры #jdbc #ejb
Вопрос:
Я пытаюсь попасть в хранимую процедуру, но получаю это сообщение об ошибке: «javax.ejb.EJBException»… Я никогда не работал с хранимыми процедурами, поэтому исключение для меня немного греческое.
Кто-нибудь, кто мог бы пролить некоторый свет на это? Ниже я вставил код, который я написал:
@WebMethod(operationName = "getSpecimenResultsXml")
public String getSpecimenResultsXml(@WebParam(name = "specimenGuid") String specimenGuid, @WebParam(name = "publicationGuid") String publicationGuid, @WebParam(name = "forProvider") String forProvider) {
//Method variables
ResultSet rs = null;
String xml = null;
// 1) get server connection
Connection conn = dataBaseConnection.getConnection();
// 2) Pass recieved parameters to stored proc.
try {
CallableStatement proc =
conn.prepareCall("{ call getSpecimenReportXml(?, ?, ?) }");
proc.setString(1, specimenGuid);
proc.setString(2, publicationGuid);
proc.setString(3, forProvider);
proc.execute();
rs = proc.getResultSet();
} catch (SQLException e) {
System.out.println("--------------Error in getSpecimenResultsXml------------");
System.out.println("Cannot call stored proc: " e);
System.out.println("--------------------------------------------------------");
}
// 3) Get String from result set
try {
xml = rs.getString(1);
} catch (SQLException e) {
System.out.println("--------------Error in getSpecimenResultsXml------------");
System.out.println("Cannot retrieve result set: " e);
System.out.println("--------------------------------------------------------");
}
// 4) close connection
try {
conn.close();
} catch (Exception e) {
System.out.println("--------------Error in getSpecimenResultsXml------------");
System.out.println("Cannot close connection: " e);
System.out.println("--------------------------------------------------------");
}
// 5) return the returned String
return xml;
}
О, и хранимая процедура, которую мы назвали getSpecimenReportXml …
Комментарии:
1. Исключение для нас тоже загадка, поскольку мы его не видим. Тьфу; эти комментарии — шум, и, пожалуйста, используйте ведение журнала вместо S.o.p.s.
2. По-видимому, это было вызвано NullPointerException . Но опять же, я не знаю, где это могло произойти. Если вы хотите полное исключение, я мог бы опубликовать его? Но это довольно много строк. Что касается комментариев, то они там не останутся, они просто пока есть, чтобы помочь мне отслеживать. Когда я внесу свои изменения в наши резюме, я их удалю… Но это не главное…
3. Никто не может помочь, не увидев фактической ошибки.
4. (Хотя я скажу это; ваш код просто продвигается вперед, если есть исключение, что делает обработку исключений, возможно, информативной, но в конечном итоге нефункциональной.)
5. Исключение и определение хранимой процедуры будут полезны.
Ответ №1:
В вашем исключении где-то будет указано «вызвано», что является большой подсказкой. Если это NPE, вам может потребоваться проверить значения dataBaseConnection
и conn
убедиться, что они установлены. Для этого используйте отладчик, но исключение должно точно указать, какая строка вызвала проблему.