Need Help: GWT 2.12 Migration + gwtrpc-spring-1.02 Compatibility Issue

133 views
Skip to first unread message

Arpan Ameta

unread,
Jun 11, 2025, 8:59:41 AMJun 11
to GWT Users

We’re currently migrating our legacy project from GWT 2.8.1 to GWT 2.12.0 to be compatible with JDK 17 and modern tooling. As part of this upgrade, we’ve updated the dependency from:

<dependency>
    <groupId>org.gwtrpcspring</groupId>
    <artifactId>gwtrpc-spring</artifactId>
    <version>1.01</version>
</dependency>

To :

<dependency>
    <groupId>org.gwtrpcspring</groupId>
    <artifactId>gwtrpc-spring</artifactId>
    <version>1.02</version>
</dependency>

We’re facing the following challenges:

  • Deployment fails in WildFly 33, throwing NoClassDefFoundError for javax.servlet.http.HttpServlet, which seems to originate from RemoteServiceServlet in the GWT RPC stack.

  • The artifact gwtrpc-spring:1.02 isn't resolving from Maven Central, and the old configured repo http://www.mvnsearch.org/maven2/ is timing out.

  • We're unsure if gwtrpc-spring 1.02 is compatible with GWT 2.12 and Jakarta EE 9+ (jakarta.servlet) changes.

📌 Has anyone successfully used gwtrpc-spring with GWT 2.12 and JDK 17?
📌 Any fork or alternative for gwtrpc-spring compatible with modern GWT and WildFly?
📌 Suggestions on resolving servlet dependencies (HttpServlet) when deploying in WildFly 33?

Any help, pointers, or even working examples would be greatly appreciated! 🙏

Thanks in advance!
— Arpan

Frank Hossfeld

unread,
Jun 12, 2025, 2:26:37 AMJun 12
to GWT Users
I have stopped using RPC for years now. But I would suggest to copy the one class >>SpringRemoteServiceServlet<< of gwtrpc-spring  your project and change the import from >>javax.servlet<< to >>jakarta.servlet<< and of course, remove the dependency.

Lonzak

unread,
Jun 16, 2025, 3:36:28 AMJun 16
to GWT Users
Yes we did successfully migrate our GWT project to GWT 2.12.1 and Java17 / Jakarta.
However we didn't use gwtrpc-spring...

First thing would be analyze whether the dependency could be thrown out. If that is not possible then I did the following:

As you mentioned the repo ( nexus.emergya.es ) seems offline but the original project is still online:

For several old dependencies I had to create a Java17 / Jakarta version on my own, if there was no compatible version.

The last changes was to mavenize the project which is a start.

So what would I do?

1) Download the source and setup a github project
2) commit the original source 1:1 (to prove your base)
3) Upgrade the project to jakarta / java 17
4) Either add or remove missing transitive dependencies (like gilead-core ...) This one could be found here: https://github.com/lmco/eurekastreams-mvn-repo/tree/master/releases/net/sf/gilead/gilead4gwt/1.3.2
5) ...

Good luck!

Arpan Ameta

unread,
Jun 26, 2025, 4:36:06 AMJun 26
to GWT Users

Dear Team,

We have completed the migration of our application code by replacing all references from javax.* to jakarta.* to align with Jakarta EE 10 standards.

However, upon deploying the updated application to the WildFly 33 server, we are encountering a deployment failure. The server logs indicate a class loading issue during deployment, specifically related to org.gwtrpcspring.RemoteServiceDispatcher.

Please find the relevant portion of the error log below for your reference

Not generating any bean definitions from org.gwtrpcspring.RemoteServiceDispatcher because of underlying class loading error: Type javax.servlet.http.HttpServlet from [Module "deployment.phoenix.war" from Service Module Loader] not found.

...
Caused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
...
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet from [Module "deployment.phoenix.war"]


It seems that despite updating our application to use jakarta.servlet.*, some legacy classes or dependencies are still referencing javax.servlet.http.HttpServlet, which is no longer present in the Jakarta EE 10 runtime environment provided by WildFly 33.

We would appreciate your guidance on resolving this issue. Specifically, we are looking for advice on:

  • Identifying and resolving any transitive dependencies still relying on javax.servlet

  • Ensuring compatibility with WildFly 33’s Jakarta EE 10 module structure

Please let us know if further information or logs are needed.

Thanks & Regards,
Arpan Ameta

server.log.txt
RemoteServiceUtil.java
RemoteServiceDispatcher.java

Lonzak

unread,
Jun 26, 2025, 5:17:22 AMJun 26
to GWT Users
The relevant part:

"Error while loading class org.gwtrpcspring.RemoteServiceDispatcher Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletException Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletException from [Module [...]"

If you check the RemoteServiceDispatcher you'll see the following:

public class RemoteServiceDispatcher.java extends RemoteServiceServlet { ...

So now if you open the  RemoteServiceServlet.java you'll see the following imports:

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


It seems that you have used the non jakarta version of GWT? Or it does additionally exist in your classpath (redundantly).
You have to use the GWT jakarta version and not the javax version. Also make sure no dependency is loading the old version as a transitive dependency...

<dependency>
 <groupId>org.gwtproject</groupId>
 <artifactId>gwt-servlet-jakarta</artifactId>
  <version>${gwt.version}</version>
</dependency>
<dependency>
 <groupId>org.gwtproject</groupId>
 <artifactId>gwt-user</artifactId>
 <version>${gwt.version}</version>
</dependency>



And not:

<dependency>

 <groupId>org.gwtproject</groupId>

 <artifactId>gwt-servlet</artifactId>

 <version>${gwt.version}</version>

</dependency>

<dependency>

 <groupId>org.gwtproject</groupId>

 <artifactId>gwt-user</artifactId>

 <version>${gwt.version}</version>

</dependency>


Happy analyzing :--)

Arpan Ameta

unread,
Jun 26, 2025, 8:26:36 AMJun 26
to GWT Users

Hello Team,

I am working on migrating our GWT-based application to support Jakarta EE (jakarta.*) and JDK 17. We’ve updated most dependencies and replaced javax.* imports with jakarta.*, and are deploying the application on WildFly 33.

However, we're currently blocked by an issue with GWT's gwt-user dependency, which still references javax.servlet.http.HttpServlet. This causes a deployment failure, as WildFly 33 no longer supports javax.servlet.*.

Error from WildFly Server Log: 

  Caused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    ...
WELD-001519: Not generating any bean definitions from org.gwtrpcspring.RemoteServiceDispatcher
because of underlying class loading error: Type javax.servlet.http.HttpServlet not found.


The root cause appears to be the gwt-user library internally depending on javax.servlet.http.HttpServlet, which is no longer present in Jakarta EE 10 environments like WildFly 33.

What’s Already Done:

  • Migrated to JDK 17 and Jakarta EE 10.

  • Updated other dependencies like Atmosphere, Velocity, Commons FileUpload, etc.

  • Replaced all direct javax.* usages with jakarta.* in our codebase.

  • Confirmed WildFly 33 is configured properly for Jakarta EE.

Request for Help:

  • Is there a Jakarta-compatible fork or alternative for gwt-user?

  • Has anyone succeeded in using GWT with Jakarta EE (e.g., on WildFly 33)?

  • Would shading or patching the library (e.g., with jarjar, transform plugin, or gradle-shadow) help in this case?

  • Any GWT versions (or maintained forks) that already support Jakarta namespaces?

Any guidance or workarounds will be greatly appreciated.

Thanks in advance,
Arpan Ameta

server.log.txt

Lonzak

unread,
Jun 26, 2025, 10:13:47 AMJun 26
to GWT Users
Hello Arpan,

did you read my last post?

I just saw that our final build file does not contain gwt-user. The files are all from gwt-servlet-2.12.2.jar which contains the correct jakarta imports:

package com.google.gwt.user.server.rpc.jakarta;
...

import jakarta.servlet.ServletConfig;

import jakarta.servlet.ServletException;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

...
public class RemoteServiceServlet extends AbstractRemoteServiceServlet ...

>Request for Help:

>Is there a Jakarta-compatible fork or alternative for gwt-user?

As mentioned use: 

<dependency>
 <groupId>org.gwtproject</groupId>
 <artifactId>gwt-servlet-jakarta</artifactId>
  <version>${gwt.version}</version>
</dependency>

>Has anyone succeeded in using GWT with Jakarta EE (e.g., on WildFly 33)?

Yes we have (with WF 34, now 36)

>Would shading or patching the library (e.g., with jarjar, transform plugin, or gradle-shadow) help in this case?

You could try but I wouldn't. Correctly update/replace/exclude all necessary dependencies. That includes gwtrpc-spring.

I checked the code of the gwtrpc-spring project and found several javax references. So you'll need to create your own fork which uses the jakarta version (as described in my previous post)

gwtrpc-spring\trunk\src\main\java\org\gwtrpcspring\gilead\GileadAdapterAdvice.java
line 18: import javax.annotation.PostConstruct;
 gwtrpc-spring\source-archive\gwtrpc-spring\trunk\src\main\java\org\gwtrpcspring\gilead\GileadHelper.java
line 18: import javax.servlet.http.HttpSession;
 gwtrpc-spring\source-archive\gwtrpc-spring\trunk\src\main\java\org\gwtrpcspring\RemoteServiceUtil.java
line 18: import javax.servlet.ServletContext;
line 19: import javax.servlet.http.HttpServletRequest;
line 20: import javax.servlet.http.HttpServletResponse;
line 21: import javax.servlet.http.HttpSession;

>Any GWT versions (or maintained forks) that already support Jakarta namespaces?

Yes. See above.

Reply all
Reply to author
Forward
0 new messages