每次我想部署我的应用程序时,都会出现一个奇怪的错误。 我使用的是IntelliJ IDEA 2016.3。
我的应用程序是使用JSF,EJB和JPA(Hibernate)的Java WEB应用程序。所有的库都是由IDEA下载的(在这个项目中没有Maven),所有依赖项都附带.war文件。我在Windows 10上部署到TomEE 7.0.2。
以下是部署中涉及的配置文件:resources.xml
.directive('animateFromLeft', function($compile) {
return {
restrict: 'AE',
link: function(scope, elem, attr) {
var children = elem.children();
children.addClass('animated fadeInLeft');
var animationDelay = 0;
for(var i = 0; i < children.length; i++) {
children[i].style.animationDelay = animationDelay.toString() + 's';
animationDelay += 1;
}
$compile(elem)(scope);
}
};
});
的persistence.xml
<div class="content-here">
<div class="animated fadeInLeft" style="animation-delay: 0s">1</div>
<div class="animated fadeInLeft" style="animation-delay: 1s">2</div>
<img class="animated fadeInLeft" style="animation-delay: 2s" width="100px" src="https://staticdelivery.nexusmods.com/mods/110/images/74627-0-1459502036.jpg" />
<div class="animated fadeInLeft" style="animation-delay: 3s">3</div>
<div class="animated fadeInLeft" style="animation-delay: 4s">4</div>
</div>
我的堆栈跟踪:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<Resource id="my_internet_shop_db" type="javax.sql.DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost:3306/my_internet_shop?autoReconnect=true&useSSL=true
UserName root
Password alpine
validationQuery = SELECT 1
JtaManaged true
</Resource>
</resources>
这只是提到例外的一小部分。以下是full stacktrace & server logs
所有数据库内容和JPA映射都可以。经过双重检查,精致至完美。事实上,我能够在Tomcat 8.5.6服务器上运行我的应用程序,但它不支持EJB,所以我需要TomEE。
此处的根删除是<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="my_internet_shop" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>my_internet_shop_db</jta-data-source>
<class>Objects.Order.CartEntity</class>
<class>Objects.User.ContactEntity</class>
<class>Objects.Order.OrderEntity</class>
<class>Objects.Product.ProductEntity</class>
<class>Objects.Section.SectionEntity</class>
<class>Objects.Service.ServiceEntity</class>
<class>Objects.User.UserEntity</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/my_internet_shop"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="alpine"/>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
。它出现在我的所有Hibernate-JPA项目中(即使是只有一个实体且没有错误空间的简单测试),所以我认为这是真正的服务器端配置问题。
然而,我无法在StackOverflow或互联网上找到任何有关此例外的线索。
我期待着你的帮助,很乐意得到任何帮助和建议。
答案 0 :(得分:9)
您可以添加persistence.xml
<property name="tomee.jpa.factory.lazy" value="true" />
或
<property name="tomee.jpa.cdi" value="false" />
如果您不需要CDI / JPA集成
编辑:第一个将在运行时首次使用工厂创建工厂,第二个将禁用cdi。这两项工作都会导致您在启动期间初始化JPA时不需要CDI(在启动cdi之前创建工厂因为cdi可以依赖它 - 鸡蛋问题)