Моя проблема в этом исключении:
Caused by: <openjpa-2.1.1-r422266:1148538 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
Я пытаюсь получить очень простое Java-приложение с запущенными jsf и jpa, но, похоже, проблема в улучшении моих сущностей.Насколько я знаю, пытается OpenJPA улучшить мои сущности во время выполнения, которые перечислены в persistence.xml
, однако нет агента, чтобы сделать это.Ключевое слово для этого: Enhancing at Runtime
, верно?
Я думал, что расширение будет автоматически выполнено сервером приложений при развертывании?Как я могу настроить это?
Моя среда:
- Glassfish 3.1.1
- Derby, который интегрирован в Glassfish
- OpenJPA 2.1.1
- Mojarra JSF 2.1.3
Обновление № 1:
После некоторых комментариев я добавил следующие строки в свойpersistence.xml
:
<property name="openjpa.DynamicEnhancementAgent" value="false"/>
<property name="openjpa.RuntimeUnenhancedClasses" value="supported" />
Это работает сейчас, но OpenJPA выдает это предупреждение:
SEVERE: 52 myApp WARN [http-thread-pool-8080(5)] openjpa.Enhance - Creating subclass for "[class myApp.model.entities.AbstractEntity, class myApp.model.entities.Post]".
This means that your application will be less efficient and will consume more memory than it would if you ran the OpenJPA enhancer. Additionally, lazy loading will not be available for one-to-one and many-to-one persistent attributes in types using field access; they will be loaded eagerly instead.
Я думаю, что это не может быть решением.
Обновление № 2:
Обратитесь к ответу fvu, я попытался определить параметр -javaagent
jvm в domain.xml
и через консоль веб-администратора.После перезапуска снова появилась проблема.
Обновление № 3:
См. Обновление № 2, я немного поиграл.Должно быть выдано сообщение об ошибке, когда используется параметр -javaagent
, но файл отсутствует, верно?Да, вот оно:
Waiting for domain1 to start .Command start-domain failed.
Error starting domain domain1.
The server exited prematurely with exit code 1.
Before it died, it produced the following output:
Error occurred during initialization of VM
agent library failed to init: instrument
Error opening zip file or JAR manifest missing : /tmp/openjpa.jar
Если я копирую агента в это местоположение, эта ошибка не появляется, но openjpa все еще не может улучшить мои сущности!