Я пытаюсь получить log4j (я также был бы рад использовать любое logging api как журнал, так как это jpa persistent) использовать jpa appender.Log4j + OpenJPA = NoClassDefFoundError: javax/persistence/AttributeConverter
Мой persistence.xml выглядит следующим образом
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>org.apache.camel.processor.interceptor.jpa.JpaTraceEventMessage</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextMapAttributeConverter</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextMapJsonAttributeConverter</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackAttributeConverter</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackJsonAttributeConverter</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.MarkerAttributeConverter</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.MessageAttributeConverter</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.StackTraceElementAttributeConverter</class>
<class>org.apache.logging.log4j.core.appender.db.jpa.converter.ThrowableAttributeConverter</class>
<class>com.xxxxxx.lab.logging.ReportEntity</class>
<properties>
<property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.HSQLDictionary"/>
<!-- value="buildSchema" to runtime forward map the DDL SQL; value="validate" makes no changes to the database -->
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
<property name="openjpa.RuntimeUnenhancedClasses" value="supported"/>
</properties>
</persistence-unit>
В соответствии с apidocs:
Many of the return types of LogEvent methods (e.g., StackTraceElement, Message, Marker, Throwable, ThreadContext.ContextStack, and Map) will not be recognized by the JPA provider. In conjunction with @Convert, you can use the converters in the org.apache.logging.log4j.core.appender.db.jpa.converter package to convert these types to database columns.
Поэтому я добавил все необходимые классы, но он по-прежнему бросает:
java.lang.NoClassDefFoundError: javax/persistence/AttributeConverter
Вы используете какие-либо конвертеры? –
Какая версия JPA вы используете? Это JPA 2.1? –
org.apache.openjpa v2.2.2. До сих пор у меня была простая конфигурация (как показано) и один класс Entity class ReportEntity, расширяющий BasicLogEventEntity без конверсии без объяснения причин. – Macchiatow