Java Tomcat 7 上使用 Kundera JPA 的 Web 应用程序
Java Web Application with Kundera JPA on Tomcat 7
我开发了一个 JAVA Rest Service (JDK 1.8),它使用 Kundera (V3.2) 进行 Cassandra 数据库连接。如果我 运行 我的应用程序在 eclipse 中使用 Tomcat-Server 一切正常。如果我想在另一个 Tomcat 7 上部署 .war 文件,服务器不会启动,因为以下错误:
com.impetus.kundera.loader.MetamodelLoaderException: Error while retreiving and storing entity metadata, Caused by : .
在搜索一些解决方案后,我发现问题可能是我的实体在一个单独的 jar 中(这是 war 文件中的依赖项),而不是在应用程序本身中。如果这是问题所在,我必须将 <jar-file>
标记添加到我的 persistence.xml
(https://github.com/impetus-opensource/Kundera/issues/90)。
我的persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="cassandra_pu" transaction-type="RESOURCE_LOCAL">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<class>com.asdf.booking.beans.kundera.Account</class>
<class>com.asdf.booking.beans.kundera.AccountCard</class>
<class>com.asdf.booking.beans.kundera.AccountType</class>
<class>com.asdf.booking.beans.kundera.Booking</class>
<class>com.asdf.booking.beans.kundera.Circle</class>
<class>com.asdf.booking.beans.kundera.AccountSequence</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="kundera.nodes" value="1.1.1.1" />
<property name="kundera.port" value="9160" />
<property name="kundera.keyspace" value="booking" />
<property name="kundera.dialect" value="cassandra"/>
<property name="sessionless" value="false" />
<property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" />
<property name="kundera.annotations.scan.package" value="com.asdf.booking.kundera.beans" />
<property name="kundera.ddl.auto.prepare" value="update" />
</properties>
</persistence-unit>
</persistence>
单独的 jar 文件可能是问题所在,还是我应该搜索其他解决方案?
问题是实体的单独 jar-file。添加 jar-file
标签时,指向实体的 jar,指向 persistence.xml
一切正常。
我开发了一个 JAVA Rest Service (JDK 1.8),它使用 Kundera (V3.2) 进行 Cassandra 数据库连接。如果我 运行 我的应用程序在 eclipse 中使用 Tomcat-Server 一切正常。如果我想在另一个 Tomcat 7 上部署 .war 文件,服务器不会启动,因为以下错误:
com.impetus.kundera.loader.MetamodelLoaderException: Error while retreiving and storing entity metadata, Caused by : .
在搜索一些解决方案后,我发现问题可能是我的实体在一个单独的 jar 中(这是 war 文件中的依赖项),而不是在应用程序本身中。如果这是问题所在,我必须将 <jar-file>
标记添加到我的 persistence.xml
(https://github.com/impetus-opensource/Kundera/issues/90)。
我的persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="cassandra_pu" transaction-type="RESOURCE_LOCAL">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<class>com.asdf.booking.beans.kundera.Account</class>
<class>com.asdf.booking.beans.kundera.AccountCard</class>
<class>com.asdf.booking.beans.kundera.AccountType</class>
<class>com.asdf.booking.beans.kundera.Booking</class>
<class>com.asdf.booking.beans.kundera.Circle</class>
<class>com.asdf.booking.beans.kundera.AccountSequence</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="kundera.nodes" value="1.1.1.1" />
<property name="kundera.port" value="9160" />
<property name="kundera.keyspace" value="booking" />
<property name="kundera.dialect" value="cassandra"/>
<property name="sessionless" value="false" />
<property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" />
<property name="kundera.annotations.scan.package" value="com.asdf.booking.kundera.beans" />
<property name="kundera.ddl.auto.prepare" value="update" />
</properties>
</persistence-unit>
</persistence>
单独的 jar 文件可能是问题所在,还是我应该搜索其他解决方案?
问题是实体的单独 jar-file。添加 jar-file
标签时,指向实体的 jar,指向 persistence.xml
一切正常。