Я работаю с Eclipse и TomEE 1.7.1.Eclipse & TomEE: нет регистрации JPA
Если у меня возникла проблема с регистрацией Exception (Open) JPA: Ошибки не регистрируются в консоли и не регистрируются.
Например:
entityManager.createQuery("THIS IS NOT SQL");
Если я запускаю это в моем WebApp он не будет ничего в консоли шоу. НО: Если я устанавливаю точку останова и выполняю ее вручную (через Inspect Cntrl + Shift + I), Exception отображается в консоли.
WTF продолжается ???
EDIT:
Я сделал тест-проект только три файла, скопировать его в Tomee-WebApps-Folder начал Tomee непосредственно. Тот же результат: ничего не видно в консоли и не создается файл журнала.
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="hprex">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mytest"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="test"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<!-- <property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=TRACE, Tool=INFO, SQL=TRACE"/> -->
<!-- <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true"/> -->
</properties>
</persistence-unit>
</persistence>
test.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<h:body>
<h:form>
<h:commandButton action="#{loginBean.login}"/>
</h:form>
</h:body>
</html>
LoginBean.java
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@ManagedBean
@SessionScoped
public class LoginBean {
@PersistenceContext(unitName="mytest")
private EntityManager em;
public String login() {
Query query = em.createQuery("This is not SQL");
query.getResultList();
return "test";
}
}
Вы правы. Это вызовет исключение ArgumentException, которое является исключением RuntimeException. Так что, я думаю, мне нужно регистрировать RuntimeExceptions, но как? И почему он не регистрируется по умолчанию? В настоящее время я работал в этом Exception, но не имею никакой информации об этом ни в консоли, ни в Log-Files. Я думаю, что я пропустил простую концептуальную концепцию ведения журнала/Exceptionhandling в TomEE. – TheIngo
Вы должны, вероятно, поймать все PersistenceExceptions и обработать соответствующим образом. т.е.: запишите сообщение или выгрузите его в SystemOut/Err. – Rick
Есть ли простой способ поймать все Исключения вообще? Или мне нужно обернуть блок try/catch для каждого запроса? – TheIngo