1

我正在将我现有的应用程序从一个迁移WAS 8.0WAS Liberty Profile.

该应用程序是一个 EJB Web 应用程序,由 JSF 2.2、EJB 3、JPA-Eclipselink 2.5.1 组成。

我已经创建server.xml并尝试在WAS Liberty Profile. 我遇到以下错误:

Application Error

SRVE0777E: Exception thrown by application class 'javax.faces.webapp.FacesServlet.service:230' 

javax.servlet.ServletException: See nested exception; nested exception is: javax.persistence.PersistenceException: java.lang.VerifyError: Bad return type Exception Details: Location: org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.getConversionManager()Lorg/eclipse/persistence/internal/core/helper/CoreConversionManager; @4: areturn Reason: Type 'org/eclipse/persistence/internal/helper/ConversionManager' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/internal/core/helper/CoreConversionManager' (from method signature) Current Frame: bci: @4 flags: { } locals: { 'org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform' } stack: { 'org/eclipse/persistence/internal/helper/ConversionManager' } Bytecode: 0x0000000: 2ab6 02a7 b0 

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:230)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
at [internal classes]

Caused by: javax.ejb.EJBException: See nested exception; nested exception is: javax.persistence.PersistenceException: java.lang.VerifyError: Bad return type Exception Details: Location: org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.getConversionManager()Lorg/eclipse/persistence/internal/core/helper/CoreConversionManager; @4: areturn Reason: Type 'org/eclipse/persistence/internal/helper/ConversionManager' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/internal/core/helper/CoreConversionManager' (from method signature) Current Frame: bci: @4 flags: { } locals: { 'org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform' } stack: { 'org/eclipse/persistence/internal/helper/ConversionManager' } Bytecode: 0x0000000: 2ab6 02a7 b0 

at com.ibm.ejs.container.util.ExceptionUtil.EJBException(ExceptionUtil.java:461)
at [internal classes]
at net.umbrella.svc.doc.myapp.service.EJSLocal0SLUserServiceBean_0f29535e.findUserByCdsId(EJSLocal0SLUserServiceBean_0f29535e.java:-1)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:433)
at [internal classes]
at net.umbrella.svc.doc.myapp.service.Serializable$UserService$1566937387$Proxy$_$$_Weld$EnterpriseProxy$.findUserByCdsId
at net.umbrella.svc.doc.myapp.web.myapp.LoginCheckPhaseListener.afterPhase(LoginCheckPhaseListener.java:52)
at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:117)
... 1 more

Caused by: javax.persistence.PersistenceException: java.lang.VerifyError: Bad return type Exception Details: Location: org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.getConversionManager()Lorg/eclipse/persistence/internal/core/helper/CoreConversionManager; @4: areturn Reason: Type 'org/eclipse/persistence/internal/helper/ConversionManager' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/internal/core/helper/CoreConversionManager' (from method signature) Current Frame: bci: @4 flags: { } locals: { 'org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform' } stack: { 'org/eclipse/persistence/internal/helper/ConversionManager' } Bytecode: 0x0000000: 2ab6 02a7 b0 

at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:837)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:207)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:307)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:318)
at com.ibm.ws.jpa.container.v21.internal.JPA21Runtime.createEntityManagerInstance(JPA21Runtime.java:111)
at [internal classes]
at net.umbrella.svc.doc.myapp.web.tool.jpa.TimingDecoratedEntityManager.createNamedQuery(TimingDecoratedEntityManager.java:58)
at net.umbrella.svc.doc.myapp.service.UserServiceBean.findUserByCdsId(UserServiceBean.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.ibm.ejs.container.EJSContainer.invokeProceed(EJSContainer.java:5317)
... 12 more

Caused by: java.lang.VerifyError: Bad return type Exception Details: Location: org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.getConversionManager()Lorg/eclipse/persistence/internal/core/helper/CoreConversionManager; @4: areturn Reason: Type 'org/eclipse/persistence/internal/helper/ConversionManager' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/internal/core/helper/CoreConversionManager' (from method signature) Current Frame: bci: @4 flags: { } locals: { 'org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform' } stack: { 'org/eclipse/persistence/internal/helper/ConversionManager' } Bytecode: 0x0000000: 2ab6 02a7 b0 

at java.lang.Class.getDeclaredConstructors0(Class.java:-2)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.newInstance(Class.java:412)
at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.newInstanceFromClass(PrivilegedAccessHelper.java:516)
at org.eclipse.persistence.sessions.DatasourceLogin.setPlatformClassName(DatasourceLogin.java:541)
at [internal classes]
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateLogins(EntityManagerSetupImpl.java:2358)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateSession(EntityManagerSetupImpl.java:2744)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:732)
... 25 more

有没有人遇到过这种错误?我错过了配置中的任何内容吗?

请告诉我。

4

1 回答 1

3

应用程序中的 EclipseLink 与 Liberty 中的内置 EclipseLink 冲突。要在没有内置 JPA 提供程序的情况下在 Liberty 中使用 JPA,请在服务器配置中指定 jpaContainer-2.1 功能部件而不是 jpa-2.1 功能部件。

于 2018-01-08T14:13:54.697 回答