【发布时间】:2014-11-07 12:57:03
【问题描述】:
我正在使用 Eclipse 和 TomEE 1.7.1。
如果我对 (Open)JPA 的异常日志记录有疑问: 错误不会记录到控制台或日志文件中。
例如:
entityManager.createQuery("THIS IS NOT SQL");
如果我在我的 WebApp 中运行它,它不会在控制台中显示任何内容。 但是:如果我设置断点并手动执行它(通过 Inspect Cntrl+Shift+I),异常会显示在控制台中。
WTF 正在进行中???
编辑:
我做了一个只有三个文件的测试项目,将它复制到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";
}
}
【问题讨论】:
标签: eclipse logging openjpa apache-tomee