访问EntityManager时出错 - openjpa - WAS liberty profile

时间:2015-10-19 02:10:34

标签: java mysql openjpa websphere-liberty

我目前正致力于 WebSphere Application Server Liberty Profile 8.5.5.7上的openjpa项目。,数据库为 MySQL

在运行时,当我尝试访问实体管理器时,我收到如下错误:

  

引起:javax.ejb.EJBException:请参阅嵌套异常;嵌套异常是:java.lang.Exception:请参见嵌套Throwable       at com.ibm.ejs.container.util.ExceptionUtil.EJBException(ExceptionUtil.java:461)       ... 27更多
  引起:java.lang.Exception:请参见嵌套Throwable       at com.ibm.ejs.container.util.ExceptionUtil.Exception(ExceptionUtil.java:317)       ... 27更多

  引起:java.lang.AbstractMethodError:org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(Ljavax / persistence / SynchronizationType; Ljava / util / Map;)Ljavax / persistence / EntityManager;
      at com.ibm.ws.jpa.container.v21.internal.JPA21Runtime.createEntityManagerInstance(JPA21Runtime.java:104)       在[内部课程]

目前我使用以下依赖项:org.apache.openjpa:openjpa-all-2.4.0

在部署期间,我看到以下堆栈跟踪

  

[err] 458 appname INFO [Default Executor-thread-16] openjpa.jdbc.JDBC - 使用字典类" org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL 5.6.25-0ubuntu0.15.04.1,MySQL-AB JDBC驱动程序mysql-connector-java-5.0.8(修订版:$ {svn.Revision}))。

  [错误] 502 appname INFO [默认执行程序 - 线程-16] openjpa.jdbc.JDBC - 使用JDBC驱动程序连接到MySQL 5.5版MySQL-AB JDBC驱动程序版本mysql-connector-java-5.0.8(修订版:$ {svn。修订})。

但这并没有中止我的部署过程,我仍然可以使用我的服务。

在server.xml中添加了以下功能

<featureManager>
    <feature>webProfile-7.0</feature>
    <feature>localConnector-1.0</feature>
    <feature>jndi-1.0</feature>
    <feature>jdbc-4.1</feature>
    <feature>jaxrs-2.0</feature>
    <feature>jpa-2.1</feature>
</featureManager>

假设这是一个兼容性问题,我在2.2.1之前使用了旧版本的openjpa。
从server.xml中禁用了jpa-2.1功能
但没有运气。

非常感谢上述问题的任何信息/参考/解决方案。感谢

<小时/> 的更新 感谢更新。 将server.xml更新为

<featureManager>
    <feature>localConnector-1.0</feature>
    <feature>jndi-1.0</feature>
    <feature>jdbc-4.1</feature>
    <feature>jpa-2.0</feature>
    <feature>jaxrs-2.0</feature>
    <feature>jaxrsClient-2.0</feature>
    <feature>ejbLite-3.2</feature>
</featureManager>

仍然无法选择EntityManager。

  

[ERROR]错误处理期间出错,放弃!   嵌套异常是:javax.ejb.EJBException:参见嵌套异常;嵌套异常是:java.lang.NullPointerException同时使用params []调用public void foo()。
  [错误] SRVE0777E:应用程序类引发的异常&#39; org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage:116&#39;   java.lang.RuntimeException:org.apache.cxf.interceptor.Fault:嵌套异常是:javax.ejb.EJBException:参见嵌套异常;嵌套异常是:java.lang.NullPointerException同时使用params []调用public void foo()。
      at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)       在[内部班级]
  引起:org.apache.cxf.interceptor.Fault:嵌套异常是:javax.ejb.EJBException:参见嵌套异常;嵌套异常是:在使用params []调用public void foo()时发生的java.lang.NullPointerException。
      在org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:167)
      ... 1更多
  引起:javax.ejb.EJBTransactionRolledbackException:嵌套异常是:javax.ejb.EJBException:参见嵌套异常;嵌套异常是:java.lang.NullPointerException       at com.ibm.ejs.container.BusinessExceptionMappingStrategy.mapCSIException(BusinessExceptionMappingStrategy.java:124)       在[内部课程]

1 个答案:

答案 0 :(得分:4)

您已指定jpa-2.1,但OpenJPA不支持JPA 2.1。 WebSphere附带的JPA 2.1提供程序是EclipseLink。您需要从persistence.xml中删除对OpenJPA的引用并使用默认的EclipseLink(尽管有一些known behavior changes),或者如Gas建议的那样,您需要将webProfile-7.0和jpa-2.1替换为jpa-如果您想继续使用OpenJPA,请使用2.0。