Skip to content

Conversation

@github-actions
Copy link

@github-actions github-actions bot commented Nov 17, 2025

When a client connects to the MCP server, a unique session ID is assigned to the client during the link:https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle#initialization[initialization phase] and returned in the `Mcp-Session-Id` HTTP response header. For subsequent requests, the client must include the session ID in the `Mcp-Session-Id` request header.

=== MCP Endpoint Discoverability
The MCP endpoint is made available at `/mcp` under the context root of your application, e.g., `http://localhost:9080/myMcpApp/mcp`. For ease of discovery, the URL of the MCP endpoint for your Liberty hosted application is now output in the server logs on application startup.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For ease of discovery, the URL of the MCP endpoint for your Liberty-hosted application is now output to the server logs at application startup.
or
For ease of discovery, the URL of the MCP endpoint for your Liberty-hosted application is now written to the server logs at application startup.

=== MCP Endpoint Discoverability
The MCP endpoint is made available at `/mcp` under the context root of your application, e.g., `http://localhost:9080/myMcpApp/mcp`. For ease of discovery, the URL of the MCP endpoint for your Liberty hosted application is now output in the server logs on application startup.

The following example shows what you would see in your logs if you had an application called `myMcpApp`:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The following example shows what you would see in your logs if you have an application called myMcpApp:

I MCP server endpoint: http://localhost:9080/myMcpApp/mcp
```

In this beta version, the MCP server endpoint is also accessible with a trailing slash at the end, for example, `http://localhost:9080/myMcpApp/mcp/`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this beta version, the MCP server endpoint is also accessible with a trailing slash (/) at the end, for example, http://localhost:9080/myMcpApp/mcp/.

[#netty]
== Netty‑based HTTP transport on Open Liberty

Open Liberty now provides a Netty‑based HTTP transport as a beta preview. This change is an internal implementation swap for the underlying transport used for HTTP/1.1, HTTP/2, WebSocket, JMS and SIP communications. It is designed for zero migration: your applications and `server.xml` continue to behave the same. We are looking forward and counting on your feedback before GA!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open Liberty now provides a Netty-based HTTP transport as a beta preview. This change replaces the underlying transport implementation for HTTP/1.1, HTTP/2, WebSocket, JMS, and SIP communications. It is designed for zero migration impact—your applications and the server.xml file continue to behave as before.

* As of the moment, clear text upgrade requests for HTTP 2.0 with request data is rejected with a 'Request Entity Too Large' status code. A fix is in progress.

==== WebSocket
Websocket inbound requests can generate FFDC RuntimeExceptions on connection cleanup when a connection is closed from the client side.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Websocket inbound requests can generate FFDC RuntimeExceptions on connection cleanup when a connection is closed from the client side.
Websocket inbound requests can generate FFDC `RuntimeExceptions` on connection cleanup when a connection is closed from the client side.

// // // // // // // //
[#springboot]
== SpringBoot 4.0
Open Liberty currently supports running Spring Boot 1.5, 2.x, and 3.x applications. With the introduction of the new springBoot-4.0 feature, users can now deploy Spring Boot 4.x applications by enabling this feature. While Liberty consistently supports Spring Boot applications packaged as WAR files, this enhancement extends support to both JAR and WAR formats for Spring Boot 4.x applications.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Open Liberty currently supports running Spring Boot 1.5, 2.x, and 3.x applications. With the introduction of the new springBoot-4.0 feature, users can now deploy Spring Boot 4.x applications by enabling this feature. While Liberty consistently supports Spring Boot applications packaged as WAR files, this enhancement extends support to both JAR and WAR formats for Spring Boot 4.x applications.
Open Liberty currently supports running Spring Boot 1.5, 2.x, and 3.x applications. With the introduction of the new `springBoot-4.0` feature, users can now deploy Spring Boot 4.x applications by enabling this feature. While Liberty consistently supports Spring Boot applications packaged as WAR files, this enhancement extends support to both `JAR` and `WAR` formats for Spring Boot 4.x applications.


The springBoot-4.0 feature provides a complete support for running a Sprint Boot 4.x application on Open Liberty as well as having the capability to thin the application when creating applications in containers.

To use this feature, the user must be running Java 17 or later with EE11 features enabled. If the application uses servlets, it must be configured to use Servlet 6.1. Include the following features in your `server.xml` file to define settings.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To use this feature, the user must be running Java 17 or later with EE11 features enabled. If the application uses servlets, it must be configured to use Servlet 6.1. Include the following features in your `server.xml` file to define settings.
To use this feature, the user must be running `Java 17` or later with EE11 features enabled. If the application uses servlets, it must be configured to use `Servlet 6.1`. Include the following features in your `server.xml` file to define settings.

<springBootApplication id="spring-boot-app" location="spring-boot-app-0.1.0.jar" name="spring-boot-app" />
----

As in earlier versions, the Spring Boot application JAR can be deployed by placing it in the `/dropins/spring` folder. The `springBootApplication` configuration in `server.xml` can be omitted when using this deployment method.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
As in earlier versions, the Spring Boot application JAR can be deployed by placing it in the `/dropins/spring` folder. The `springBootApplication` configuration in `server.xml` can be omitted when using this deployment method.
As in earlier versions, the Spring Boot application `JAR` can be deployed by placing it in the `/dropins/spring` folder. The `springBootApplication` configuration in the `server.xml` file can be omitted when using this deployment method.


Previously, repository methods couldn't limit retrieval of results to subsets of entity attributes (commonly referred to as projections). Now, repository methods can return Java records that represent a subset of an entity. In addition, parameter-based `@Find` and `@Delete` methods earlier were not able to filter on conditions other than equality. Now more advanced filtering can be done in two different ways: typing the repository method parameter with a `Constraint` subtype or indicating the `Constraint` subtype by using the `@Is` annotation.

In Jakarta Data, you write simple Java objects called *Entities* to represent data, and you write interfaces called *Repositories* to define operations on data. You inject a Repository into your application and use it. The implementation of the Repository is automatically provided for you!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In Jakarta Data, you write simple Java objects called *Entities* to represent data, and you write interfaces called *Repositories* to define operations on data. You inject a Repository into your application and use it. The implementation of the Repository is automatically provided for you!
In Jakarta Data, you write simple Java objects called *Entities* to represent data, and you write interfaces called *Repositories* to define operations on data. You inject a Repository into your application and use it. The implementation of the *Repository* is automatically provided for you!

@navaneethsnair1 navaneethsnair1 merged commit a86b494 into draft Nov 17, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants