opengeospatial / teamengine

TEAM Engine (Test, Evaluation, And Measurement Engine) is an engine for testing web services and other resources written in JAVA. It executes test scripts written in Compliance Test Language (CTL), TestNG and other languages. It is lightweight and easy to run as a command line or to setup as a service. It can be used to test any type of service or encoding. It is also the official tool used by the Open Geospatial Consortium (OGC) for compliance testing.
Apache License 2.0
45 stars 41 forks source link

TEAM Engine Tomcat 10.1 update #556

Closed manxon closed 9 months ago

manxon commented 2 years ago

Good day,

I just wanted to know if there are plan for updating teamengine to use a more recent versión of Tomcat server. I tested the teamengine.war for Tomcat 10 but it throws some exceptions regarding the te_base resources inclusion in the context.xml and for some filters.

Has someone given it a try?

Thank you

Julian

ghobona commented 2 years ago

@manxon Yes, indeed. The current plan is for TEAM Engine 6.0 to support a more recent version of Tomcat and Java. We are currently experimenting but focused work on developing TEAM Engine 6.0 will start in Q3 of 2023.

manxon commented 2 years ago

Thank you @ghobona I'll give it a try and you know =)

dstenger commented 1 year ago

Precondition: #511

dstenger commented 1 year ago

Following branch was created in ets-ogcapi-features10 for testing purposes: https://github.com/opengeospatial/ets-ogcapi-features10/tree/java17Tomcat10TeamEngine6

Configured Java 17 and Tomcat 10 in Dockerfile: https://github.com/opengeospatial/ets-ogcapi-features10/commit/d205a1cdafb0be859af6e9c8fba32f55b3e1bbae

dstenger commented 1 year ago

Following errors are logged during startup of Tomcat 10:

e2417f> 04-May-2023 16:23:13.511 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/teamengine]
e2417f> 04-May-2023 16:23:13.531 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context] failed to set property [processTlds] to [false]
e2417f> 04-May-2023 16:23:13.531 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context] failed to set property [aliases] to [/docs=/root/te_base/resources/docs,/about=/root/te_base/scripts,/reports=/root/te_base/users,/site=/root/te_base/resources/site]
e2417f> 04-May-2023 16:23:13.533 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context/Realm] failed to set property [root] to [/root/te_base/users]
e2417f> 04-May-2023 16:23:13.534 SEVERE [main] org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception
e2417f>     java.lang.ClassNotFoundException: org.apache.catalina.loader.VirtualWebappLoader
e2417f>         at java.base/java.net.URLClassLoader.findClass(Unknown Source)
e2417f>         at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
e2417f>         at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
e2417f>         at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:102)
e2417f>         at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1264)
e2417f>         at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
e2417f>         at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
e2417f>         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
e2417f>         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
e2417f>         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
e2417f>         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
e2417f>         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
e2417f>         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
e2417f>         at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
e2417f>         at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
e2417f>         at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1522)
e2417f>         at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:736)
e2417f>         at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:680)
e2417f>         at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:950)
e2417f>         at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:315)
e2417f>         at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
e2417f>         at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
e2417f>         at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:137)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
e2417f>         at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
e2417f>         at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
e2417f>         at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:713)
e2417f>         at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1136)
e2417f>         at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1971)
e2417f>         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
e2417f>         at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
e2417f>         at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
e2417f>         at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
e2417f>         at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1046)
e2417f>         at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:428)
e2417f>         at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1656)
e2417f>         at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
e2417f>         at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
e2417f>         at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
e2417f>         at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
e2417f>         at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:898)
e2417f>         at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:846)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
e2417f>         at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
e2417f>         at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
e2417f>         at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
e2417f>         at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
e2417f>         at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871)
e2417f>         at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:241)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:913)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
e2417f>         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
e2417f>         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
e2417f>         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
e2417f>         at java.base/java.lang.reflect.Method.invoke(Unknown Source)
e2417f>         at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
e2417f>         at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
e2417f> 04-May-2023 16:23:13.536 SEVERE [main] org.apache.catalina.startup.ContextConfig.processContextConfig Parse error in context.xml for [/teamengine]
e2417f>     org.xml.sax.SAXParseException; systemId: file:/usr/local/tomcat/webapps/teamengine/META-INF/context.xml; lineNumber: 18; columnNumber: 63; Error at line [18] column [63]: [org.apache.catalina.loader.VirtualWebappLoader]
e2417f>         at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1953)
e2417f>         at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1985)
e2417f>         at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1267)
e2417f>         at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
e2417f>         at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
e2417f>         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
e2417f>         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
e2417f>         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
e2417f>         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
e2417f>         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
e2417f>         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
e2417f>         at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
e2417f>         at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
e2417f>         at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1522)
e2417f>         at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:736)
e2417f>         at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:680)
e2417f>         at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:950)
e2417f>         at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:315)
e2417f>         at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
e2417f>         at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
e2417f>         at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:137)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
e2417f>         at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
e2417f>         at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
e2417f>         at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:713)
e2417f>         at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1136)
e2417f>         at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1971)
e2417f>         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
e2417f>         at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
e2417f>         at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
e2417f>         at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
e2417f>         at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1046)
e2417f>         at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:428)
e2417f>         at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1656)
e2417f>         at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
e2417f>         at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
e2417f>         at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
e2417f>         at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
e2417f>         at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:898)
e2417f>         at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:846)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
e2417f>         at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
e2417f>         at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
e2417f>         at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
e2417f>         at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
e2417f>         at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871)
e2417f>         at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:241)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:913)
e2417f>         at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
e2417f>         at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
e2417f>         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
e2417f>         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
e2417f>         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
e2417f>         at java.base/java.lang.reflect.Method.invoke(Unknown Source)
e2417f>         at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
e2417f>         at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
e2417f>     Caused by: java.lang.ClassNotFoundException: org.apache.catalina.loader.VirtualWebappLoader
e2417f>         at java.base/java.net.URLClassLoader.findClass(Unknown Source)
e2417f>         at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
e2417f>         at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
e2417f>         at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:102)
e2417f>         at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1264)
e2417f>         ... 57 more
e2417f> 04-May-2023 16:23:13.537 SEVERE [main] org.apache.catalina.startup.ContextConfig.processContextConfig Occurred at line [18] column [63]
e2417f> 04-May-2023 16:23:13.718 SEVERE [main] org.apache.catalina.startup.ContextConfig.configureStart Marking this application unavailable due to previous error(s)
e2417f> May 04, 2023 4:23:13 PM java.util.ArrayList forEach
e2417f> WARNING: Name = EPSG Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "8" for "maxActive" property, which is being ignored.
e2417f> 04-May-2023 16:23:13.766 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal One or more components marked the context as not correctly configured
e2417f> 04-May-2023 16:23:13.773 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Context [/teamengine] startup failed due to previous errors
e2417f> 04-May-2023 16:23:13.778 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/teamengine] has finished in [267] ms
e2417f> 04-May-2023 16:23:13.780 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
e2417f> 04-May-2023 16:23:13.792 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [311] milliseconds
dstenger commented 1 year ago

Error was resolved by updating the configuration of context.xml: https://github.com/opengeospatial/teamengine/commit/7e52232e3f934cd8d528138c0479f8c27f88e0ff

However, new errors occur now.

dstenger commented 1 year ago

Documentation about migration from Tomcat 7 to 10:

dstenger commented 1 year ago

Updated Servlet API to v6: https://github.com/opengeospatial/teamengine/commit/847c4bb3e0f07fc6f6f0aaf3995360e2c1405735

Open TODOs:

dstenger commented 1 year ago

Executed script to detect dependency commons-fileupload:commons-fileupload in TEAM Engine and all test suites. Only occurrence is in TEAM Engine:

Results:
--------
teamengine/ contains dependency commons-fileupload:commons-fileupload

Thus, no test suite must be updated in this regard.

dstenger commented 1 year ago

@dstenger Fileupload problem might not occur with Tomcat 9. If that is the case, we will update to Tomcat 9 in a first step.

dstenger commented 1 year ago

Decision during CITE SC meeting: Continue to work on migration to Tomcat 10.

Also, UserFilesRealmTest and VerifyPBKDF2Realm unit tests fail.

dstenger commented 1 year ago

The failures of UserFilesRealmTest and VerifyPBKDF2Realm are related to the changes in PBKDF2Realm and UserFilesRealm. Those shall be reviewed separately as soon as the migration to Tomcat 10 is finished.

dstenger commented 1 year ago

Apache Commons is about to release an updated version of fileupload dependency: https://github.com/apache/commons-fileupload#where-can-i-get-the-latest-release

I built the current SNAPSHOT of commons-fileupload2-jakarta, included it into TEAM Engine project and compilation with Java 17 was successful afterwards. Next step: Execute functional test with Tomcat 10.1.

dstenger commented 1 year ago

Updated web.xml to use 6.0 schema and removed not supported org.apache.commons.fileupload.servlet.FileCleanerCleanup listener: https://github.com/opengeospatial/teamengine/commit/0fd1a8d7ee1366b63856e18476be47490b778ee5

Introduced commons-fileupload2-jakarta SNAPSHOT dependency: https://github.com/opengeospatial/teamengine/commit/826d6324ba7758ef1f3a94b5e444fe410547e4a8 This must be replaced with a release as soon as the release exists.

dstenger commented 1 year ago

Tried to start TEAM Engine with Tomcat 10.1. Following error occurs:

...
c3c728> 12-Jul-2023 10:01:58.116 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context/Realm] failed to set property [root] to [/root/te_base/users]
c3c728> Jul 12, 2023 10:02:01 AM org.apache.catalina.core.StandardContext loadOnStartup
c3c728> SEVERE: Servlet [TestSuiteController] in web application [/teamengine] threw load() exception
c3c728> java.lang.ClassNotFoundException: javax.servlet.Filter
c3c728>     at java.base/java.net.URLClassLoader.findClass(Unknown Source)
c3c728>     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
c3c728>     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
c3c728>     at java.base/java.lang.ClassLoader.defineClass1(Native Method)
c3c728>     at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
c3c728>     at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
c3c728>     at java.base/java.net.URLClassLoader.defineClass(Unknown Source)
c3c728>     at java.base/java.net.URLClassLoader$1.run(Unknown Source)
...

Solution: jersey/ JAX-RS dependencies must be updated to versions supporting Servlet API 6.0.

dstenger commented 1 year ago

SNAPSHOT version of commons-fileupload2-jakarta was replaced by version 2.0.0-M1 which was released 18 days ago: https://github.com/opengeospatial/teamengine/commit/5347afb4d5955cca1e35f7fb230c5338c85d3c42

dstenger commented 1 year ago

Jersey dependency must be upgraded from version 1.x to 3.x.

dstenger commented 1 year ago

As there is a high complexity of the update when migrating directly from Tomcat 7 to Tomcat 10.1 (Jakarta EE) and Servlet Spec 6 at the same time, it was decided to do the update step by step:

  1. Current status: TEAM Engine is executable with Tomcat 7.
  2. Make TEAM Engine executable with Tomcat 9.
  3. Use tomcat-jakartaee-migration tool to make TEAM Engine runnable with Tomcat 10.1.
  4. Update source code of TEAM Engine to make it executable with Tomcat 10.1.
  5. Optionally, migrate to new functions of Servlet Spec 6.

Workflow:

  1. Current status was pushed to new branch 6.0-Tomcat10.
    • This is a backup of the changes already made which become relevant again when finally moving to Tomcat 10.
  2. All commits which are Tomcat 10 related were removed from branch 6.0.
    • This is the working branch for the update (first step: Tomcat 9).
ghobona commented 1 year ago

@dstenger I agree with the proposal to target Tomcat 9 first.

dstenger commented 1 year ago

Migration to Tomcat 9

Relevant migration guides:

Created test branch in ets-wms13 to verify updates against this test suite: java17Tomcat9TeamEngine6 Configured Java 17 and Tomcat 9 in Dockerfile: https://github.com/opengeospatial/ets-wms13/commit/ddcef87005741484b69292fb952992f765229540 A CTL based test suite was chosen here because TestNG based test suites might need further updates (E.g. update of Jersey dependency to version 2).

Cherry picked commit from branch 6.0-Tomcat10:

stenger@elsbeere:~/git/teamengine$ git cherry-pick -e 7e52232e3f934cd8d528138c0479f8c27f88e0ff
[6.0 5585c33c] Update context.xml to be usable with newer Tomcat versions (#556)
 Date: Thu May 4 19:08:55 2023 +0200
 1 file changed, 5 insertions(+), 2 deletions(-)

New commit: https://github.com/opengeospatial/teamengine/commit/5585c33cb286af6ea5240064b5b5551fe02e8532

When starting TEAM Engine with the created test environment of ets-wms13 (mvn clean install docker:run -Pdocker), an error occurs during start up of Tomcat 9:

...
b19291> 25-Aug-2023 11:35:00.284 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context] failed to set property [processTlds] to [false]
b19291> 25-Aug-2023 11:35:00.284 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context] failed to set property [aliases] to [/docs=/root/te_base/resources/docs,/about=/root/te_base/scripts,/reports=/root/te_base/users,/site=/root/te_base/resources/site]
b19291> 25-Aug-2023 11:35:00.286 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context/Realm] failed to set property [root] to [/root/te_base/users]
b19291> Aug 25, 2023 11:35:01 AM java.util.ArrayList forEach
b19291> WARNING: Name = EPSG Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "8" for "maxActive" property, which is being ignored.
b19291> Aug 25, 2023 11:35:02 AM com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider
b19291> SEVERE: The provider class, class com.occamlab.te.spi.jaxrs.ApplicationComponents, could not be instantiated. Processing will continue but the class will not be utilized
b19291> java.lang.IllegalArgumentException
b19291>     at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
b19291>     at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:153)
b19291>     at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:424)
b19291>     at com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess(AnnotationScannerListener.java:138)
b19291>     at com.sun.jersey.core.spi.scanning.JarFileScanner.scan(JarFileScanner.java:97)
b19291>     at com.sun.jersey.core.spi.scanning.uri.JarZipSchemeScanner$1.f(JarZipSchemeScanner.java:78)
b19291>     at com.sun.jersey.core.util.Closing.f(Closing.java:71)
b19291>     at com.sun.jersey.core.spi.scanning.uri.JarZipSchemeScanner.scan(JarZipSchemeScanner.java:75)
b19291>     at com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:226)
b19291>     at com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:142)
b19291>     at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:80)
b19291>     at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104)
b19291>     at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
b19291>     at com.occamlab.te.spi.jaxrs.ApplicationComponents.<init>(ApplicationComponents.java:28)
b19291>     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
b19291>     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
b19291>     at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
b19291>     at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
b19291>     at java.base/java.lang.reflect.ReflectAccess.newInstance(Unknown Source)
b19291>     at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(Unknown Source)
b19291>     at java.base/java.lang.Class.newInstance(Unknown Source)
b19291>     at com.sun.jersey.core.spi.component.ComponentConstructor._getInstance(ComponentConstructor.java:193)
b19291>     at com.sun.jersey.core.spi.component.ComponentConstructor.getInstance(ComponentConstructor.java:180)
b19291>     at com.sun.jersey.core.spi.component.ProviderFactory.__getComponentProvider(ProviderFactory.java:166)
b19291>     at com.sun.jersey.core.spi.component.ProviderFactory._getComponentProvider(ProviderFactory.java:159)
b19291>     at com.sun.jersey.core.spi.component.ProviderFactory.getComponentProvider(ProviderFactory.java:153)
b19291>     at com.sun.jersey.server.impl.application.DeferredResourceConfig$ApplicationHolder.<init>(DeferredResourceConfig.java:86)
b19291>     at com.sun.jersey.server.impl.application.DeferredResourceConfig$ApplicationHolder.<init>(DeferredResourceConfig.java:79)
b19291>     at com.sun.jersey.server.impl.application.DeferredResourceConfig.getApplication(DeferredResourceConfig.java:76)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1164)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795)
b19291>     at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)
b19291>     at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509)
b19291>     at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:339)
b19291>     at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
b19291>     at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)
b19291>     at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394)
b19291>     at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577)
b19291>     at javax.servlet.GenericServlet.init(GenericServlet.java:143)
b19291>     at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1106)
b19291>     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1063)
b19291>     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:960)
b19291>     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4677)
b19291>     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4984)
b19291>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
b19291>     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
b19291>     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
b19291>     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:662)
b19291>     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1184)
b19291>     at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1932)
b19291>     at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
b19291>     at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
b19291>     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
b19291>     at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
b19291>     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1094)
b19291>     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:476)
b19291>     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1617)
b19291>     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318)
b19291>     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
b19291>     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
b19291>     at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
b19291>     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893)
b19291>     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:795)
b19291>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
b19291>     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1328)
b19291>     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1318)
b19291>     at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
b19291>     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
b19291>     at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
b19291>     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
b19291>     at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:249)
b19291>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
b19291>     at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428)
b19291>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
b19291>     at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:922)
b19291>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
b19291>     at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
b19291>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
b19291>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
b19291>     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
b19291>     at java.base/java.lang.reflect.Method.invoke(Unknown Source)
b19291>     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
b19291>     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
...
b19291> Aug 25, 2023 11:35:02 AM org.apache.catalina.core.StandardContext loadOnStartup
b19291> SEVERE: Servlet [TestSuiteController] in web application [/teamengine] threw load() exception
b19291> com.sun.jersey.api.container.ContainerException: The Application class com.occamlab.te.spi.jaxrs.ApplicationComponents could not be instantiated
b19291>     at com.sun.jersey.server.impl.application.DeferredResourceConfig$ApplicationHolder.<init>(DeferredResourceConfig.java:88)
b19291>     at com.sun.jersey.server.impl.application.DeferredResourceConfig$ApplicationHolder.<init>(DeferredResourceConfig.java:79)
b19291>     at com.sun.jersey.server.impl.application.DeferredResourceConfig.getApplication(DeferredResourceConfig.java:76)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1164)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799)
b19291>     at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795)
...
dstenger commented 1 year ago

This does not affect the functionality of a test run. However, when running a test with WMS 1.3, the HTML report is not displayed:

895dc6> Aug 28, 2023 7:20:14 AM org.apache.catalina.core.ApplicationDispatcher invoke
895dc6> SEVERE: Servlet.service() for servlet [default] threw exception
895dc6> java.io.FileNotFoundException: The requested resource [/teamengine/reports/ogctest/s0001/result/index.html] is not available
895dc6>     at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:868)
895dc6>     at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:519)
895dc6>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
895dc6>     at org.apache.catalina.servlets.DefaultServlet.service(DefaultServlet.java:499)
895dc6>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
895dc6>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
895dc6>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
895dc6>     at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:661)
895dc6>     at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:537)
895dc6>     at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:480)
895dc6>     at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:994)
895dc6>     at org.apache.jsp.viewSessionLog_jsp._jspService(viewSessionLog_jsp.java:451)
895dc6>     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
895dc6>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
895dc6>     at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
895dc6>     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
895dc6>     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
895dc6>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
895dc6>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
895dc6>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
895dc6>     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
895dc6>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
895dc6>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
895dc6>     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
895dc6>     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
895dc6>     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:596)
895dc6>     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
895dc6>     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
895dc6>     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673)
895dc6>     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
895dc6>     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
895dc6>     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
895dc6>     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
895dc6>     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
895dc6>     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1790)
895dc6>     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
895dc6>     at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
895dc6>     at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
895dc6>     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
895dc6>     at java.base/java.lang.Thread.run(Unknown Source)

Further, an update of JAX-RS (Jersey is used as implementation) from version 1 to 2.1 might be necessary as Jersey does not support JDK 11 (and probably higher) anymore: https://github.com/eclipse-ee4j/jersey/issues/5005#issuecomment-1068019530

dstenger commented 1 year ago

Updated Tomcat dependency and related code: https://github.com/opengeospatial/teamengine/commit/7c499ad0fab32439a50c9e346a9d12f135aa159b However, the above documented stack traces both still occur.

dstenger commented 1 year ago

context.xml had to be updated as some functionalities are not supported anymore (aliases were replaced by PreResources): https://github.com/opengeospatial/teamengine/commit/730ed41140614062a998e8c043343b5635bc5c2e Now, reports can be retrieved again. However, stack trace reported here still occurs.

dstenger commented 1 year ago

Decision during CITE meeting 2023-08-28:

dstenger commented 1 year ago

During start up three warnings occur:

...
f5e580> 28-Aug-2023 09:03:41.444 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context] failed to set property [processTlds] to [false]
f5e580> 28-Aug-2023 09:03:41.446 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context/Realm] failed to set property [root] to [/usr/local/tomcat/webapps/teamengine/te_base/users]
f5e580> Aug 28, 2023 9:03:42 AM java.util.ArrayList forEach
f5e580> WARNING: Name = EPSG Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "8" for "maxActive" property, which is being ignored.
f5e580> Aug 28, 2023 9:03:45 AM com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider
...

All three warning were resolved:

dstenger commented 1 year ago

A first local test with JAX-RS 2.1/Jersey 2.40 was successful. All smoke tests of the Web Browser Interface returned the expected results.

dstenger commented 1 year ago

Migration to JAX-RS 2.1 and Jersey 2.40 was completed: https://github.com/opengeospatial/teamengine/commit/5b61c03a95a284b53fb18ed59aeafd0c2c3b78be

dstenger commented 1 year ago

Summary of current status

dstenger commented 1 year ago

Use tomcat-jakartaee-migration tool to make TEAM Engine runnable with Tomcat 10.1.

First test with the tool:

stenger@elsbeere:~/git/tomcat-jakartaee-migration$ ./mvnw verify
stenger@elsbeere:~/git/tomcat-jakartaee-migration/target$ java -jar jakartaee-migration-1.0.8-SNAPSHOT-shaded.jar ~/git/teamengine/teamengine-web/target/teamengine.war ~/git/ets-wms13/src/docker/teamengine.war
Performing migration from source [/home/stenger/git/teamengine/teamengine-web/target/teamengine.war] to destination [/home/stenger/git/ets-wms13/src/docker/teamengine.war] with Jakarta EE specification profile [TOMCAT]
Migration starting for archive [teamengine.war] using streaming
Migration starting for archive [WEB-INF/lib/javax.activation-api-1.2.0.jar] using streaming
Migration finished for archive [WEB-INF/lib/javax.activation-api-1.2.0.jar]
Migration starting for archive [WEB-INF/lib/commons-io-2.7.jar] using streaming
Migration finished for archive [WEB-INF/lib/commons-io-2.7.jar]
Migration skipped for archive [WEB-INF/lib/slf4j-api-1.7.20.jar] because it is excluded (the archive was copied unchanged)
Migration starting for archive [WEB-INF/lib/hk2-locator-2.6.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/hk2-locator-2.6.1.jar]
Migration starting for archive [WEB-INF/lib/jstl-api-1.2.jar] using streaming
Migration finished for archive [WEB-INF/lib/jstl-api-1.2.jar]
Migration starting for archive [WEB-INF/lib/hk2-utils-2.6.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/hk2-utils-2.6.1.jar]
Migration starting for archive [WEB-INF/lib/testng-6.9.10.jar] using streaming
Migration finished for archive [WEB-INF/lib/testng-6.9.10.jar]
Migration starting for archive [WEB-INF/lib/jakarta.ws.rs-api-2.1.6.jar] using streaming
Migration finished for archive [WEB-INF/lib/jakarta.ws.rs-api-2.1.6.jar]
Migration starting for archive [WEB-INF/lib/activation-1.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/activation-1.1.jar]
Migration starting for archive [WEB-INF/lib/saxon9-9.0.0.8.jar] using streaming
Migration finished for archive [WEB-INF/lib/saxon9-9.0.0.8.jar]
Migration starting for archive [WEB-INF/lib/jakarta.validation-api-2.0.2.jar] using streaming
Migration finished for archive [WEB-INF/lib/jakarta.validation-api-2.0.2.jar]
Migration starting for archive [WEB-INF/lib/failureaccess-1.0.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/failureaccess-1.0.1.jar]
Migration starting for archive [WEB-INF/lib/jena-iri-3.1.0.jar] using streaming
Migration finished for archive [WEB-INF/lib/jena-iri-3.1.0.jar]
Migration starting for archive [WEB-INF/lib/mail-1.4.7.jar] using streaming
Migration finished for archive [WEB-INF/lib/mail-1.4.7.jar]
Migration starting for archive [WEB-INF/lib/jakarta.inject-2.6.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/jakarta.inject-2.6.1.jar]
Migration starting for archive [WEB-INF/lib/jena-base-3.1.0.jar] using streaming
Migration finished for archive [WEB-INF/lib/jena-base-3.1.0.jar]
Migration starting for archive [WEB-INF/lib/commons-fileupload-1.5.jar] using streaming
Migration finished for archive [WEB-INF/lib/commons-fileupload-1.5.jar]
Migration starting for archive [WEB-INF/lib/teamengine-spi-6.0-SNAPSHOT.jar] using streaming
Migration finished for archive [WEB-INF/lib/teamengine-spi-6.0-SNAPSHOT.jar]
Migration starting for archive [WEB-INF/lib/javassist-3.29.2-GA.jar] using streaming
Migration finished for archive [WEB-INF/lib/javassist-3.29.2-GA.jar]
Migration starting for archive [WEB-INF/lib/jing-20091111.jar] using streaming
Migration finished for archive [WEB-INF/lib/jing-20091111.jar]
Migration starting for archive [WEB-INF/lib/guava-29.0-jre.jar] using streaming
Migration finished for archive [WEB-INF/lib/guava-29.0-jre.jar]
Migration starting for archive [WEB-INF/lib/aopalliance-repackaged-2.6.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/aopalliance-repackaged-2.6.1.jar]
Migration starting for archive [WEB-INF/lib/jcommander-1.48.jar] using streaming
Migration finished for archive [WEB-INF/lib/jcommander-1.48.jar]
Migration starting for archive [WEB-INF/lib/json-simple-1.1.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/json-simple-1.1.1.jar]
Migration starting for archive [WEB-INF/lib/teamengine-core-6.0-SNAPSHOT.jar] using streaming
Migration finished for archive [WEB-INF/lib/teamengine-core-6.0-SNAPSHOT.jar]
Migration starting for archive [WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar] using streaming
Migration finished for archive [WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar]
Migration skipped for archive [WEB-INF/lib/commons-codec-1.11.jar] because it is excluded (the archive was copied unchanged)
Migration starting for archive [WEB-INF/lib/hk2-api-2.6.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/hk2-api-2.6.1.jar]
Migration starting for archive [WEB-INF/lib/checker-qual-2.11.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/checker-qual-2.11.1.jar]
Migration starting for archive [WEB-INF/lib/jsr305-3.0.2.jar] using streaming
Migration finished for archive [WEB-INF/lib/jsr305-3.0.2.jar]
Migration starting for archive [WEB-INF/lib/javax.servlet.jsp.jstl-1.2.3.jar] using streaming
Migration finished for archive [WEB-INF/lib/javax.servlet.jsp.jstl-1.2.3.jar]
Migration starting for archive [WEB-INF/lib/collection-0.6.jar] using streaming
Migration finished for archive [WEB-INF/lib/collection-0.6.jar]
Migration starting for archive [WEB-INF/lib/jakarta.annotation-api-1.3.5.jar] using streaming
Migration finished for archive [WEB-INF/lib/jakarta.annotation-api-1.3.5.jar]
Migration starting for archive [WEB-INF/lib/jena-shaded-guava-3.1.0.jar] using streaming
Migration finished for archive [WEB-INF/lib/jena-shaded-guava-3.1.0.jar]
Migration starting for archive [WEB-INF/lib/jena-core-3.1.0.jar] using streaming
Migration finished for archive [WEB-INF/lib/jena-core-3.1.0.jar]
Migration starting for archive [WEB-INF/lib/osgi-resource-locator-1.0.3.jar] using streaming
Migration finished for archive [WEB-INF/lib/osgi-resource-locator-1.0.3.jar]
Migration starting for archive [WEB-INF/lib/mimepull-1.9.15.jar] using streaming
Migration finished for archive [WEB-INF/lib/mimepull-1.9.15.jar]
Migration starting for archive [WEB-INF/lib/commons-cli-1.3.jar] using streaming
Migration finished for archive [WEB-INF/lib/commons-cli-1.3.jar]
Migration starting for archive [WEB-INF/lib/tomcat-servlet-api-9.0.78.jar] using streaming
Migration finished for archive [WEB-INF/lib/tomcat-servlet-api-9.0.78.jar]
Migration starting for archive [WEB-INF/lib/teamengine-spi-ctl-6.0-SNAPSHOT.jar] using streaming
Migration finished for archive [WEB-INF/lib/teamengine-spi-ctl-6.0-SNAPSHOT.jar]
Migration starting for archive [WEB-INF/lib/j2objc-annotations-1.3.jar] using streaming
Migration finished for archive [WEB-INF/lib/j2objc-annotations-1.3.jar]
Migration starting for archive [WEB-INF/lib/jaxb-api-2.3.1.jar] using streaming
Migration finished for archive [WEB-INF/lib/jaxb-api-2.3.1.jar]
Migration starting for archive [WEB-INF/lib/isorelax-20030108.jar] using streaming
Migration finished for archive [WEB-INF/lib/isorelax-20030108.jar]
Migration starting for archive [WEB-INF/lib/joda-time-2.9.4.jar] using streaming
Migration finished for archive [WEB-INF/lib/joda-time-2.9.4.jar]
Migration starting for archive [WEB-INF/lib/error_prone_annotations-2.3.4.jar] using streaming
Migration finished for archive [WEB-INF/lib/error_prone_annotations-2.3.4.jar]
Migration finished for archive [teamengine.war]
Migration completed successfully in [2,821] milliseconds
stenger@elsbeere:~/git/ets-wms13$ git diff
diff --git a/src/docker/Dockerfile b/src/docker/Dockerfile
index 78ddfb3..e5c24bd 100644
--- a/src/docker/Dockerfile
+++ b/src/docker/Dockerfile
@@ -1,4 +1,4 @@
-FROM tomcat:9-jre17
+FROM tomcat:10.1-jre17

 MAINTAINER Dirk Stenger <stenger@lat-lon.de>
 MAINTAINER Torsten Friebe <friebe@lat-lon.de>
@@ -6,8 +6,8 @@ MAINTAINER Torsten Friebe <friebe@lat-lon.de>
 RUN apt update && apt install -y unzip

 # add TEAM engine webapp
-ADD maven/dependency/teamengine-web-*.war /root/
-RUN cd /root/ && unzip -q teamengine-web-*.war -d /usr/local/tomcat/webapps/teamengine
+ADD teamengine.war /root/
+RUN cd /root/ && unzip -q teamengine.war -d /usr/local/tomcat/webapps/teamengine

 # add common libs
 ADD maven/dependency/teamengine-web-*-common-libs.zip /root/
mvn clean install docker:run -Pdocker
...
229f66> 05-Sep-2023 18:27:46.827 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.1.11]
229f66> 05-Sep-2023 18:27:46.833 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/teamengine]
229f66> Sep 05, 2023 6:27:48 PM org.apache.catalina.core.StandardContext filterStart
229f66> SEVERE: Exception starting filter [AuthenticationFilter]
229f66> java.lang.NoClassDefFoundError: javax/servlet/Filter
229f66>     at java.base/java.lang.ClassLoader.defineClass1(Native Method)
229f66>     at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
229f66>     at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
229f66>     at java.base/java.net.URLClassLoader.defineClass(Unknown Source)
229f66>     at java.base/java.net.URLClassLoader$1.run(Unknown Source)
229f66>     at java.base/java.net.URLClassLoader$1.run(Unknown Source)
229f66>     at java.base/java.security.AccessController.doPrivileged(Unknown Source)
229f66>     at java.base/java.net.URLClassLoader.findClass(Unknown Source)
229f66>     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
229f66>     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
229f66>     at java.base/java.lang.Class.forName0(Native Method)
229f66>     at java.base/java.lang.Class.forName(Unknown Source)
229f66>     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1421)
229f66>     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
229f66>     at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:491)
229f66>     at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:473)
229f66>     at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143)
229f66>     at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:243)
229f66>     at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
229f66>     at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4309)
229f66>     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4922)
229f66>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
229f66>     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
229f66>     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
229f66>     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:713)
229f66>     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1136)
229f66>     at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1971)
229f66>     at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
229f66>     at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
229f66>     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
229f66>     at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
229f66>     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1046)
229f66>     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:428)
229f66>     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1656)
229f66>     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
229f66>     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
229f66>     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
229f66>     at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
229f66>     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893)
229f66>     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:846)
229f66>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
229f66>     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1328)
229f66>     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1318)
229f66>     at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
229f66>     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
229f66>     at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
229f66>     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
229f66>     at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:241)
229f66>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
229f66>     at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428)
229f66>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
229f66>     at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:918)
229f66>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
229f66>     at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
229f66>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
229f66>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
229f66>     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
229f66>     at java.base/java.lang.reflect.Method.invoke(Unknown Source)
229f66>     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
229f66>     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
229f66> Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter
229f66>     at java.base/java.net.URLClassLoader.findClass(Unknown Source)
229f66>     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
229f66>     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
229f66>     ... 60 more
229f66> 
229f66> 05-Sep-2023 18:27:48.097 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file
229f66> 05-Sep-2023 18:27:48.097 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Context [/teamengine] startup failed due to previous errors
229f66> 05-Sep-2023 18:27:48.106 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/teamengine] has finished in [1,272] ms
229f66> 05-Sep-2023 18:27:48.108 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
229f66> 05-Sep-2023 18:27:48.117 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [1319] milliseconds

This error might be caused by the fact that the teamengine-web-*-common-libs.zip artifact was not migrated by the tool.

dstenger commented 1 year ago

Migration to Tomcat 10.1

Relevant migration guides:

Created test branch in ets-wms13 which uses Tomcat 10.1 in Dockerfile: java17Tomcat101TeamEngine6

Previously used tool is also mentioned by migration guide for version 10 and can be downloaded as binary from Tomcat website directly: https://tomcat.apache.org/download-migration.cgi

The tool can also be executed against the common-libs of TEAM Engine. Thus, it was executed twice:

./migrate.sh ~/git/teamengine/teamengine-web/target/teamengine.war ~/git/ets-wms13/src/docker/teamengine.war
./migrate.sh ~/git/teamengine/teamengine-web/target/teamengine-common-libs.zip ~/git/ets-wms13/src/docker/teamengine-common-libs.zip

Afterwards, those files were temporarily included in the Dockerfile of ets-wms13:

git diff src/docker/Dockerfile
...
-ADD maven/dependency/teamengine-web-*.war /root/
-RUN cd /root/ && unzip -q teamengine-web-*.war -d /usr/local/tomcat/webapps/teamengine
+ADD teamengine.war /root/
+RUN cd /root/ && unzip -q teamengine.war -d /usr/local/tomcat/webapps/teamengine
...
-ADD maven/dependency/teamengine-web-*-common-libs.zip /root/
-RUN cd /root/ && unzip -q teamengine-web-*-common-libs.zip -d /usr/local/tomcat/lib
+ADD teamengine-common-libs.zip /root/
+RUN cd /root/ && unzip -q teamengine-common-libs.zip -d /usr/local/tomcat/lib
...

Now, there is no error occurring during start up of Tomcat 10.1 (using ets-wms13 Dockerfile).

However, when trying to login via Web Browser Interface, an exception is displayed:

java.lang.NoSuchMethodError: 'java.lang.String org.apache.catalina.realm.GenericPrincipal.getPassword()'
    com.occamlab.te.realm.PBKDF2Realm.authenticate(PBKDF2Realm.java:88)
    org.apache.catalina.authenticator.FormAuthenticator.doAuthenticate(FormAuthenticator.java:269)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:676)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Unknown Source)

Thus, the implementations using tomcat interfaces/abstract classes must be updated in TEAM Engine code (here, class PBKDF2Realm).

dstenger commented 1 year ago

Set dependency tomcat-catalina to version 10.1.11 and updated all implementations of abstract classes and interfaces of tomcat-catalina: https://github.com/opengeospatial/teamengine/commit/a4b0f731a54c85bbab17dc4775684d961f90f91a

Again, workaround described here was applied: https://github.com/opengeospatial/teamengine/issues/556#issuecomment-1536657832

Afterwards, Tomcat migration tool was applied and TEAM Engine was started with Tomcat 10.1 again as described here.

TEAM Engine successfully started, it was possible to login and to execute test runs.

Thus, the migration is almost done. Only the changes currently done by the migration tool have to be applied to the TEAM Engine code.

dstenger commented 1 year ago

Only solution to use the jakarta namespace was to migrate to Servlet API version 6.0.

Commit: https://github.com/opengeospatial/teamengine/commit/6c9c85bc9ad53810d96f37edb3d68fb61c706004

dstenger commented 1 year ago

Now, this stack trace occurs during startup of Tomcat:

328629> 02-Oct-2023 14:55:56.526 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/teamengine]
328629> Oct 02, 2023 2:55:58 PM org.apache.catalina.core.StandardContext loadOnStartup
328629> SEVERE: Servlet [TestSuiteController] in web application [/teamengine] threw load() exception
328629> java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
328629>     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1437)
328629>     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
328629>     at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:491)
328629>     at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:473)
328629>     at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143)
328629>     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:865)
328629>     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:805)
328629>     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4601)
328629>     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4894)
328629>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
328629>     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
328629>     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
328629>     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:713)
328629>     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1136)
328629>     at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1971)
328629>     at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
328629>     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
328629>     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
328629>     at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
328629>     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1046)
328629>     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:428)
328629>     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1656)
328629>     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
328629>     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)
328629>     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
328629>     at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345)
328629>     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893)
328629>     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:846)
328629>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
328629>     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
328629>     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
328629>     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
328629>     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
328629>     at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
328629>     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
328629>     at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:241)
328629>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
328629>     at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
328629>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
328629>     at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:918)
328629>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
328629>     at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
328629>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
328629>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
328629>     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
328629>     at java.base/java.lang.reflect.Method.invoke(Method.java:568)
328629>     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
328629>     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)

This does not affect the Web Browser Interface. However, the REST Interface is not working.

To solve this problem, JAX-RS must be updated to version 3.1 to also use the jakarta namespace.

dstenger commented 1 year ago

Migration to JAX-RS 3.1/ Jersey 3.1.3 was completed: https://github.com/opengeospatial/teamengine/commit/e989720a9770c5ba00c724a711012feacd3e1e9a

The previously documented stack trace does not occur anymore and a smoke test with the Web Browser Interface was successful.

dstenger commented 1 year ago

However, the REST Interface currently does not work. Calling http://localhost:8081/teamengine/rest/suites/ returns HTTP status code 404.

dstenger commented 1 year ago
...
b814e0> 04-Oct-2023 09:28:14.752 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.1.11]
b814e0> 04-Oct-2023 09:28:14.760 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/teamengine]
b814e0> Oct 04, 2023 9:28:18 AM org.glassfish.jersey.message.internal.MessagingBinders$EnabledProvidersBinder bindToBinder
b814e0> WARNING: A class jakarta.activation.DataSource for a default provider MessageBodyWriter<jakarta.activation.DataSource> was not found. The provider is not available.
b814e0> Oct 04, 2023 9:28:18 AM org.glassfish.jersey.server.wadl.WadlFeature configure
b814e0> WARNING: JAX-B API not found . WADL feature is disabled.
b814e0> 04-Oct-2023 09:28:18.756 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/teamengine] has finished in [3,996] ms
...

JAXB must also be upgraded to the jakarta namespace.

dstenger commented 1 year ago

Migration to JAXB 4.0 was completed: https://github.com/opengeospatial/teamengine/commit/b697f3ad894d338317d3c6ac4a7cd7226b75fc49

The previously documented warnings do not occur anymore.

dstenger commented 1 year ago

However, the REST Interface can still not be used and returns HTTP status code 404.

Increased logging in teamengine-web/src/main/resources/logging.properties:

...
com.occamlab.te.spi.level = ALL
com.occamlab.te.spi.handlers = org.apache.juli.FileHandler

org.glassfish.jersey.level = ALL
org.glassfish.jersey.handlers = org.apache.juli.FileHandler

During start up no hints can be found in log. When requesting http://localhost:8081/teamengine/rest/suites/, the following is logged:

05-Oct-2023 09:38:20.764 FINER [http-nio-8080-exec-7] org.glassfish.jersey.server.ServerRuntime$Responder.mapException Starting mapping of the exception.
    jakarta.ws.rs.NotFoundException: HTTP 404 Not Found
        at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:258)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:240)
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:697)
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:357)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
        at com.occamlab.te.realm.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.java:72)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:676)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Unknown Source)
05-Oct-2023 09:38:20.765 FINE [http-nio-8080-exec-7] org.glassfish.jersey.server.ServerRuntime$Responder.mapException WebApplicationException (WAE) with no entity thrown and no ExceptionMappers have been found for this WAE. Response with status 404 is directly generated from the WAE.
    jakarta.ws.rs.NotFoundException: HTTP 404 Not Found
        at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:258)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:240)
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:697)
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:357)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
        at com.occamlab.te.realm.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.java:72)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:676)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Unknown Source)
05-Oct-2023 09:38:20.769 FINEST [http-nio-8080-exec-7] org.glassfish.jersey.internal.util.ExtendedLogger.debugLog [DEBUG] Released scope instance Instance{id=b4352fed-4712-4bd6-b50c-ed0ee49059c6, referenceCounter=0, store size=0} on thread http-nio-8080-exec-7
dstenger commented 1 year ago

Problem was partly solved: https://github.com/opengeospatial/teamengine/commit/547450018d8405c45ae413e33c12aded34ca336c However, still not all REST resources work as expected.

dstenger commented 1 year ago

Fixed unit test: https://github.com/opengeospatial/teamengine/commit/a695251f865d57c4e4781f80b6528c1d97dc7cd0

dstenger commented 1 year ago

New issues were created for all remaining tasks: