Confluence 10.0 release EAP is available now

Hi everyone,

A Confluence 10.0 EAP milestone is now available. EAP releases provide a snapshot of our work in progress and give you an opportunity to test and fix your apps before the final release.

As usual, we’ll be releasing weekly milestones and betas during the development of Confluence 10.0, so head to Preparing for Confluence 10.0 to find out what’s changed.

Get the latest EAP

If you have any problems with an EAP release, please raise an issue to let us know. The earlier we know about problems, the more time we’ll have to fix them before the final release.

Enjoy!

The Atlassian Confluence team

We now announce Confluence Data Center releases and more in the Atlassian developer changelog. Subscribe to the changelog to receive the latest updates.

2 Likes

I have asked some questions about the Bandana removal: BandanaManager deprecation in Confluence 9.3

1 Like

Cannot use this EAP. The App Management fails instantly, and we can’t install our app through the REST API because it gets rejected by 500 Unauthorized.

There’s also a mixture of Jakarta 1.x and 2.x versions of the same libs. It would probably make sense to complete the transition to 2.x first.

2 Likes

Which Confluence version goes with which platform version? On https://developer.atlassian.com/platform/marketplace/dc-apps-platform-7/ there is no mentioning of version 10 (probably because it is an EAP …).

Is it Atlassian Repository: com/atlassian/platform/dependencies/platform-public-api/8.0.0-jakarta-m017/ (latest release date close to the release date of Confluence)?

Where could I lookup the correct platform version for a given Confluence version? Could this information be added to the release note or on the post in the developer community?

It is probably obvious, but it is not obvious to me … :smile:

@rr1, I once stumbled over atlassian / platform-module-usage / wiki / new-platform — Bitbucket, which contains a version-matrix showing which platform-version is used in which product-version.

2 Likes

Hi @metin

Could you or anyone else experiencing this provide further information such as error logs so we can investigate?

Generally, when developing your plugin you will want to import the com.atlassian.confluence:confluence-plugins-platform-pom to inherit the correct dependency management.

Further dependency information can be found in the published POMs themselves. Here is the project POM for EAP1: https://maven.artifacts.atlassian.com/com/atlassian/confluence/confluence-project/10.0.0-m16/confluence-project-10.0.0-m16.pom

1 Like

I used the docker image tagged eap, and after Confluence starts and I’ve logged in, when I select Manage Apps, it explodes. The log is full of

javax.servlet.ServletException: jakarta.servlet.ServletException: javax.servlet.ServletException: jakarta.servlet.ServletException: javax.servle
t.ServletException: jakarta.servlet.ServletException: javax.servlet.ServletException: jakarta.servlet.ServletException: javax.servlet.ServletException:
 jakarta.servlet.ServletException: 

Shouldn’t be difficult to reproduce.

2 Likes

I have the same error:

Also when replacing com.atlassian.xwork with com.atlassian.struts like

import com.atlassian.xwork.SimpleXsrfTokenGenerator;
import com.atlassian.xwork.XsrfTokenGenerator;

with

import com.atlassian.struts.xsrf.SimpleXsrfTokenGenerator;
import com.atlassian.struts.xsrf.XsrfTokenGenerator;

I had a compilation error saying class file for jakarta.servlet.http.HttpServletRequest not found and I had to add to my pom.xml the section

        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>${jakarta.servlet-api.version}</version>
            <scope>provided</scope>
        </dependency>

Shouldn’t be automatically included ? It seems the Confluence server package is missing some core dependencies.

Another question: the new Struts 7 dependencies upgrade are breaking the compatibility with Confluence 9.xx and older ? Meaning if we compile our plugin to be compatible with Confluence 10 we are no more able to install it on previous versions ?

About the Bandana Removal can you provide some code example to fetch the old data from the BANDANA storage in order to migrate old data to another method, like AO ?

1 Like

First problems:

  1. WebSudoManager = 10.0.0-m16 - still using javax.servlet
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

void startSession(HttpServletRequest request, HttpServletResponse response);


  1. ServiceExceptionMapper

Error

RestExceptionMapper.java:[11,8] cannot access jakarta.ws.rs.ext.ExceptionMapper
[ERROR]   class file for jakarta.ws.rs.ext.ExceptionMapper not found

pom.xml

<dependency>
        <groupId>com.atlassian.confluence</groupId>
        <artifactId>confluence-restv2-server-api</artifactId>
        <scope>provided</scope>
</dependency>

Java

import com.atlassian.confluence.rest.v2.api.exception.ServiceExceptionMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ws.rs.ext.Provider;

@Provider
public class RestExceptionMapper extends ServiceExceptionMapper {

    private static final Logger log = LoggerFactory.getLogger(RestExceptionMapper.class);

    @Override
    protected void _annotateThisClassWithProvider() {
        ...
    }
}


  1. class file for javax.servlet.http.HttpServletRequest not found - this error occurs in more code even though javax.servlet.* is not used in the code

Error

[cut] cannot access javax.servlet.http.HttpServletRequest
[ERROR]   class file for javax.servlet.http.HttpServletRequest not found

Java

import com.atlassian.struts.xsrf.XsrfTokenGenerator;
import jakarta.servlet.http.HttpServletRequest;

XsrfTokenGenerator xsrfTokenGenerator = ComponentLocator.getComponent(XsrfTokenGenerator.class);
...
xsrfTokenGenerator.generateToken(HttpServletRequest);

Cheers
Adam

1 Like

Attempt to install app via REST API also fails:

Failed to authenticate - status code: 500 - response text: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><status><status-code>500</status-code><message>'java.util.Locale com.atlassian.sal.api.message.LocaleResolver.getLocale(javax.servlet.http.HttpServletRequest)'</message><stack-trace>Please contact your admin passing attached Log's referral number: 957fa50c-5817-4737-ba03-09f765ea18cd</stack-trace></status>

Seems like the same root cause to me - reference to javax.servlet.http.HttpServletRequest

Hi all,

Thanks for the quick feedback.

We’ve identified the issue with UPM which is preventing plugin installs from the web UI and REST API. This will be rectified in the next EAP.


Most dependencies need to be explicitly specified. However, you should inherit the version management by importing com.atlassian.confluence:confluence-plugins-platform-pom. See my dependencyManagement snippet further down.


In general, yes.


There is no new dedicated API for migration, you should use the existing BandanaManager API, which will have its mutative APIs blocked.


This will be rectified in the next EAP.


The JAX-RS and Jersey dependencies are currently pinned to the incorrect versions in confluence-plugins-platform-pom due to some technical hurdles. This will be fixed in a later EAP but you may work around this issue by adding the following additional dependencyManagement entries for now.

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Temporary workaround -->
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>3.1.9</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <!-- Temporary workaround -->
            <groupId>jakarta.ws.rs</groupId>
            <artifactId>jakarta.ws.rs-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.confluence</groupId>
            <artifactId>confluence-plugins-platform-pom</artifactId>
            <version>${confluence.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

We are aware of a handful of OSGi services which still leak the old javax.servlet.* APIs. Whilst not ideal, you may workaround this by depending upon both the old and new Servlet APIs. You may also need to specify an optional OSGi import. Please ensure you remove this workaround once these services are corrected in later EAPs.

<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>
2 Likes