Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions posts/2026-06-02-26.0.0.6-beta.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
---
layout: post
title: "Netty‑based HTTP transport in 26.0.0.6-beta"
# Do NOT change the categories section
categories: blog
author_picture: https://avatars3.githubusercontent.com/navaneethsnair1
author_github: https://github.com/navaneethsnair1
seo-title: "Netty‑based HTTP transport in 26.0.0.6-beta - OpenLiberty.io"
seo-description: This beta release introduces a preview of a Netty-based HTTP transport in Open Liberty, providing a modern, scalable foundation for HTTP and related communication protocols.
blog_description: This beta release introduces a preview of a Netty-based HTTP transport in Open Liberty, providing a modern, scalable foundation for HTTP and related communication protocols.
open-graph-image: https://openliberty.io/img/twitter_card.jpg
open-graph-image-alt: Open Liberty Logo
---
= Netty‑based HTTP transport in 26.0.0.6-beta
Navaneeth S Nair <https://github.com/navaneethsnair1>
:imagesdir: /
:url-prefix:
:url-about: /
//Blank line here is necessary before starting the body of the post.

This beta release introduces a preview of a Netty-based HTTP transport in Open Liberty, providing a modern, scalable foundation for HTTP and related communication protocols.

// // // // // // // //
// Change the RELEASE_SUMMARY to an introductory paragraph. This sentence is really
// important because it is supposed to grab the readers attention. Make sure to keep the blank lines
//
// Throughout the doc, replace RELEASE_VERSION with the version number of Open Liberty, eg: 22.0.0.2-beta
// // // // // // // //

The link:{url-about}[Open Liberty] 26.0.0.6-beta includes the following beta features (along with link:{url-prefix}/docs/latest/reference/feature/feature-overview.html[all GA features]):

* <<netty, Netty‑based HTTP transport>>

// // // // // // // //
// In the preceding section:
// Change SUB_FEATURE_TITLE to the feature that is included in this release and
// change the SUB_TAG_1/2/3 to the heading tags
//
// However if there's only 1 new feature, delete the previous section and change it to the following sentence:
// "The link:{url-about}[Open Liberty] RELEASE_VERSION includes SUB_FEATURE_TITLE"
// // // // // // // //

See also link:{url-prefix}/blog/?search=beta&key=tag[previous Open Liberty beta blog posts].

// // // // DO NOT MODIFY THIS COMMENT BLOCK <GHA-BLOG-TOPIC> // // // //
// Blog issue: https://github.com/OpenLiberty/open-liberty/issues/34757
// Contact/Reviewer: pnicolucci
// // // // // // // //
[#netty]
== Netty‑based HTTP transport

Open Liberty now provides a *Netty‑based HTTP transport* as a beta preview. This is an internal implementation swap for the underlying transport used for HTTP/1.1, HTTP/2, WebSocket, JMS, and SIP communications. Compared to previous releases, the key update in this release is the fix for the user-reported link:https://github.com/OpenLiberty/open-liberty/issues/34672[100-continue issue]. It is designed for *zero migration*: your applications and `server.xml` file should continue to behave the same. We are looking forward and counting on your feedback before GA!

* *Target persona:* Application developers, performance engineers, and operations/site engineers who need to validate application behavior, measure throughput, and monitor observability.
* *Why it matters:* Netty's event-driven I/O model provides a modern foundation for long-term scalability, easier maintenance, and future performance enhancements— all without requiring changes to your APIs or configuration!

=== How to use it:

No changes are required to benefit from the current *All Beta Features* runtime for this release.

To help validate parity and performance for your real-world scenarios, try testing these areas:

* *HTTP/1.1 and HTTP/2*: Large uploads or downloads, chunked transfers, compression-enabled content, keep-alive behavior.
* *WebSocket*: Long-lived communications, backpressure scenarios
* *Timeouts*: Read/write/keep-alive timeouts under load
* *Access logging*: Verify formatting and log results compared to previous builds
* *JMS communications*: Messages send/receive throughput, durable subscriptions

=== Limitations of the Beta release:

* *HTTP*
** HTTP requests with content length greater than the maximum integer value fail due to internal limitations on request size with Netty.
** When the HTTP option `maxKeepAliveRequests` is unlimited, HTTP 1.1 supports a maximum of 50 pipelined requests.
** The HTTP option `resetFramesWindow` is reduced from millisecond to second precision due to limitations in the Netty library.
** Due to internal limitations of the Netty library, the HTTP option `MessageSizeLimit` is now adjusted to be capped at the maximum integer value for HTTP/2.0 connections.
** Due to internal differences with Netty, the HTTP option `ThrowIOEForInboundConnections` can behave differently from the Channel Framework implementation.
** Due to internal limitations of Netty, the TCP options `acceptThread` and `waitToAccept` are not implemented in this Beta and are ignored if set.
* *WebSocket*
** WebSocket inbound requests can generate First Failure Data Capture RuntimeExceptions on connection cleanup when a connection is closed from the client side.
* *Application-Layer Protocol Negotiation (ALPN)*
** Currently, our Netty implementation supports only the native JDK ALPN implementation. Additional information for the ALPN implementations that are currently supported by the Channel Framework but not our Netty beta can be found in the link:https://www.ibm.com/docs/en/was-liberty/base?topic=40-alpn-support[ALPN documentation].

//</GHA-BLOG-SUMMARY>

[#run]
=== Try it now

To try out these features, update your build tools to pull the Open Liberty All Beta Features package instead of the main release. The beta works with Java SE 21, Java SE 17, Java SE 11, and Java SE 8.
// // // // // // // //
// In the preceding section:
// Check if a new non-LTS Java SE version is supported that needs to be added to the list (21, 17, 11, and 8 are LTS and will remain for a while)
// https://openliberty.io/docs/latest/java-se.html
//
// In the following section:
// Check if a new MicroProfile or Jakarta version is in beta that could replace the example values in the codeblock
// // // // // // // //

If you're using link:{url-prefix}/guides/maven-intro.html[Maven], you can install the All Beta Features package using:

[source,xml]
----
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.12.0</version>
<configuration>
<runtimeArtifact>
<groupId>io.openliberty.beta</groupId>
<artifactId>openliberty-runtime</artifactId>
<version>26.0.0.6-beta</version>
<type>zip</type>
</runtimeArtifact>
</configuration>
</plugin>
----

You must also add dependencies to your pom.xml file for the beta version of the APIs that are associated with the beta features that you want to try. For example, the following block adds dependencies for two example beta APIs:

[source,xml]
----
<dependency>
<groupId>org.example.spec</groupId>
<artifactId>exampleApi</artifactId>
<version>7.0</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>example.platform</groupId>
<artifactId>example.example-api</artifactId>
<version>11.0.0</version>
<scope>provided</scope>
</dependency>
----

Or for link:{url-prefix}/guides/gradle-intro.html[Gradle]:

[source,gradle]
----
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'io.openliberty.tools:liberty-gradle-plugin:4.0.0'
}
}
apply plugin: 'liberty'
dependencies {
libertyRuntime group: 'io.openliberty.beta', name: 'openliberty-runtime', version: '[26.0.0.6-beta,)'
}
----
// // // // // // // //
// In the preceding section:
// Replace the Maven `3.11.5` with the latest version of the plugin: https://search.maven.org/artifact/io.openliberty.tools/liberty-maven-plugin
// Replace the Gradle `3.9.5` with the latest version of the plugin: https://search.maven.org/artifact/io.openliberty.tools/liberty-gradle-plugin
// TODO: Update GHA to automatically do the above. If the maven.org is problematic, then could fallback to using the GH Releases for the plugins
// // // // // // // //

Or if you're using link:{url-prefix}/docs/latest/container-images.html[container images]:

[source]
----
FROM icr.io/appcafe/open-liberty:beta
----

Or take a look at our link:{url-prefix}/downloads/#runtime_betas[Downloads page].

If you're using link:https://plugins.jetbrains.com/plugin/14856-liberty-tools[IntelliJ IDEA], link:https://marketplace.visualstudio.com/items?itemName=Open-Liberty.liberty-dev-vscode-ext[Visual Studio Code] or link:https://marketplace.eclipse.org/content/liberty-tools[Eclipse IDE], you can also take advantage of our open source link:https://openliberty.io/docs/latest/develop-liberty-tools.html[Liberty developer tools] to enable effective development, testing, debugging and application management all from within your IDE.

For more information on using a beta release, refer to the link:{url-prefix}docs/latest/installing-open-liberty-betas.html[Installing Open Liberty beta releases] documentation.

[#feedback]
== We welcome your feedback

Let us know what you think on link:https://groups.io/g/openliberty[our mailing list]. If you hit a problem, link:https://stackoverflow.com/questions/tagged/open-liberty[post a question on StackOverflow]. If you hit a bug, link:https://github.com/OpenLiberty/open-liberty/issues[please raise an issue].
Loading