2015-10-31 2 views
0

Я пытаюсь создать простой проект с Java EE. Тем не менее, я получаю огромную стеклу.Исключение при инъекции EntityManager с TomEE

org.apache.openejb.config.ValidationFailedException: Module failed validation. AppModule(name=BarSystem_war_exploded) 
at org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88) 
at org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:312) 
at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:974) 
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1227) 
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100) 
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) 
at org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(TomcatWebAppBuilder.java:663) 
at org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(TomcatWebAppBuilder.java:622) 
at org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(TomcatWebappDeployer.java:43) 
at org.apache.openejb.assembler.DeployerEjb.deploy(DeployerEjb.java:176) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
at org.apache.openejb.security.internal.InternalSecurityInterceptor.invoke(InternalSecurityInterceptor.java:35) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181) 
at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85) 
at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227) 
at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) 
at org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370) 
at org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:181) 

Так что у меня UserDAO так:

@Stateless 
public class UserDAO { 

@PersistenceContext 
private EntityManager em; 

public void createUser(String name) { 
//  User user = new User(); 
//  user.setName(name); 
//  em.persist(user); 
//  System.out.println("Maliiii"); 
    } 
} 

когда я закомментировать EntityManager и @PersistenceContext, то TomEE работает без исключений. Однако, только удаляя комментарии и развертывание, я получаю огромную стеклу. Прежде чем я переключился на TomEE, я попробовал со стеклянную рыбку, и эта проблема не возникла. Однако возникла проблема с настройкой пула соединений jdbc в диспетчере приложений, поэтому я переключился на tomee.

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 

<persistence-unit name="NewPersistenceUnit"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 
     <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/bar"/> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
     <property name="hibernate.connection.username" value="root"/> 
     <property name="hibernate.connection.password" value="root"/> 
     <!--<property name="hibernate.archive.autodetection" value="class"/>--> 
     <property name="hibernate.show_sql" value="true"/> 
     <property name="hibernate.format_sql" value="true"/> 
     <property name="hbm2ddl.auto" value="create"/> 
    </properties> 
</persistence-unit> 

какие-либо идеи, как решить эту проблему?

+0

Опуская атрибут 'unitName', зависит от производителя, попробуйте ввести этот путь' @PersistenceContext (name = "NewPersistenceUnit") '. – wypieprz

+0

Я попробовал, также добавил имя в persistence.xml, но не работал :( –

+0

Является ли это всей stacktrace? Ничего больше в журнале? –

ответ

0

Первое, что приходит на ум, заключается в том, что стандартная установка TomEE имеет реализацию JPJ JPG, но не спящий режим. Если это так, попробуйте удалить <provider> с persistence.xml. Существует версия TomEE с Eclipselink (называется Plume), но нет официальной версии с спящим режимом. Если вы хотите спящий режим, вы можете включить его в зависимость от вашей WAR.

Однако, стеклянная рыба также не включает спящий режим, поэтому вы, вероятно, уже имеете спящий режим в своей ВОЙНЕ?

+0

Hello , Я пытался использовать maven. В pom fle у меня есть: 'hibernate-jpa-2.1-api, hibernate-entitymanager, hibernate-core'. –

+0

Тогда кажется, что мой ответ не применяется. У вас установлен драйвер MySQL jdbc TomEE? В противном случае у меня нет идей - попробуйте найти документацию Tomice о том, как использовать спящий режим вместо встроенного OpenJPA, возможно, что-то нужно сделать. Не могли бы вы разместить оставшуюся часть stackrace? другие вложенные исключения, потому что верхнее исключение исходит от EJB, а не от JPA, и не имеет полезного сообщения. – OndrejM

0
  • Как @OndrejM сказал кот использует апачский открытый JPA, как это реализация JPA, так что вы можете изменить провайдера

    org.apache.openjpa.persistence.PersistenceProviderImpl

в укажите реализацию поставщика сохранения.

Также вам необходимо изменить конфигурацию конфигурации JDBC эс использовать OpneJpa вместо спящего режима, чтобы быть как

**

<property name="openjpa.ConnectionDriverName"value="your value" /> 
<property name="openjpa.ConnectionURL" value="your value" /> 
<property name="openjpa.ConnectionUserName" value="your value" /> 
<property name="openjpa.ConnectionPassword" value="your value" /> 

**

  • в случае, если вам нужно работать с Hibernate, вы можете просмотреть этот вопрос How to use TomEE with Hibernate
0

Так что я узнал об ошибке, и это действительно было глупо. Поскольку я использую InteliJ, я запрашиваю таблицу «users» от ide. Я также запросил его из mysql, но не заметил изменений. Оказалось, что jpa создал таблицу «Пользователи» и «ПОЛЬЗОВАТЕЛИ» (я попытался изменить имя в @Entity) и все время писал эти две таблицы. Поэтому я заметил таблицы после обновления «Таблиц» в Workbench MySql.Спасибо всем за помощь, и я прошу прощения за тупую проблему :)

Смежные вопросы