2014-11-07 4 views
0

Я работаю с 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"; 
    } 

} 

ответ

0

Я не верю, что этот путь приведет к чему после входа в JPA поставщик. Когда OpenJPA не сможет создать этот запрос, он отправит исключение обратно в ваше приложение.

+0

Вы правы. Это вызовет исключение ArgumentException, которое является исключением RuntimeException. Так что, я думаю, мне нужно регистрировать RuntimeExceptions, но как? И почему он не регистрируется по умолчанию? В настоящее время я работал в этом Exception, но не имею никакой информации об этом ни в консоли, ни в Log-Files. Я думаю, что я пропустил простую концептуальную концепцию ведения журнала/Exceptionhandling в TomEE. – TheIngo

+0

Вы должны, вероятно, поймать все PersistenceExceptions и обработать соответствующим образом. т.е.: запишите сообщение или выгрузите его в SystemOut/Err. – Rick

+0

Есть ли простой способ поймать все Исключения вообще? Или мне нужно обернуть блок try/catch для каждого запроса? – TheIngo

0

какая у вас настройка/конфиг? По умолчанию регистрируются исключения. Вы можете проверить: catalina.out, catalina * .log и localhost * .log, зависящие от конфигурации, которую вы используете для местоположений по умолчанию (если вы используете log4j, slf4j ... это на вашей стороне, чтобы обеспечить его регистрацию).

+0

У меня нет конфигурации, я просто использую простой Tomee-config. Я добавил код к моему вопросу. – TheIngo

Смежные вопросы