Есть ли способ принудительного выполнения RuntimeUnenhancedClasses в конфигурации EE - PullRequest
1 голос
/ 24 августа 2011

Я потратил полчаса на отладку нового кода, который не сломан, потому что я забыл проверить (снова!) Свои журналы на предмет этого страшного сообщения:

 WARN   openjpa.Enhance - Creating subclass for ...

Я использую OpenJPA 2.1.0 внутрисборка снимков OpenEJB 3.2, Java 1.6.0_25 и Eclipse Helios.Мои сущности улучшаются с помощью ant PCEnhancerTask.

Мой META-INF / openjpa.xml содержит

 <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
 <property name="openjpa.DynamicEnhancementAgent" value="false" />

В любом случае с помощью этой конфигурации EE OpenJPA принудительно применяет параметр RuntimeUnenhancedClasses, так же как и это?в конфигурации SE?

I подозреваю моя 'реальная' проблема связана с обновлением Eclipse svn, которое иногда касается моего источника сущностей JPA, вызывая сборку, которая перезаписывает мои расширенные классы.

Это расстраивает, как часто я запускаю модульный тест из IDE, который каким-то странным образом дает сбой, и я копаюсь в своем коде в поисках проблемы, когда все, что мне нужно сделать, это запустить энхансер.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

Поместите <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" /> META-INF / persistence.xml.

Похоже, что мы регистрируем это действие на уровне отладки (возможно, это должен быть информационный уровень), но OpenEJB установит для этого свойства значение по умолчанию, как это было в OpenJPA 1.x, чтобы приложения, работающие с OpenEJB 3.1.x / OpenJPA 1.x по-прежнему будет работать без изменений в 3.2.x. Если свойство уже задано в файле persistence.xml, оно никогда не будет переопределено, поэтому его установка будет иметь желаемый эффект.

Открыт для предложений о том, как спасти других в той же лодке когда-нибудь в будущем. Похоже, либо поиск в файле openjpa.xml и просмотр уже установленного свойства, либо выдача сообщения журнала в info сделают это - или оба.

0 голосов
/ 06 сентября 2011

По какой-то причине ваши свойства не подбираются при работе в контейнере.

У меня есть несколько возможных решений:

  1. Попробуйте установить свои свойства в META-INF / persistence.xml. Я предполагаю, что у вас есть эти свойства в файле openjpa.xml по какой-то причине, но это может помочь нам выяснить, где настоящая проблема.

  2. Установить -Dopenjpa.RuntimeUnenhancedClasses = false в качестве свойства JVM. Это будет применяться ко всем PU для данной JVM.

  3. Перейти к версии OpenJPA, которая> = 2.0.0. RuntimeUnenhancedClasses был отключен как поведение по умолчанию в этом выпуске.

...