我目前正致力于 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) 在[内部课程]
答案 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。