Tuesday, December 6, 2022

Re: Convert Existing GWT Backend to SPRING BOOT

In addition to previous poster -> yes you can keep on using the GWT RPC. 

The things I had to change in order to keep it working when packaging the spring boot jar, was;
1 - to make sure Spring Boot runs the servlets (enough on the web for that)
2 - to make sure the gwt compile ends up in de classes folder before the .jar is created 
3 - to make sure the servlet can access the .gwt.rpc file to validate the servlet calls. 
Normally that is available to the servlet from the war package, but since it's a jar with Spring boot you need to make some changes;
For that I had to override the RemoteServiceServlet method;

@Override
protected SerializationPolicy doGetSerializationPolicy(HttpServletRequest request, String moduleBaseURL, String strongName) {
          return SerializationPolicyLoader.loadFromStream(new ClassPathResource("classpath:yourLocation/" + strongName+".gwt.rpc").getInputStream(), null);
}

So the changes are quite limited and not as much Spring boot specific, but more the oddities of changing the package format from a .war to a .jar
That was all -> runs like a charm
Op maandag 5 december 2022 om 23:00:26 UTC+1 schreef lofid...@gmail.com:
Hi All, 

you don't have to move GWT RPC to REST and JSON when you want to move the backend to Spring Boot. GWT RPC is just a servlet which you can register in Spring Boot.

Here are some examples of the standard GWT Demo StockWatcher but implemented using Spring Boot with GWT RPC and REST JSON:



(2) This example shows to integrate the GWT RPC servlet to Spring Boot, but I think doesn't work so far. I could take a look if you want to.


Cheers,
Lofi

Michael Joyner schrieb am Montag, 21. November 2022 um 16:50:29 UTC+1:
Are you using gwt-RPC ?
Yes! we are using GWT-RPC & currently having a single WAR of near about 500mb, having CLIENT-SHARED-SERVER in a same project.
You can still have everything in a master parent project that builds the final WAR with all the client JS and SERVER classes in the same war.


You'll need to switch to JSON for data transport.
Is there any drawback of switching to JSON in GWT, such as impact on performance etc.
You lose easy polymorphism for models, they will require an extra set of annotations at the very least if you have polymorphism as part of your DTO setup.


You'll need to use something like DominoKit REST.
We found one RestyGWT, but not sure about its final impact as we haven't applied it yet. any suggestions...
RestyGWT is effectively defunct. Stick with a modern GWT3 compatible approach such as DominoKit.



It would be also be best to split the project into three projects. An API project, a shared code project, and a UI project.
We cannot get why keeping SHARED CODE as a separate project is best. We are not having any library of GWT on server side. So except MODELS, what are the other stuffs we can have in SHARED CODE PROJECT.  
In this case SHARED CODE is really just the MODELS and INTERFACES and possible the REST Interface.


If you are using gwt-RPC then IMHO there will need to be a big refactoring change at the very least
This is where we are stuck & looking for the solution with a minimum change and should be stable but unable to figure out yet.
I don't think you can accomplish this with a large project with minimum of change unless the client API calls are fully abstracted away (or can be) so that code could be replaced with a different class.

On Monday, November 21, 2022 at 7:37:33 PM UTC+5:30 Michael Joyner wrote:
There are a lot of factors to consider.

Are you using gwt-RPC ? You'll need to switch to JSON for data transport.

You'll need to use something like DominoKit REST (https://github.com/DominoKit/domino-rest)  for the data transport layer.

It would be also be best to split the project into three projects. An API project, a shared code project, and a UI project.

If you are using gwt-RPC then IMHO there will need to be a big refactoring change at the very least.


On 11/21/22 08:19, viny...@gmail.com wrote:

We are having a huge project already running successfully on GWT.

But for some reasons we are planning to move our backend to SPRING-BOOT keeping front end in GWT. 

Is there any way we can do it easily without a big change in our existing application. 


--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-tool...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/c267bbb3-504f-41a8-896a-a2c2463eccdcn%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-tool...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/5535048c-bbc2-4f58-8cf4-11025a166464n%40googlegroups.com.

No comments:

Post a Comment