Weblogic 无法刷新 JDBC 持久性管理器

Weblogic Failed to refresh JDBC Persistence Manager

我是运行 weblogic portal 10.3

我们最近将 oracle 从 11.2 升级到 12.1.0.2.0

当 Weblogic 为 运行 时转储了 11g 数据库模式,然后导入到 12c 数据库中。

但是现在我看到一个奇怪的问题:

在我的 managedServer1.log.yyyy-MM-ddTHH-mm 日志文件中启动时,我看到以下异常:

    ####<Sep 8, 2016 11:28:41 AM CEST> <Error> <DataSync> <devmaster.xxx.com> <managedServer1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-0002F70BB8045A5B8E84> <e54db9af27ea4009:1806ee21:157091f8869:-7ffd-0000000000000002> <1473326921799> <BEA-400610> <Error performing initial refresh of persistent store. DataSync is probably in an incomplete or corrupted state.com.bea.p13n.management.data.repository.PersistenceException: Failed to refresh JDBC Persistence Manager.
    at com.bea.p13n.management.data.repository.persistence.transactions.AbstractTx.sync(AbstractTx.java:67)
    at com.bea.p13n.management.data.repository.persistence.JdbcDataSource.refresh(JdbcDataSource.java:215)
    at com.bea.p13n.management.data.repository.persistence.JdbcPersistenceManager.refresh(JdbcPersistenceManager.java:113)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.<init>(AbstractDataRepository.java:164)
    at com.bea.p13n.management.data.repository.MasterDataRepository.<init>(MasterDataRepository.java:49)
    at com.bea.p13n.management.data.repository.DataRepositoryFactory.getMasterDataRepository(DataRepositoryFactory.java:441)
    at com.bea.p13n.property.internal.PropertySetManagerImpl.ejbCreate(PropertySetManagerImpl.java:274)
    at com.bea.p13n.property.internal.PropertySetManager_bjbwe8_Impl.ejbCreate(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at weblogic.ejb.container.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:232)
    at weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:132)
    at weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:148)
    at weblogic.ejb.container.internal.BaseRemoteObject.preInvoke(BaseRemoteObject.java:229)
    at weblogic.ejb.container.internal.StatelessRemoteObject.__WL_preInvoke(StatelessRemoteObject.java:41)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:24)
    at com.bea.p13n.property.internal.PropertySetManager_bjbwe8_EOImpl.getPropertySets(Unknown Source)
    at com.bea.wsrp.consumer.management.ProducerManagerImpl.internalGetCustomUserProperties(ProducerManagerImpl.java:867)
    at com.bea.wsrp.consumer.management.ProducerManagerImpl.<init>(ProducerManagerImpl.java:116)
    at com.bea.wsrp.consumer.management.producer.ProducerManager$Factory.<clinit>(ProducerManager.java:663)
    at com.bea.wsrp.consumer.registry.DbProducerRegistryAdapter.sync(DbProducerRegistryAdapter.java:60)
    at com.bea.wsrp.consumer.registry.ProducerRegistry$AddOrUpdateProducerAction.run(ProducerRegistry.java:725)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at com.bea.wsrp.consumer.registry.ProducerRegistry.refreshProducers(ProducerRegistry.java:420)
    at com.bea.wsrp.consumer.registry.ProducerRegistry.loadRegistry(ProducerRegistry.java:286)
    at com.bea.wsrp.consumer.registry.ProducerRegistry.load(ProducerRegistry.java:196)
    at com.bea.wsrp.consumer.registry.ProducerRegistry.getInstance(ProducerRegistry.java:160)
    at com.bea.netuix.servlets.manager.PortalServlet.startProducerRegistryFilePoller(PortalServlet.java:599)
    at com.bea.netuix.servlets.manager.PortalServlet.reinitInternal(PortalServlet.java:313)
    at com.bea.netuix.servlets.manager.PortalServlet.initInternal(PortalServlet.java:268)
    at com.bea.netuix.servlets.manager.PortalServlet.access0(PortalServlet.java:125)
    at com.bea.netuix.servlets.manager.PortalServlet$ServletLifecycleListenerImpl.init(PortalServlet.java:2190)
    at com.bea.netuix.util.ServletLifecycleListener.initOrReinitInternal(ServletLifecycleListener.java:131)
    at com.bea.netuix.util.ServletLifecycleService.addServletLifecycleListener(ServletLifecycleService.java:252)
    at com.bea.netuix.util.ServletLifecycleService.addServletLifecycleListener(ServletLifecycleService.java:183)
    at com.bea.netuix.servlets.manager.PortalServlet.init(PortalServlet.java:259)
    at com.bea.netuix.servlets.manager.PortalServlet.init(PortalServlet.java:236)
    at javax.servlet.GenericServlet.init(GenericServlet.java:242)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)
    at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
    at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539)
    at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1984)
    at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1958)
    at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1877)
    at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3174)
    at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1527)
    at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:489)
    at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:427)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
    at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:201)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:249)
    at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:427)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
    at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:28)
    at weblogic.application.internal.BaseDeployment.next(BaseDeployment.java:672)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212)
    at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:59)
    at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
    at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:187)
    at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:379)
    at weblogic.management.deploy.internal.DeploymentAdapter.doActivate(DeploymentAdapter.java:52)
    at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
    at weblogic.management.deploy.internal.AppTransition.transitionApp(AppTransition.java:31)
    at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
    at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170)
    at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124)
    at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
    at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
    at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
    Caused By: com.bea.p13n.management.data.repository.PersistenceException: Cannot commit: java.sql.SQLException: Could not commit with auto-commit set on
    at com.bea.p13n.management.data.repository.persistence.transactions.AbstractTx.doTransaction(AbstractTx.java:118)
    at com.bea.p13n.management.data.repository.persistence.transactions.AbstractTx.sync(AbstractTx.java:62)
    at com.bea.p13n.management.data.repository.persistence.JdbcDataSource.refresh(JdbcDataSource.java:215)
    at com.bea.p13n.management.data.repository.persistence.JdbcPersistenceManager.refresh(JdbcPersistenceManager.java:113)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.<init>(AbstractDataRepository.java:164)
    at com.bea.p13n.management.data.repository.MasterDataRepository.<init>(MasterDataRepository.java:49)

这样做的结果是 EJB 导致了一些 NullPointerExceptions 而我的代码失败了。如果我刷新页面的次数足够多,EJB 似乎已刷新并开始正常工作。

但是重启后这个问题又出现了。

我尝试在启动前清除WEBLOGICJMSSTATE table,但似乎没有效果。

有什么建议吗?

谢谢。

原来是新驱动的问题。我想线索就在文中

java.sql.SQLException: Could not commit with auto-commit set on

我摆脱了设置此 JVM 参数的错误:

-Doracle.jdbc.autoCommitSpecCompliant=false

感谢这里的回答:java.sql.SQLException: Could not commit with auto-commit set on at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4443)