Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apiman 3.1.2.Final and Tomcat 9 #2613

Open
gdelbos opened this issue Oct 31, 2023 · 0 comments
Open

Apiman 3.1.2.Final and Tomcat 9 #2613

gdelbos opened this issue Oct 31, 2023 · 0 comments

Comments

@gdelbos
Copy link

gdelbos commented Oct 31, 2023

Apiman Version

3.1.2.Final

Apiman Manager Distro

Tomcat

Apiman Gateway Distro

Tomcat

Java Version

C:\ > java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

Operating System

Windows 10

Are you running Apiman in a container, or on an orchestration platform?

No (Bare Metal)

Describe the bug

  • Follow the Download page step by step (https://www.apiman.io/download.html > Tomcat)
  • First link is dead, but retrieve tomcat 9.0.82 instead of tomcat 9.0.76
  • Unpack everything as stated in the Install part of the documentation
  • Start the server

Expected behaviour

  • No error when starting the server
  • No error when login

Actual behaviour

  • Stack trace when initializing the H2 database
  • Stack trace when login (rendering the usage of the application impossible)

How to Reproduce

Follow the Download for Tomcat installation.

Relevant log output

// Stack trace during server startup
31-Oct-2023 15:19:50.841 SEVERE [main] liquibase.integration.null liquibase.exception.MigrationFailedException: Migration failed for changeset liquibase/current/20220330-discoverability.xml::discoverability-view-trigger::msavy:
     Reason: liquibase.exception.DatabaseException: Error creating or initializing trigger "API_PLAN_DISCOVERABILITY_INSERT_TRIGGER" object, class "io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger", cause: "java.lang.ClassCastException: class io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger cannot be cast to class org.h2.api.Trigger (io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @640c34fc; org.h2.api.Trigger is in unnamed module of loader java.net.URLClassLoader @5f8e8a9d)"; see root cause for details; SQL statement:
CREATE TRIGGER api_plan_discoverability_insert_trigger AFTER INSERT ON api_plans FOR EACH ROW CALL "io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger" [90043-199] [Failed SQL: (90043) CREATE TRIGGER api_plan_discoverability_insert_trigger AFTER INSERT ON api_plans FOR EACH ROW CALL "io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger"]
        liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset liquibase/current/20220330-discoverability.xml::discoverability-view-trigger::msavy:
     Reason: liquibase.exception.DatabaseException: Error creating or initializing trigger "API_PLAN_DISCOVERABILITY_INSERT_TRIGGER" object, class "io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger", cause: "java.lang.ClassCastException: class io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger cannot be cast to class org.h2.api.Trigger (io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @640c34fc; org.h2.api.Trigger is in unnamed module of loader java.net.URLClassLoader @5f8e8a9d)"; see root cause for details; SQL statement:
CREATE TRIGGER api_plan_discoverability_insert_trigger AFTER INSERT ON api_plans FOR EACH ROW CALL "io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger" [90043-199] [Failed SQL: (90043) CREATE TRIGGER api_plan_discoverability_insert_trigger AFTER INSERT ON api_plans FOR EACH ROW CALL "io.apiman.manager.api.jpa.h2.ApiPlanDiscoverabilityTrigger"]
                at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:126)
                at liquibase.Liquibase.lambda$null$0(Liquibase.java:263)
                at liquibase.Scope.lambda$child$0(Scope.java:180)
                at liquibase.Scope.child(Scope.java:189)
                at liquibase.Scope.child(Scope.java:179)
                at liquibase.Scope.child(Scope.java:158)
                at liquibase.Scope.child(Scope.java:243)
                at liquibase.Liquibase.lambda$update$1(Liquibase.java:262)
                at liquibase.Scope.lambda$child$0(Scope.java:180)
                at liquibase.Scope.child(Scope.java:189)
                at liquibase.Scope.child(Scope.java:179)
                at liquibase.Scope.child(Scope.java:158)
                at liquibase.Liquibase.runInScope(Liquibase.java:2414)
                at liquibase.Liquibase.update(Liquibase.java:209)
                at liquibase.Liquibase.update(Liquibase.java:195)
                at liquibase.integration.cdi.CDILiquibase.performUpdate(CDILiquibase.java:142)
                at liquibase.integration.cdi.CDILiquibase.onStartup(CDILiquibase.java:125)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:83)
                at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.postConstruct(DefaultLifecycleCallbackInvoker.java:66)
                at org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct(BasicInjectionTarget.java:122)
                at liquibase.integration.cdi.CDIBootstrap$1.create(CDIBootstrap.java:92)
                at liquibase.integration.cdi.CDIBootstrap$1.create(CDIBootstrap.java:31)
                at org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96)
                at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100)
                at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
                at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:102)
                at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:131)
                at liquibase.integration.cdi.CDILiquibase$Proxy$_$$_WeldClientProxy.toString(Unknown Source)
                at liquibase.integration.cdi.CDIBootstrap.afterDeploymentValidation(CDIBootstrap.java:108)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
                at org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:187)
                at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
                at org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123)
                at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
                at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
                at javax.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:124)
                at org.jboss.weld.util.Observers.notify(Observers.java:166)
                at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285)
                at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273)
                at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177)
                at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:171)
                at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53)
                at org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35)
                at org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28)
                at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:510)
                at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:93)
                at org.jboss.weld.environment.servlet.WeldServletLifecycle.initialize(WeldServletLifecycle.java:237)
                at org.jboss.weld.environment.servlet.EnhancedListener.onStartup(EnhancedListener.java:62)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4904)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:661)
                at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1023)
                at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1910)
                at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
                at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:824)
                at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
                at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1617)
                at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)
                at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
                at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893)
                at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:794)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:248)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:921)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)

// Strack trace after login
[ERROR] 2023-10-31 15:20:32.161 [http-nio-8080-exec-6] [ConfigurationJS] - Servlet.service() for servlet [ConfigurationJS] in context with path [/apimanui] threw exception [java.lang.NullPointerException: Cannot invoke "io.apiman.manager.ui.server.IUIConfig.getManagementApiEndpoint()" because the return value of "io.apiman.manager.ui.server.servlets.ConfigurationServlet.getConfig()" is null] with root cause
java.lang.NullPointerException: Cannot invoke "io.apiman.manager.ui.server.IUIConfig.getManagementApiEndpoint()" because the return value of "io.apiman.manager.ui.server.servlets.ConfigurationServlet.getConfig()" is null
        at io.apiman.manager.ui.server.servlets.ConfigurationServlet.doGet(ConfigurationServlet.java:86) ~[classes/:?]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) ~[servlet-api.jar:4.0.FR]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[servlet-api.jar:4.0.FR]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[catalina.jar:9.0.82]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[catalina.jar:9.0.82]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-websocket.jar:9.0.82]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[catalina.jar:9.0.82]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) [catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) [catalina.jar:9.0.82]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:596) [catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) [catalina.jar:9.0.82]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) [catalina.jar:9.0.82]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) [catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.82]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [catalina.jar:9.0.82]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) [tomcat-coyote.jar:9.0.82]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) [tomcat-coyote.jar:9.0.82]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) [tomcat-coyote.jar:9.0.82]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) [tomcat-coyote.jar:9.0.82]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-coyote.jar:9.0.82]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-util.jar:9.0.82]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-util.jar:9.0.82]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.82]
        at java.lang.Thread.run(Thread.java:833) [?:?]
[INFO ] 2023-10-31 15:20:32.813 [http-nio-8080-exec-3] [/apimanui] - Marking servlet [TranslationJS] as unavailable
[ERROR] 2023-10-31 15:20:32.813 [http-nio-8080-exec-3] [TranslationJS] - Allocate exception for servlet [TranslationJS]
java.lang.NullPointerException: Cannot invoke "io.apiman.manager.ui.server.IUIConfig.getExternalMessageBundlesDir()" because the return value of "io.apiman.manager.ui.server.servlets.AbstractUIServlet.getConfig()" is null
        at io.apiman.manager.ui.server.servlets.TranslationServlet.loadExternalMessageBundles(TranslationServlet.java:66) ~[classes/:?]
        at io.apiman.manager.ui.server.servlets.TranslationServlet.<init>(TranslationServlet.java:60) ~[classes/:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143) ~[catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1020) ~[catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:747) ~[catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:116) [catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) [catalina.jar:9.0.82]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:596) [catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) [catalina.jar:9.0.82]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) [catalina.jar:9.0.82]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) [catalina.jar:9.0.82]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.82]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [catalina.jar:9.0.82]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) [tomcat-coyote.jar:9.0.82]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) [tomcat-coyote.jar:9.0.82]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) [tomcat-coyote.jar:9.0.82]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) [tomcat-coyote.jar:9.0.82]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-coyote.jar:9.0.82]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-util.jar:9.0.82]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-util.jar:9.0.82]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.82]
        at java.lang.Thread.run(Thread.java:833) [?:?]

Anything else?

No response

@gdelbos gdelbos changed the title apiman 3.1.2.Final Apiman 3.1.2.Final and Tomcat 9 Oct 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant