Confluence 10.0 release EAP is available now

I’m not quite following - do you mind explaining in more detail?

No we were not aware of this (it is a server-side issue) but we will ensure it is fixed in the next EAP. Thank you for reporting it.

1 Like

Using 10.0.0-m20 I see this error, never seen before (neither with m16), it builds fine with 9.3.1 (using java17)

atlas-debug --server localhost --product confluence --jvmargs -Xms8192m --jvmargs -Xmx8192m

[ERROR] Failed to execute goal com.atlassian.maven.plugins:confluence-maven-plugin:9.1.1:debug (default-cli) on project mockups: Execution default-cli of goal com.atlassian.maven.plugins:confluence-maven-plugin:9.1.1:debug failed: Container tomcat10x not supported -> [Help 1]

My configuration

ATLAS Version:    9.1.1
ATLAS Home:       /opt/homebrew/Cellar/atlassian-plugin-sdk/9.1.1/libexec
ATLAS Scripts:    /opt/homebrew/Cellar/atlassian-plugin-sdk/9.1.1/libexec/bin
ATLAS Maven Home: /opt/homebrew/Cellar/atlassian-plugin-sdk/9.1.1/libexec/apache-maven-3.9.8
AMPS Version:     9.1.1
--------
Executing: /opt/homebrew/Cellar/atlassian-plugin-sdk/9.1.1/libexec/apache-maven-3.9.8/bin/mvn --version -gs /opt/homebrew/Cellar/atlassian-plugin-sdk/9.1.1/libexec/apache-maven-3.9.8/conf/settings.xml
Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256)
Maven home: /opt/homebrew/Cellar/atlassian-plugin-sdk/9.1.1/libexec/apache-maven-3.9.8
Java version: 21.0.6, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk@21/21.0.6/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "15.3.1", arch: "aarch64", family: "mac"

Can you try overriding the confluence-maven-plugin version in your pom.xml to the latest version 9.2.5?

I’ve tried but I don’t understand where the 9.2.5 comes from ?

The latest SDK / AMPS isn’t the 9.1.1 ?

Marketplace SDK

Atlassian Homebrew

AMPS

In any case, this is the output after changing the value

[ERROR] Failed to execute goal com.atlassian.maven.plugins:amps-maven-plugin:9.2.5:run-standalone (default-cli) on project mockups: Unable to find/resolve artifact.: Failed to read artifact descriptor for com.atlassian.synchrony:synchrony-proxy:war:5.0.0-CONFSRVDEV-34351-m02: The following artifacts could not be resolved: com.atlassian.confluence:confluence-plugins-platform-pom:pom:9.3.0-CONFSRVDEV-34351-m01 (absent): com.atlassian.confluence:confluence-plugins-platform-pom:pom:9.3.0-CONFSRVDEV-34351-m01 was not found in https://repo1.maven.org/maven2/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-central has elapsed or updates are forced -> [Help 1]
[ERROR]

This an extract from my pom.xml

<properties>
        <amps.version>9.2.5</amps.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <atlassian.plugin.key>com.balsamiq.confluence.plugins.mockups</atlassian.plugin.key>
        <confluence.version>10.0.0-m20</confluence.version>
        <upm.license.compatibility.version>2.22</upm.license.compatibility.version>
        <sal.api.version>3.0.0</sal.api.version>
        <atlassian.templaterenderer.version>2.1.0</atlassian.templaterenderer.version>
        <maven.build.timestamp.format>yyyy.MM.dd</maven.build.timestamp.format>
        <timestamp>${maven.build.timestamp}</timestamp>
        <quick.reload.version>2.0.1</quick.reload.version>
        <ao.version>2.0.0</ao.version>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>confluence-maven-plugin</artifactId>
                <version>${amps.version}</version>
                <extensions>true</extensions>

I am a bit confused…

The latest SDK is 9.1.1 and the latest AMPS is 9.2.5 (although as you’ve pointed out, the public documentation isn’t updated immediately, you can instead consult our Maven repo for the most up-to-date releases).

When you invoke the Atlassian SDK (using atlas-debug), it will utilise the AMPS version and accompanying configuration from your pom.xml. Alternatively, you can pass some of these options using command line arguments (refer to --help).

This artifact access issue was raised in the post above yours and will be rectified in Monday’s EAP.

Until then, you may choose to start a Confluence instance using the Docker image and install your plugin using atlas-install-plugin.

1 Like

EAP3 (m21) is now available. The AMPS artifact resolution issues should be resolved.

1 Like

Hello Atlassian team,

I’m testing Confluence 10 EAP and see that not all javax.servlet.* references have been removed—particularly for classes like HttpServlet. Could you please share any ETA on when the migration to jakarta.servlet.* will be fully completed during the Confluence 10 cycle?

We’d like to know if this is happening soon or much later, as it directly affects our plugin development plans. If the transition isn’t imminent, we may need to move on to other projects in the meantime. Any guidance on the timeline would be greatly appreciated.

Thank you!

Tried again with 10.0.0-m21.

We are no longer getting a build failure at startup like we were with m20, but after the server starts (atlas-run) and I try to insert my dynamic content macro into a page, the macro doesn’t appear in the macro browser (or in the quick pick list when typing { into the page body).

The app does appear normally in the Manage Apps list, however.

For what it’s worth, I also just tried with 9.4.0-m51 and everything works perfectly there (as it does with 9.3.1).

So unfortunately it seems we’re back to the waiting phase for 10.0.0 testing. Here’s hoping m22 improves the situation.

The vast majority of legacy package usages have been migrated. The OSGi exports for legacy packages will not be removed until later (no exact date) but this should not block you from testing your plugin functionality and compatibility with Confluence 10.0.

This may not be an issue with the EAP. I’d start by checking that no errors are logged during installation of your plugin and that all of your plugin modules are enabled.

Confluence 10.0 is a major version release with breaking changes and so plugin compatibility with earlier versions isn’t indicative.

Thanks @Kusal, you were right.

Looking closer at the logs we have found what appears to be causing our plugin modules to be disabled:

Caused by: org.osgi.framework.BundleException:
 Unable to resolve <OUR APP> [289](R 289.0):
  missing requirement [<OUR APP> [289](R 289.0)] osgi.wiring.package;
  (osgi.wiring.package=javax.servlet) Unresolved requirements:
   [[<OUR APP> [289](R 289.0)] osgi.wiring.package;
    (osgi.wiring.package=javax.servlet)]

Clearly this is related to the javax.servlet deprecation.

Our pom.xml currently includes the following javax.* related dependencies:

<dependency>
  <groupId>javax.inject</groupId>
  <artifactId>javax.inject</artifactId>
  <version>1</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.ws.rs</groupId>
  <artifactId>jsr311-api</artifactId>
  <version>1.1.1</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.1</version>
  <scope>provided</scope>
</dependency>

If you’ll excuse our naivety (we’re not expert Java developers here, and know just enough to be dangerous), we’re assuming we need to change all four of these javax.* dependencies to jakarta.* equivalents; and we’re also assuming that this will likely break compatibility with Confluence 9.x and earlier (based on previous comments).

In an earlier response you noted a workaround for depending on both javax.servlet and jakarta.servlet, along with the comment:

You may also need to specify an optional OSGi import

<dependencies>
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <!-- Temporary workaround -->
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

Two questions about this:

  1. In your example there is no <version> specified. Should we remove the explicit <version> for some/all of these dependencies in our pom?
  2. When you say “specify an optional OSGI import”, can you elaborate further on that?

Currently we have the following:

<!--
  !java.* is needed here to suppress 'Importing java.* packages not allowed'
  in OSGI Core 6. We can safely remove this once we drop support for Confluence 7.x,
  and revert back to <Import-Package>*</Import-Package>
  (ref: https://bnd.bndtools.org/instructions/noimportjava.html)
-->
<Import-Package>!java.*,*</Import-Package>

…so is it just addingjavax.servlet to this?

Again, apologies if these are beginner-level questions.

That’s correct - replace all dependencies and corresponding Java imports. And you should configure your plugin’s dependencyManagement section as shown in my previous reply which will allow you to drop the versions from all provided scope dependency declarations, and ensure you are compiling against the appropriate versions.

That temporary workaround should only be employed if your plugin refuses to compile even after making the above changes. This is unlikely to be the case unless your plugin employs one of the few classes we have yet to fully migrate, such as XsrfTokenGenerator. Even then, the optional OSGi import likely isn’t necessary. Your current <Import-Package> value should be fine.

Thanks for the update. I understand that removing all legacy package usage is planned for later in the Confluence 10 cycle, and that the current partial migration shouldn’t theoretically block plugin testing. However, here’s a summary of the steps and experiments I’ve performed so far, along with the results:

  1. Using jakarta.servlet.HttpServlet

    • The plugin installs successfully but doesn’t receive servlet method calls from Confluence (no doGet, doPost invocations). Additionally, in the logs, I still see java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet errors, though they’re not triggered directly by my plugin. This suggests leftover references in Confluence or other OSGi services.
  2. Reverting to javax.servlet.HttpServlet

    • The plugin fails to install via UPM, producing errors like java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet. It appears that Confluence 10 EAP doesn’t export or satisfy that package for plugin modules, so OSGi can’t resolve HttpServlet.
  3. Adding Both jakarta.servlet-api and javax.servlet-api Dependencies

    • We end up with essentially the same result as Point #1: the plugin can install (if using jakarta.servlet), yet still never receives servlet calls.
  4. Trying the Jakarta Adapters (Experimental)

    • This bridging library doesn’t appear to help with the entire servlet hierarchy (particularly HttpServlet). It seems primarily aimed at bridging HttpServletRequest and HttpServletResponse, not exposing a complete HttpServlet shim. We still faced NoClassDefFoundError or incomplete servlet integration.

Current Situation

  • Some leftover references to javax.servlet.* remain in Confluence 10 EAP. This mixed state does block our servlet approach:
    • jakarta.servlet plugin installs but never gets invoked, and we still see errors referencing javax.servlet.http.HttpServlet in the logs.
    • javax.servlet plugin fails to install altogether.

Right now, we can’t effectively move forward with servlet-based testing until we can confirm an approach that either works with the partial migration or clarifies that servlets aren’t supported in the interim. Thank you again for any insights!

We only officially support (1).

Could you share the errors/logs you are seeing here? We are unable to reproduce this on our end.

Thank you for your prompt response. As requested, please find below the logs from our tests using case 1 (i.e., with our plugin using jakarta.servlet.HttpServlet):

[INFO] [talledLocalContainer] 19:19:05,666 ERROR [http-nio-1990-exec-7] [web.impl.DefaultWebInterfaceManager] filterFragmentsByCondition Could not evaluate condition 'com.atlassian.plugin.web.conditions.AndCompositeCondition@6b55653e' for descriptor: system.header/left/confluence.dbconsole-link
[INFO] [talledLocalContainer]  -- traceId: 1d5b9e3dcac0fc44
[INFO] [talledLocalContainer] java.lang.NoSuchMethodError: 'javax.servlet.http.HttpServletRequest com.atlassian.core.filters.ServletContextThreadLocal.getRequest()'
[INFO] [talledLocalContainer]   at com.atlassian.database.console.BlacklistProdInstanceCondition.shouldDisplay(BlacklistProdInstanceCondition.java:28)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.web.conditions.AndCompositeCondition.shouldDisplay(AndCompositeCondition.java:16)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.web.conditions.AndCompositeCondition.shouldDisplay(AndCompositeCondition.java:16)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.web.impl.DefaultWebInterfaceManager.filterFragmentsByCondition(DefaultWebInterfaceManager.java:187)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.web.impl.DefaultWebInterfaceManager.getDisplayableItems(DefaultWebInterfaceManager.java:142)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.descriptor.web.ConfluenceWebInterfaceManager.getDisplayableItems(ConfluenceWebInterfaceManager.java:74)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:418)
[INFO] [talledLocalContainer]   at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:407)
[INFO] [talledLocalContainer]   at com.atlassian.velocity.htmlsafe.introspection.UnboxingMethod.invoke(UnboxingMethod.java:28)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:282)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.directive.Parse.render(Parse.java:263)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.setup.velocity.ProfilingParseDirective.render(ProfilingParseDirective.java:21)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTStringLiteral.value(ASTStringLiteral.java:290)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.directive.Parse.render(Parse.java:263)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.setup.velocity.ProfilingParseDirective.render(ProfilingParseDirective.java:21)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
[INFO] [talledLocalContainer]   at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
[INFO] [talledLocalContainer]   at org.apache.velocity.Template.merge(Template.java:336)
[INFO] [talledLocalContainer]   at org.apache.velocity.Template.merge(Template.java:237)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.util.velocity.VelocityUtils.renderTemplateWithoutSwallowingErrors(VelocityUtils.java:74)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.util.velocity.VelocityUtils.renderTemplateWithoutSwallowingErrors(VelocityUtils.java:80)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ResponseWritingStrategy$StreamingResponseWritingStrategy.renderToResponse(ResponseWritingStrategy.java:51)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ConfluenceSitemeshDecorator.applyDecoratorUsingVelocity(ConfluenceSitemeshDecorator.java:175)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ConfluenceSitemeshDecorator.applyDecorator(ConfluenceSitemeshDecorator.java:143)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ConfluenceSitemeshErrorDecorator.renderInternal(ConfluenceSitemeshErrorDecorator.java:49)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ConfluenceSitemeshDecorator.lambda$render$0(ConfluenceSitemeshDecorator.java:107)
[INFO] [talledLocalContainer]   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ConfluenceSitemeshDecorator.render(ConfluenceSitemeshDecorator.java:105)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ConfluenceSitemeshErrorDecorator.render(ConfluenceSitemeshErrorDecorator.java:42)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.sitemesh.ConfluenceDecoratorSelector$1.render(ConfluenceDecoratorSelector.java:78)
[INFO] [talledLocalContainer]   at com.opensymphony.sitemesh.webapp.decorator.BaseWebAppDecorator.render(BaseWebAppDecorator.java:33)
[INFO] [talledLocalContainer]   at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:93)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.ProfilingSiteMeshFilter.doFilter(ProfilingSiteMeshFilter.java:64)
[INFO] [talledLocalContainer]   at io.atlassian.util.adapter.jakarta.servlet.JakartaFilterAdapter.doFilter(JakartaFilterAdapter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:60)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:35)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:60)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:46)
[INFO] [talledLocalContainer]   at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:51)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:95)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.security.NeoSecurityFilter.doFilter(NeoSecurityFilter.java:65)
[INFO] [talledLocalContainer]   at jakarta.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
[INFO] [talledLocalContainer]   at org.apache.struts2.dispatcher.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:113)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.struts.ConfluenceStrutsPrepareFilter.doFilter(ConfluenceStrutsPrepareFilter.java:47)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:21)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.SecureAccessFilterChain.doFilter(SecureAccessFilterChain.java:46)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.SecureAccessFilter.runFilterChainWithNoAccessCheck(SecureAccessFilter.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.webapp.SecureAccessFilter.doFilter(SecureAccessFilter.java:80)
[INFO] [talledLocalContainer]   at jakarta.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.util.UserThreadLocalFilter.doFilter(UserThreadLocalFilter.java:42)
[INFO] [talledLocalContainer]   at jakarta.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.web.filter.HttpSessionRegistrarFilter.doFilter(HttpSessionRegistrarFilter.java:81)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:242)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.applyFilter(ConfluenceSecurityFilter.java:42)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.doFilter(ConfluenceSecurityFilter.java:31)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:148)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:60)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:35)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:60)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:46)
[INFO] [talledLocalContainer]   at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:51)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:95)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.authentication.sso.web.filter.loginform.DisableNativeLoginAuthFilter.doFilterInternal(DisableNativeLoginAuthFilter.java:73)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.authentication.sso.web.filter.AbstractJohnsonAwareFilter.doFilter(AbstractJohnsonAwareFilter.java:29)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:35)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.authentication.basicauth.filter.DisableBasicAuthFilter.doFilter(DisableBasicAuthFilter.java:79)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:35)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:60)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.AccessCheckPluginDelegateFilter.doFilter(AccessCheckPluginDelegateFilter.java:35)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:60)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:46)
[INFO] [talledLocalContainer]   at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:51)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:95)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.util.RequestCacheThreadLocalFilter.doFilter(RequestCacheThreadLocalFilter.java:70)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at io.atlassian.util.adapter.javax.servlet.JavaXFilterChainAdapter.doFilter(JavaXFilterChainAdapter.java:40)
[INFO] [talledLocalContainer]   at brave.servlet.TracingFilter.doFilter(TracingFilter.java:70)
[INFO] [talledLocalContainer]   at io.atlassian.util.adapter.jakarta.servlet.JakartaFilterAdapter.doFilter(JakartaFilterAdapter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.web.filter.ZipkinTracingFilter.doFilter(ZipkinTracingFilter.java:52)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.impl.web.filter.CookieModifierFilter.doFilter(CookieModifierFilter.java:37)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at com.atlassian.confluence.web.filter.DebugFilter.doFilter(DebugFilter.java:65)
[INFO] [talledLocalContainer]   at jakarta.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:632)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:410)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:330)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:267)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:362)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:222)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
[INFO] [talledLocalContainer]   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
[INFO] [talledLocalContainer]   at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
[INFO] [talledLocalContainer]   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
[INFO] [talledLocalContainer]   at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384)
[INFO] [talledLocalContainer]   at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
[INFO] [talledLocalContainer]   at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
[INFO] [talledLocalContainer]   at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
[INFO] [talledLocalContainer]   at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
[INFO] [talledLocalContainer]   at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
[INFO] [talledLocalContainer]   at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
[INFO] [talledLocalContainer]   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)

Thank you again for your assistance!

Thank you for sharing that. This specific error actually does not stem from Confluence, but a developer plugin installed by AMPS (which as you’ve observed is not compatible). I’ve raised this issue with the AMPS team to rectify. Apologies for the confusion caused by this error.

Until then, you may add the following line to your confluence-maven-plugin configuration section to prevent the problematic plugin from being installed: <enableAchoo>false</enableAchoo>.

EAP3 (m21 ) is now available.

Trying to run the image on docker hub tagged 10.0.0-m21 fails with

Caused by: java.lang.UnsupportedClassVersionError: com/atlassian/confluence/impl/webapp/ConfluenceServletContainerInitializer has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0 (unable to load class [com.atlassian.confluence.impl.webapp.ConfluenceServletContainerInitializer])

You should not provide images with Java 17 when Confluence 10.0.0 requires Java 21.

We usually install our app through the REST api on our test instances. Trying to do so in the Confluence 10 milestone results in

Failed to install - status code: 403 - response text: Unknown Plugin Origin

How can we fix this?

Does it have something to do with the upcoming app signing? If so, where can I find details about it?

Thank you!

Edit:

The app management UI states:

Opt-In Period:
During the current opt-in period, you can choose to enable this functionality at your convenience. This period offers you the flexibility to adapt your workflow and ensure compatibility with your existing processes.

We did not opt-in (yet). So I would expect that the opt-in also applies to installs via the REST api, shouldn’t it?

1 Like

Thanks, I’ve raised this with the appropriate team. Please use the 10.0.0-m21-jdk21 tag until this is rectified.

I’ll check and get back to you. You may use the SDK command atlas-install-plugin or Maven plugin goal confluence:install until then.

You should be able to fix this by adding the following to your POST payload: pluginSource: "UPLOAD"

Thanks, that works, and it’s even backward compatible.

However, could you explain the background? Is it because we tried to install an unsigned app? Or are these two different things?