Tuesday, October 17, 2023

Re: Convert Existing GWT Backend to SPRING BOOT

Yw, glad it worked!


On Tue, 17 Oct 2023 at 19:45, 'Eric Dufresne' via GWT Users <google-web-toolkit@googlegroups.com> wrote:
That did the trick. In my pom.xml I had my `deploy` location as `<deploy>${project.build.directory}/gwt-deploy</deploy>` but I guess that isn't on the classpath so moving it to ${project.build.directory}/public/gwt-deploy (which I believe is automatically on Spring's classpath) worked. Was able to get rid of the classpath: prefix as well. 

Ty for the help Leon! 

On Tuesday, 17 October 2023 at 00:49:13 UTC-4 Leon wrote:
Hey Eric,

I did this and it worked out of the box;
@Override
    protected SerializationPolicy doGetSerializationPolicy(HttpServletRequest request, String moduleBaseURL, String strongName) {
        try {
            return SerializationPolicyLoader.loadFromStream(new ClassPathResource("classpath:public/my_compile_folder_name/" + strongName+".gwt.rpc").getInputStream(), null);
        } catch (Exception e) {
            LOGGER.error("Error loading Serialization policy - peeps with outdated application version");
            return null;
        }
    }

On Tue, Oct 17, 2023 at 12:20 AM 'Eric Dufresne' via GWT Users <google-we...@googlegroups.com> wrote:
Hi!

Were you successful in building out a JAR using spring boot while still using GWT RPC? I am on the last step of getting the `.gwt.rpc` files in the right place but I still get serialization errors saying the serialization policy files are missing. 

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

where in the JAR did you add the gwt.rpc files and how did you access them from here?

Any help would be greatly appreciated.

Thanks!

On Tuesday, 6 December 2022 at 18:57:27 UTC-5 Dr. Lofi Dewanto wrote:
Thanks a lot for the tips on Spring Boot packaging in JAR. 

Yes, the first example I showed was with packaging WAR. That works fine.

I would try your tips to be able to run on the JAR packaging (second example).

I'll tell you, whether I'm successful or not. 

It is weird, that I could run the RemoteLoggingServiceImpl.java for GWT logger on the JAR packaging but not the RemoteServlet.

Thanks,
Lofi 

Leon Pennings <leon.p...@gmail.com> schrieb am Di., 6. Dez. 2022, 14:28:
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 a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/13cHZX5KoQA/unsubscribe.
To unsubscribe from this group and all its topics, 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/5535048c-bbc2-4f58-8cf4-11025a166464n%40googlegroups.com.

--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/13cHZX5KoQA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-tool...@googlegroups.com.

--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/13cHZX5KoQA/unsubscribe.
To unsubscribe from this group and all its topics, 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/fbf7b862-14ff-460c-b784-86588722873an%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-toolkit+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/CABjQu7Q%2BkOyDwwNFwYCyPeKN83hqJPjZdOSU_-RSdRAF2cyRnA%40mail.gmail.com.

No comments:

Post a Comment