Ошибка при использовании Entity Enhancement с Eclipse, openJPA, Tomcat и OracleDB - PullRequest
1 голос
/ 23 марта 2012

Я разработал несколько приложений JSF / JPA с Eclipse Link, Glassfish и OracleDB. Моя новая тема - портирование приложения на Tomcat с openJPA. Поэтому я тестирую небольшое простое приложение с этой новой технологией. Это сложнее, как я думал. Я узнал отсюда:

http://openjpa.apache.org/enhancement-with-eclipse.html

, что я должен улучшить свои сущности. Я попытался с Eclipse Plugin, который частично был успешным, но имел мало проблем. В нескольких постах я увидел, что рекомендуется использовать метод Ant, который я сейчас пытаюсь. Я сделал ту же конфигурацию, как указано в ссылке, но я получаю ошибку, и я не знаю, в чем проблема:

C: \ Users \ XXX \ EclipseWorkspace \ testJSF \ enhance.xml: 26: org.apache.openjpa.util.MetaDataException: MetaDataFactory не удалось быть настроенным (conf.newMetaDataFactoryInstance () вернул null). это может означать, что свойства конфигурации не найдены. Убедиться, что у вас есть файл META-INF / persistence.xml, который доступен в вашем classpath или файл свойств, который вы используете для настройки доступен. Если вы используете Ant, см. Или атрибуты вложенного элемента задачи. Это также может произойти, если ваши дистрибутивы OpenJPA повреждены, или если ваша политика безопасности слишком строгая.

Мой усиление.xml

<path id="enhance.cp">
    <pathelement location="${basedir}${file.separator}${build.dir}"/>
        <fileset dir="${basedir}${file.separator}${openjpa.libs}">
            <include name="**/*.jar"/>
        </fileset>
</path>

<property name="cp" refid="enhance.cp"/>

<target name="openjpa.libs.check" unless="openjpa.libs">
    <fail message="Please set -Dopenjpa.libs in your builder configuration!" />
</target>

<target name="build.dir.check" unless="build.dir">
    <fail message="Please set -Dbuild.dir in your builder configuration!" />
</target>

<target name="enhance" depends="openjpa.libs.check, build.dir.check">
    <echo message="${cp}"/>
    <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
        <classpath refid="enhance.cp"/>
    </taskdef>
    <openjpac>
        <classpath refid="enhance.cp"/>
    </openjpac>
</target>

Я не верю, что файл persistence.xml не может быть найден, потому что когда я использую плагин Eclipse, я могу извлечь данные из базы данных. Но тогда я получаю эту ошибку:

Сущность "openJPA.Todo_" была улучшена на уровне "2", но текущая уровень улучшения "1.241.207".

Я не понимаю, что это значит. Я становлюсь очень разочарованным. Как мне получить рабочий проект с Eclipse, Tomcat и OpenJpa?

Заранее спасибо

Steve

UPDATE

Здесь я нашел учебник, в котором говорится, что нужно скопировать файл persistence.xml в папку сборки: http://openjpa.apache.org/enhancement-with-ant.html Я скопировал папку META-INF с файлом persistence.xml в папку сборки, и теперь описанная ошибка исчезла.

Но энхансер не находит мой постоянный класс:

enhance:
        [echo] C:\Users\XXX\EclipseWorkspace\testJSF\build;C:\Users\XXX\EclipseWorkspace\testJSF\lib\openjpa-all-2.2.0.jar
    [openjpac] 12  TODO  TRACE  [Worker-119] openjpa.Runtime - Setting the following properties from "file:/C:/Users/XXX/EclipseWorkspace/testJSF/build/META-INF/persistence.xml" into configuration: {openjpa.ConnectionPassword=XXX, openjpa.ConnectionDriverName=oracle.jdbc.driver.OracleDriver, openjpa.MetaDataFactory=jpa(Types=openJPA.Todo_), openjpa.Log=DefaultLevel=TRACE, PersistenceVersion=2.0, openjpa.ConnectionUserName=XXX, openjpa.ConnectionURL=jdbc:oracle:thin:@XX.XXX.XXX.XXX:TEST, openjpa.Id=TODO}
    [openjpac] 29  TODO  TRACE  [Worker-119] openjpa.Runtime - No cache marshaller found for id org.apache.openjpa.conf.MetaDataCacheMaintenance.
    [openjpac] 454  TODO  TRACE  [Worker-119] openjpa.MetaData - Scanning resource "META-INF/orm.xml" for persistent types.
    [openjpac] 461  TODO  TRACE  [Worker-119] openjpa.MetaData - The persistent unit root url is "null"
    [openjpac] 461  TODO  TRACE  [Worker-119] openjpa.MetaData - parsePersistentTypeNames() found [openJPA.Todo_].
    [openjpac] 461  TODO  TRACE  [Worker-119] openjpa.MetaData - Found 1 classes with metadata in 19 milliseconds.
    [openjpac] 472  TODO  INFO   [Worker-119] openjpa.Tool - Enhancer running on type "openJPA.Todo_".
    [openjpac] java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: openJPA.Todo_

И поиск продолжается!

...