Our team has been developing an web application on App Engine (Standard) using Java11/SpringBoot2/JSP these years. Since Java11 runtime is out of support last month, we have to upgrade Java to 21, where Spring Boot has to be upgraded to 3, Javax to Jakarta and so on.
The web application works fine on local Eclipse where Tomcat has been excluded. It can be successfully deployed to App Engine. However when I try to access to it, a “No Jetty ServletContextHandler, Jakarta WebSocket SCI” exception happens. I have checked the logs but I have no clue. It will be grateful if anyone can help.
Hi @gini1010 ,
The error you encountered is quite uncommon, but at first glance, the No Jetty ServletContextHandler, Jakarta WebSocket SCI error message could be indicating that the app is raising missing libraries by the time your app gets deployed in Google App Engine (GAE).
Upon initially troubleshooting this, it seems that your app is using Jakarta Websocket. Unfortunately, WebSockets aren’t supported for App Engine standard environment yet, as it’s only available for App Engine flexible environment. We’re still working on getting this to become available for the standard environment, but right now, there’s no specific timetable as to when this will be implemented.
As a first approach, it might be best to reevaluate if the upgrade guide here has been revisited. While sticking initially with a standard environment, I’d recommend (if possible) for you to isolate WebSockets, so that the app will have a lesser chance of raising the same error after deploying it through GAE. The goal in this step is to make sure that the smooth transition from Java 11 to Java 21 has actually been done properly.
Once, it’s fully certain that the transition to Java 21 has been conducted smoothly, that’s the time to make sure that your app’s WebSockets is working well with GAE. For this part, you’ll have to consider switching to the App Engine flexible environment. Because through this environment, App Engine supports the use of WebSockets.
If the issue persists, I may also recommend you to file an issue through the Google App Engine GitHub issue tracker. This will allow the Google App Engine engineers to conduct further debugging on your issue and confirm if whether or not there’s a possible bug. Make sure to provide the exact and detailed steps on how the issue was reproduced (including detailed error logs and configurations that best describe your app’s current environment).
Hope this helps!
1 Like
Thanks so much for your reply and the explanation! Your reply is very helpful.
We use SpringBoot for our application. To us it may not be a good solution if we isolate the WebSocket and define our own (also we don’t have enough knowledge to achieve it at this point). We will consider switching to flexible App Engine and see if the error persists.
Since Java17 is still supported for another 3 years, we upgraded our application to Java17 and keep SpringBoot2 (2.5 is still compatible with Java17). We will continue to working on this issue, or wait until WebSocket is supported in standard environment.
1 Like