title: WebLogic - Spring Boot and RmiDataSource
body: <p>I'm trying to deploy a Spring Boot app through Eclipse to a WebLogic server running localhost. It gives the following error:</p>
  <pre><code>org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'h2Console' defined in class path resource [org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.ServletRegistrationBean]: Factory method 'h2Console' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [br/com/brb/maf/config/DatabaseConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class weblogic.jdbc.common.internal.RmiDataSource: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156)
      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
      at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
      at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
      at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
      at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:152)
      at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:132)
      at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:92)
      at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172)
      at weblogic.servlet.internal.WebAppServletContext.initContainerInitializer(WebAppServletContext.java:1421)
      at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1360)
      at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1341)
      at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1907)
      at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3091)
      at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1849)
      at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:882)
      at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
      at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
      at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
      at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
      at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:78)
      at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:52)
      at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:754)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
      at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:264)
      at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:52)
      at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
      at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:90)
      at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:627)
      at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:171)
      at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:121)
      at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:347)
      at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:901)
      at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1456)
      at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:456)
      at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:181)
      at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:217)
      at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:14)
      at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:69)
      at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
      at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
      at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
      at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
      at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
      at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
  Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'h2Console' defined in class path resource [org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.ServletRegistrationBean]: Factory method 'h2Console' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [br/com/brb/maf/config/DatabaseConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class weblogic.jdbc.common.internal.RmiDataSource: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656)
      at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
      at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
      at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:211)
      at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:202)
      at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:96)
      at org.springframework.boot.web.servlet.ServletContextInitializerBeans.&lt;init&gt;(ServletContextInitializerBeans.java:85)
      at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:253)
      at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:227)
      at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:184)
      at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153)
      ... 51 common frames omitted
  Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.ServletRegistrationBean]: Factory method 'h2Console' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [br/com/brb/maf/config/DatabaseConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class weblogic.jdbc.common.internal.RmiDataSource: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
      at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
      ... 68 common frames omitted
  Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [br/com/brb/maf/config/DatabaseConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class weblogic.jdbc.common.internal.RmiDataSource: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
      at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
      at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)
      at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.getIfAvailable(DefaultListableBeanFactory.java:1920)
      at org.springframework.beans.factory.ObjectProvider.ifAvailable(ObjectProvider.java:91)
      at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.h2Console(H2ConsoleAutoConfiguration.java:72)
      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.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
      ... 69 common frames omitted
  Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class weblogic.jdbc.common.internal.RmiDataSource: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:208)
      at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
      at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:471)
      at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:350)
      at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:299)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:431)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)
      ... 84 common frames omitted
  Caused by: java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.cglib.proxy.Enhancer.generateClass(Enhancer.java:657)
      at org.springframework.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
      at org.springframework.cglib.core.ClassLoaderAwareGeneratorStrategy.generate(ClassLoaderAwareGeneratorStrategy.java:57)
      at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:358)
      at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582)
      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:110)
      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:108)
      at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
      at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
      at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:134)
      at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:319)
      at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:569)
      at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:416)
      at org.springframework.aop.framework.ObjenesisCglibAopProxy.createProxyClassAndInstance(ObjenesisCglibAopProxy.java:57)
      at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:205)
      ... 91 common frames omitted
  &lt;10/01/2022, 1:05:16,764 PM BRST&gt; &lt;Error&gt; &lt;HTTP&gt; &lt;BEA-101267&gt; &lt;Failed while destroying filter: WebSocket filter.
  java.lang.NullPointerException
      at weblogic.websocket.tyrus.TyrusServletFilter.destroy(TyrusServletFilter.java:305)
      at weblogic.servlet.internal.FilterManager$FilterDestroyAction.run(FilterManager.java:416)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
      at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
      at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
      Truncated. see log file for complete stacktrace
  &gt; 
  &lt;10/01/2022, 1:05:17,246 PM BRST&gt; &lt;Error&gt; &lt;Deployer&gt; &lt;BEA-149265&gt; &lt;Failure occurred in the execution of deployment request with ID &quot;2164666826627459&quot; for task &quot;2&quot; on [partition-name: DOMAIN]. Error is: &quot;weblogic.application.ModuleException: java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource&quot;
  weblogic.application.ModuleException: java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
      at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
      Truncated. see log file for complete stacktrace
  Caused By: java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.cglib.proxy.Enhancer.generateClass(Enhancer.java:657)
      at org.springframework.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
      at org.springframework.cglib.core.ClassLoaderAwareGeneratorStrategy.generate(ClassLoaderAwareGeneratorStrategy.java:57)
      at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:358)
      at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582)
      Truncated. see log file for complete stacktrace
  &gt; 
  &lt;10/01/2022, 1:05:17,250 PM BRST&gt; &lt;Error&gt; &lt;Deployer&gt; &lt;BEA-149202&gt; &lt;Encountered an exception while attempting to commit the 1 task for the application &quot;MAF&quot; on [partition-name: DOMAIN].&gt; 
  &lt;10/01/2022, 1:05:17,251 PM BRST&gt; &lt;Warning&gt; &lt;Deployer&gt; &lt;BEA-149004&gt; &lt;Failures were detected while initiating deploy task for application &quot;MAF&quot;.&gt; 
  &lt;10/01/2022, 1:05:17,251 PM BRST&gt; &lt;Warning&gt; &lt;Deployer&gt; &lt;BEA-149078&gt; &lt;Stack trace for message 149004
  weblogic.application.ModuleException: java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
      at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
      Truncated. see log file for complete stacktrace
  Caused By: java.lang.IllegalArgumentException: Cannot subclass final class weblogic.jdbc.common.internal.RmiDataSource
      at org.springframework.cglib.proxy.Enhancer.generateClass(Enhancer.java:657)
      at org.springframework.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
      at org.springframework.cglib.core.ClassLoaderAwareGeneratorStrategy.generate(ClassLoaderAwareGeneratorStrategy.java:57)
      at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:358)
      at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582)
      Truncated. see log file for complete stacktrace
  </code></pre>
  <p>Is this some dependency issue or something similar? I noticed that it is trying to subclass a final class (RmiDataSource).
  I'm using Spring Boot 2.2.4 and WebLogic 12.2.1.1.0
  When using undertow, it starts correctly.
  I have three Oracle datasources and i'm using the h2 db for the spring batch repository</p>