Friday, June 28, 2024

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

& Google Cloud Platform samples for App Engine with Java 11+
github.com/GoogleCloudPlatform/java-docs-samples/tree/main/appengine-java11/appengine-simple-jetty-main which shows how to have a separate jar module which run the WAR using the  java command.
As in the GWT archetype it uses Jetty Maven Plugin for the development server & it covers Eclipse debugging,
appengine-maven-plugin is only for appengine:deploy

On Friday, June 28, 2024 at 2:50:21 PM UTC+1 Daniel Webb wrote:
Hi Thomas,
Aha!! You are correct, thank you - I have added it to my POM and now the breakpoints are getting triggered :-)

Is there a way of limiting this configuration to a specific run configuration, or sometning? The way I have it set up I think the flags are passed every time?

<plugin>

<groupId>com.google.cloud.tools</groupId>

<artifactId>appengine-maven-plugin</artifactId>

<version>2.7.0</version>

<configuration>

<jvmFlags>

<jvmFlag>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000</jvmFlag>

</jvmFlags>

</configuration>

</plugin>


On Friday 28 June 2024 at 13:34:03 UTC+1 Thomas Broyer wrote:
You need to pass the -agentlib:… as <jvmArgs> of the appengine plugin, as it will fork a new JVM
On Thursday, June 27, 2024 at 7:15:26 PM UTC+2 dw...@cobwebb.com wrote:
Hi,

Can anyone help me get remote jdwp server debugging in Eclipse working? I seem to be able to get a server running but it won't halt on breakpoints.

I run as.. "Maven Build" with goals of 'clean install appengine:run' and vm arguments of '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000'
run debug.png
run debug 2.png

The Console says "Listening for transport dt_socket at address: 8000"

Then I "Debug as..." "Remote Java Application"...
remote debug 1.png

And the console starts up again with the 'clean install appengine:run' finishing up with the usual:
Started NetworkTrafficSelectChannelConnector {HTTP/1.1, (http/1.1)}{localhost:8080}

At which point I can browse to http://localhost:8080 but none of my breakpoints will trigger.

Please, what am I doing wrong? I've not done java remote debugging before :-(
Regards
Daniel


On Thursday 27 June 2024 at 16:21:17 UTC+1 Daniel Webb wrote:
Thanks Ralph, So it's source map debugging in chrome for the client side, jdwp remote debugging for the server side.
  
On Tuesday 25 June 2024 at 14:09:20 UTC+1 Ralph Fiergolla wrote:
Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-we...@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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/c30f8481-2b25-4d9c-aebf-8f7d46b7d218n%40googlegroups.com.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

Hi Craig,
Ahh right, so although it's working at the moment with  appengine:run this is being phased out so I'd better be moving to a standalone server.

On Friday 28 June 2024 at 03:19:18 UTC+1 Craig Mitchell wrote:
> Only reason I ask is I've just had the app updated from java 7 because Google dropped support - and the new project uses "appengine:run" for running locally. Should we be doing it differently?

Google are asking everyone to move to the "Second-generation Java runtimes".  https://cloud.google.com/appengine/migration-center/standard/migrate-to-second-gen/java-differences

This also includes upgrading some services, which can be a big task.  I needed to upgrade from using Datastore, to using Firestore in Datastore mode, which was a large amount of code change:  https://cloud.google.com/datastore/docs/firestore-or-datastore

I believe the bundled app engine web server "appengine:run" is now deprecated.  You now need to provide your own web server.  All Google gives you is an installed Java version, and Java libraries to interface with their systems.  How you run them, is now up to you.  Check out the "Framework flexibility" section:  https://cloud.google.com/appengine/migration-center/standard/migrate-to-second-gen/java-differences#framework_flexibility

Disclaimer:  Google has legacy bundled services you can use, and that might include a web server somehow.  I haven't looked too much into it, as I wanted my project to be on the latest, and get off all the legacy stuff.  Plus, once you get off the legacy stuff, you are no longer on Googles proprietary web server and datastore, so moving your app somewhere else becomes a lot easier if you ever needed to.

Shameless self promotion:  I just finished a project for Nasdaq, so I'll be looking for work in the next few weeks, if you needed someone with experience, happy to chat:  https://www.linkedin.com/in/craigmit75/ 

Cheers.

On Friday 28 June 2024 at 1:28:47 am UTC+10 Daniel Webb wrote:
Hi Craig,

On Wednesday 26 June 2024 at 02:56:31 UTC+1 Craig Mitchell wrote:
btw:  "appengine:run" is deprecated.  You won't be able to do any updates to your app until you upgrade.  https://cloud.google.com/appengine/docs/legacy/standard/java/maven-reference  But you probably already knew this.  🙂

Whaat, are you sure?! 
Only reason I ask is I've just had the app updated from java 7 because Google dropped support - and the new project uses "appengine:run" for running locally. Should we be doing it differently?

--
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/c1bbce22-3f86-4fe1-ad26-0a28f919e72cn%40googlegroups.com.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

Thanks for the suggestion Tim, I was really hopeful but I think I'm running in the Debug perspective but the breakpoints are still not triggering :-(

On Thursday 27 June 2024 at 18:35:23 UTC+1 Tim Macpherson wrote:
Did you open the debug view ? iirc in eclipse you need to


On Thu, Jun 27, 2024 at 6:15 PM, 'Daniel Webb' via GWT Users
Hi,

Can anyone help me get remote jdwp server debugging in Eclipse working? I seem to be able to get a server running but it won't halt on breakpoints.

I run as.. "Maven Build" with goals of 'clean install appengine:run' and vm arguments of '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000'
run debug.png
run debug 2.png

The Console says "Listening for transport dt_socket at address: 8000"

Then I "Debug as..." "Remote Java Application"...
remote debug 1.png

And the console starts up again with the 'clean install appengine:run' finishing up with the usual:
Started NetworkTrafficSelectChannelConnector {HTTP/1.1, (http/1.1)}{localhost:8080}

At which point I can browse to http://localhost:8080 but none of my breakpoints will trigger.

Please, what am I doing wrong? I've not done java remote debugging before :-(
Regards
Daniel


On Thursday 27 June 2024 at 16:21:17 UTC+1 Daniel Webb wrote:
Thanks Ralph, So it's source map debugging in chrome for the client side, jdwp remote debugging for the server side.
  
On Tuesday 25 June 2024 at 14:09:20 UTC+1 Ralph Fiergolla wrote:
Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-we...@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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.
To view this discussion on the web visit

--
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/13a26a21-b6c3-4339-9818-e4439f66ba43n%40googlegroups.com.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

You need to pass the -agentlib:… as <jvmArgs> of the appengine plugin, as it will fork a new JVM
https://cloud.google.com/appengine/docs/legacy/standard/java/maven-reference#appenginerun

On Thursday, June 27, 2024 at 7:15:26 PM UTC+2 dw...@cobwebb.com wrote:
Hi,

Can anyone help me get remote jdwp server debugging in Eclipse working? I seem to be able to get a server running but it won't halt on breakpoints.

I run as.. "Maven Build" with goals of 'clean install appengine:run' and vm arguments of '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000'
run debug.png
run debug 2.png

The Console says "Listening for transport dt_socket at address: 8000"

Then I "Debug as..." "Remote Java Application"...
remote debug 1.png

And the console starts up again with the 'clean install appengine:run' finishing up with the usual:
Started NetworkTrafficSelectChannelConnector {HTTP/1.1, (http/1.1)}{localhost:8080}

At which point I can browse to http://localhost:8080 but none of my breakpoints will trigger.

Please, what am I doing wrong? I've not done java remote debugging before :-(
Regards
Daniel


On Thursday 27 June 2024 at 16:21:17 UTC+1 Daniel Webb wrote:
Thanks Ralph, So it's source map debugging in chrome for the client side, jdwp remote debugging for the server side.
  
On Tuesday 25 June 2024 at 14:09:20 UTC+1 Ralph Fiergolla wrote:
Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-we...@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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/6132df38-5577-4ff8-ba08-1ea5a4edbd24n%40googlegroups.com.

Thursday, June 27, 2024

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

> Only reason I ask is I've just had the app updated from java 7 because Google dropped support - and the new project uses "appengine:run" for running locally. Should we be doing it differently?

Google are asking everyone to move to the "Second-generation Java runtimes".  https://cloud.google.com/appengine/migration-center/standard/migrate-to-second-gen/java-differences

This also includes upgrading some services, which can be a big task.  I needed to upgrade from using Datastore, to using Firestore in Datastore mode, which was a large amount of code change:  https://cloud.google.com/datastore/docs/firestore-or-datastore

I believe the bundled app engine web server "appengine:run" is now deprecated.  You now need to provide your own web server.  All Google gives you is an installed Java version, and Java libraries to interface with their systems.  How you run them, is now up to you.  Check out the "Framework flexibility" section:  https://cloud.google.com/appengine/migration-center/standard/migrate-to-second-gen/java-differences#framework_flexibility

Disclaimer:  Google has legacy bundled services you can use, and that might include a web server somehow.  I haven't looked too much into it, as I wanted my project to be on the latest, and get off all the legacy stuff.  Plus, once you get off the legacy stuff, you are no longer on Googles proprietary web server and datastore, so moving your app somewhere else becomes a lot easier if you ever needed to.

Shameless self promotion:  I just finished a project for Nasdaq, so I'll be looking for work in the next few weeks, if you needed someone with experience, happy to chat:  https://www.linkedin.com/in/craigmit75/ 

Cheers.

On Friday 28 June 2024 at 1:28:47 am UTC+10 Daniel Webb wrote:
Hi Craig,

On Wednesday 26 June 2024 at 02:56:31 UTC+1 Craig Mitchell wrote:
btw:  "appengine:run" is deprecated.  You won't be able to do any updates to your app until you upgrade.  https://cloud.google.com/appengine/docs/legacy/standard/java/maven-reference  But you probably already knew this.  🙂

Whaat, are you sure?! 
Only reason I ask is I've just had the app updated from java 7 because Google dropped support - and the new project uses "appengine:run" for running locally. Should we be doing it differently?

--
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/7b7b50aa-4916-4e5a-99f9-b68b259d9ecen%40googlegroups.com.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

Did you open the debug view ? iirc in eclipse you need to


On Thu, Jun 27, 2024 at 6:15 PM, 'Daniel Webb' via GWT Users
<google-web-toolkit@googlegroups.com> wrote:
Hi,

Can anyone help me get remote jdwp server debugging in Eclipse working? I seem to be able to get a server running but it won't halt on breakpoints.

I run as.. "Maven Build" with goals of 'clean install appengine:run' and vm arguments of '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000'
run debug.png
run debug 2.png

The Console says "Listening for transport dt_socket at address: 8000"

Then I "Debug as..." "Remote Java Application"...
remote debug 1.png

And the console starts up again with the 'clean install appengine:run' finishing up with the usual:
Started NetworkTrafficSelectChannelConnector {HTTP/1.1, (http/1.1)}{localhost:8080}

At which point I can browse to http://localhost:8080 but none of my breakpoints will trigger.

Please, what am I doing wrong? I've not done java remote debugging before :-(
Regards
Daniel


On Thursday 27 June 2024 at 16:21:17 UTC+1 Daniel Webb wrote:
Thanks Ralph, So it's source map debugging in chrome for the client side, jdwp remote debugging for the server side.
  
On Tuesday 25 June 2024 at 14:09:20 UTC+1 Ralph Fiergolla wrote:
Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-we...@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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/66677696-106b-42ff-bea4-15bd6984b19an%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/1579788657.4996109.1719509672381%40mail.yahoo.com.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

Hi Craig,

On Wednesday 26 June 2024 at 02:56:31 UTC+1 Craig Mitchell wrote:
btw:  "appengine:run" is deprecated.  You won't be able to do any updates to your app until you upgrade.  https://cloud.google.com/appengine/docs/legacy/standard/java/maven-reference  But you probably already knew this.  🙂

Whaat, are you sure?! 
Only reason I ask is I've just had the app updated from java 7 because Google dropped support - and the new project uses "appengine:run" for running locally. Should we be doing it differently?

--
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/8020a958-d955-4172-a920-1a70d86245b2n%40googlegroups.com.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

Thanks Ralph, So it's source map debugging in chrome for the client side, jdwp remote debugging for the server side.
  
On Tuesday 25 June 2024 at 14:09:20 UTC+1 Ralph Fiergolla wrote:
Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-we...@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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/baf67b9a-679f-40e6-8c41-8b162d9ac355n%40googlegroups.com.

Tuesday, June 25, 2024

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

btw:  "appengine:run" is deprecated.  You won't be able to do any updates to your app until you upgrade.  https://cloud.google.com/appengine/docs/legacy/standard/java/maven-reference  But you probably already knew this.  🙂

On Wednesday 26 June 2024 at 11:23:00 am UTC+10 Craig Mitchell wrote:
As Ralph says, for the client, you can use the Chrome debugger, but if you didn't want to, the Eclipse SDBG plugin should still work.  Or if you use IntelliJ, the paid Ultimate version comes with a JS debuger (I've not seen a JS debugger for the free Community version).

For the server, you might find it easier to put the flags Ralph talks about into your pom file.  Eg: If you use springboot, you can do this:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <skip>false</skip>
    <jvmArguments>
      -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000 <!-- Allow debugging -->
      --add-opens java.base/java.lang=ALL-UNNAMED <!-- Allow exceptions to have java.lang details serialised -->
    </jvmArguments>
  </configuration>
</plugin>

On Tuesday 25 June 2024 at 11:09:20 pm UTC+10 Ralph Fiergolla wrote:
Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-we...@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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/f50a45fa-71f7-45e9-ba29-29f8d66adf5bn%40googlegroups.com.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

As Ralph says, for the client, you can use the Chrome debugger, but if you didn't want to, the Eclipse SDBG plugin should still work.  Or if you use IntelliJ, the paid Ultimate version comes with a JS debuger (I've not seen a JS debugger for the free Community version).

For the server, you might find it easier to put the flags Ralph talks about into your pom file.  Eg: If you use springboot, you can do this:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <skip>false</skip>
    <jvmArguments>
      -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000 <!-- Allow debugging -->
      --add-opens java.base/java.lang=ALL-UNNAMED <!-- Allow exceptions to have java.lang details serialised -->
    </jvmArguments>
  </configuration>
</plugin>

On Tuesday 25 June 2024 at 11:09:20 pm UTC+10 Ralph Fiergolla wrote:
Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-we...@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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/2956091e-3acf-4815-819f-c97ca2345378n%40googlegroups.com.

Monday, June 24, 2024

Re: module java.base does not "opens java.lang" to unnamed module

Apparently: when running in a sandboxed environment on the cloud there is a controlled module structure which ensures proper access permissions. This typically prevents the need for reflection to access private fields.

This seems to be the case for throwing IllegalArgumentException on App Engine: no --add-opens required, but with Spring the situation may be different. I haven't tested illegal access for LinkedHashMap_CustomFieldSerializer yet.



On Monday 24 June 2024 at 02:50:56 BST, Craig Mitchell <mail@craig-mitchell.com> wrote:


My Google App Engine didn't get around it.  Well, I don't think it did.  In my app.yaml I have the add-opens:

runtime: java17
instance_class: F1
entrypoint: java --add-opens java.base/java.lang=ALL-UNNAMED -Xms150m -Xmx350m -jar drift-team.war

On Monday 24 June 2024 at 2:23:33 am UTC+10 Tim Macpherson wrote:
Thanks Colin, so this is an issue that is ongoing.  Still wondering how app engine deployment get around it.


On Sat, Jun 22, 2024 at 7:49 PM, Colin Alworth
GWT-RPC's purpose is to enable serialization of objects to and from the server. Usually, those types either are written by the application authors, or have well supported interfaces to interact with them, but there are exceptions (Throwable, as you first noted, and LinkedHashMap has one of the other main ones I can think of).

As we know it today, GWT-RPC was written for around Java 1.5 - reflection was not desirable even then because it was slow, but JPMS was many years away from being considered.

For Throwable, we serialize this in two main cases: sending logs to the server so client errors can be tracked, solved, and sending errors to the client so they know an operation has failed in some way. So, we need to both read and write the `detailMessage` field of throwable - and there is no guaranteed way to either read _or_ write this without reflection. Reading example: a custom exception type could override getMessage() and make use of super.getMessage(), so the private field is needed but cannot be read directly. Writing example: a custom exception type could exist that calls super(String) but doesn't pass in a constructor argument directly, so the detailMessage field can't be reliably written.

If this is unacceptable, the best option would be to define a CustomFieldSerializer for Throwable and supported subtypes that have their own fields, and deal with the exceptions described above as you see fit, by deciding how to handle the loss of data in those cases. GWT doesn't make this decision for you.

For LinkedHashMap the `accessOrder` constructor argument is effectively hidden state - there is no nice way to interogate a LinkedHashMap to ask if it is based on insertion or access order directly. There is a not-very-nice way though, and this is what GWT does if reflection is not available (clone the collection, clear the clone, insert two keys, access the second, iterate to see which was first). This is why I was asking about GWT 2.11, which has this a fix to better handle Java 17 (see https://github.com/gwtproject/gwt/pull/9791):

You should not need to apply a workaround via more reflection - this will fail the first time it is attempted, and track that for future reference, so the error will only happen once.

For both of these cases, we have to decide what it means to not have access to this data, and how likely these internals are to change. Is Throwable going to lose its detailMessage? Is LinkedHashMap going to change how accessOrder works? Especially for just two cases, the answer is very likely no, and we run CI with GWT (including tests for serialization for these types) against so-called LTS JDKs and the current latest version, so that if they do change, we know about it.


On Saturday, June 22, 2024 at 5:07:19 AM UTC-5 tim_mac...@yahoo.co.uk wrote:

touches on the issue:
Using --add-opens should be considered a workaround.
The right thing is for libraries performing illegal access to fix their issues.

reflection  removes encapsulation: makes every element in a code unit part of its API
Strong encapsulation aids in maintainability and security.


The result is a user class that is tightly coupled to the internal implementation of the JDK.
If enough developers abuse this openness, this leads to a situation in which it is difficult or impossible 
to make changes to the internals, because to do so would break deployed libraries and applications.
This is one of the problems that modules were invented to solve.


I have found:

On app engine there's no need for --add-opens java.base/java.lang=ALL-UNNAMED, only on local jetty.
This java fix for LinkedHashMap reflection failure is probably more worrying:
...
Field field = LinkedHashMap_CustomFieldSerializer.class.getDeclaredField("reflectionHasFailed");
field.setAccessible(true);
...



On Saturday 22 June 2024 at 02:53:52 BST, Craig Mitchell <ma...@craig-mitchell.com> wrote:


This is because, from Java 9, access to the Java classes has been restricted.  More info:  https://stackoverflow.com/questions/41265266/how-to-solve-inaccessibleobjectexception-unable-to-make-member-accessible-m

In the case of GWT, if you want exceptions passed back via RPC, GWT needs access to the java.lang classes to serialise them to contain all the Java class details.

So, you need to add:  --add-opens java.base/java.lang=ALL-UNNAMED  when running.

I didn't know it was not recommended.  Why is it bad to do?

On Saturday 22 June 2024 at 3:34:59 am UTC+10 Tim Macpherson wrote:
It happens with the latest tbroyer archetype, just change the server method so it always throws 


On Fri, Jun 21, 2024 at 4:20 PM, Colin Alworth
Can you share a little more detail, like the full error message with stack trace, and the GWT version you're using? Some improvements were made in this area for GWT 2.11, and some messages of this kind are merely warnings, indicating that reflection was attempted and some fallback can usually be used instead.

On Friday, June 21, 2024 at 8:45:59 AM UTC-5 tim_mac...@yahoo.co.uk wrote:
SInce upgrading to Java 11,  throwing a new IllegalArgumentException in an RPC server-side implementation gives  InaccessibleObjectException. It can be stopped by using a VM argument --add-opens, but apparently this is not recommended.
Can anyone  clarify ?

--
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

--
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

--
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

--
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/f839b75e-9504-4768-9480-00c6e246f7e3n%40googlegroups.com
.

Re: is it possible to debug GWT projects (breakpoints, step through code etc) ?

Hi! Unless you want to invest time and effort in getting eclipse plugins up and running, I would suggest using your browser's development tools (Ctrl+Shift+I in Chrome/Edge) to debug the client side. Thanks to source maps it will show your JAVA source code when debugging. 
To debug the server side, you need to start your server with "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n" and create a debug configuration to connect to port 8000 in Eclipse.
Good luck
Ralph

On Mon, Jun 24, 2024 at 11:19 AM 'Daniel Webb' via GWT Users <google-web-toolkit@googlegroups.com> wrote:
Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%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/CACwwWxMvZyndC3p8cqM7uKDDSck0khKeAVGLeUG2N2g-JXxJLw%40mail.gmail.com.

is it possible to debug GWT projects (breakpoints, step through code etc) ?

Hi, 
Is it possible to debug GWT projects - setting breakpoints and stepping through code? This would be server and/or client debugging.

We've just had our internal GWT based app updated and it now uses maven to run (clean install appengine:run). The eclipse plugin based debugging technique that I used to use no longer seems to work.

Thanks for any advice, I really like GWT but I'm lost as to how it all works!
Daniel

--
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/253e328a-484c-4c19-aaf7-e489780c3c0bn%40googlegroups.com.

Sunday, June 23, 2024

Re: module java.base does not "opens java.lang" to unnamed module

My Google App Engine didn't get around it.  Well, I don't think it did.  In my app.yaml I have the add-opens:

runtime: java17
instance_class: F1
entrypoint: java --add-opens java.base/java.lang=ALL-UNNAMED -Xms150m -Xmx350m -jar drift-team.war

On Monday 24 June 2024 at 2:23:33 am UTC+10 Tim Macpherson wrote:
Thanks Colin, so this is an issue that is ongoing.  Still wondering how app engine deployment get around it.


On Sat, Jun 22, 2024 at 7:49 PM, Colin Alworth
GWT-RPC's purpose is to enable serialization of objects to and from the server. Usually, those types either are written by the application authors, or have well supported interfaces to interact with them, but there are exceptions (Throwable, as you first noted, and LinkedHashMap has one of the other main ones I can think of).

As we know it today, GWT-RPC was written for around Java 1.5 - reflection was not desirable even then because it was slow, but JPMS was many years away from being considered.

For Throwable, we serialize this in two main cases: sending logs to the server so client errors can be tracked, solved, and sending errors to the client so they know an operation has failed in some way. So, we need to both read and write the `detailMessage` field of throwable - and there is no guaranteed way to either read _or_ write this without reflection. Reading example: a custom exception type could override getMessage() and make use of super.getMessage(), so the private field is needed but cannot be read directly. Writing example: a custom exception type could exist that calls super(String) but doesn't pass in a constructor argument directly, so the detailMessage field can't be reliably written.

If this is unacceptable, the best option would be to define a CustomFieldSerializer for Throwable and supported subtypes that have their own fields, and deal with the exceptions described above as you see fit, by deciding how to handle the loss of data in those cases. GWT doesn't make this decision for you.

For LinkedHashMap the `accessOrder` constructor argument is effectively hidden state - there is no nice way to interogate a LinkedHashMap to ask if it is based on insertion or access order directly. There is a not-very-nice way though, and this is what GWT does if reflection is not available (clone the collection, clear the clone, insert two keys, access the second, iterate to see which was first). This is why I was asking about GWT 2.11, which has this a fix to better handle Java 17 (see https://github.com/gwtproject/gwt/pull/9791):

You should not need to apply a workaround via more reflection - this will fail the first time it is attempted, and track that for future reference, so the error will only happen once.

For both of these cases, we have to decide what it means to not have access to this data, and how likely these internals are to change. Is Throwable going to lose its detailMessage? Is LinkedHashMap going to change how accessOrder works? Especially for just two cases, the answer is very likely no, and we run CI with GWT (including tests for serialization for these types) against so-called LTS JDKs and the current latest version, so that if they do change, we know about it.


On Saturday, June 22, 2024 at 5:07:19 AM UTC-5 tim_mac...@yahoo.co.uk wrote:

touches on the issue:
Using --add-opens should be considered a workaround.
The right thing is for libraries performing illegal access to fix their issues.

reflection  removes encapsulation: makes every element in a code unit part of its API
Strong encapsulation aids in maintainability and security.


The result is a user class that is tightly coupled to the internal implementation of the JDK.
If enough developers abuse this openness, this leads to a situation in which it is difficult or impossible 
to make changes to the internals, because to do so would break deployed libraries and applications.
This is one of the problems that modules were invented to solve.


I have found:

On app engine there's no need for --add-opens java.base/java.lang=ALL-UNNAMED, only on local jetty.
This java fix for LinkedHashMap reflection failure is probably more worrying:
...
Field field = LinkedHashMap_CustomFieldSerializer.class.getDeclaredField("reflectionHasFailed");
field.setAccessible(true);
...



On Saturday 22 June 2024 at 02:53:52 BST, Craig Mitchell <ma...@craig-mitchell.com> wrote:


This is because, from Java 9, access to the Java classes has been restricted.  More info:  https://stackoverflow.com/questions/41265266/how-to-solve-inaccessibleobjectexception-unable-to-make-member-accessible-m

In the case of GWT, if you want exceptions passed back via RPC, GWT needs access to the java.lang classes to serialise them to contain all the Java class details.

So, you need to add:  --add-opens java.base/java.lang=ALL-UNNAMED  when running.

I didn't know it was not recommended.  Why is it bad to do?

On Saturday 22 June 2024 at 3:34:59 am UTC+10 Tim Macpherson wrote:
It happens with the latest tbroyer archetype, just change the server method so it always throws 


On Fri, Jun 21, 2024 at 4:20 PM, Colin Alworth
Can you share a little more detail, like the full error message with stack trace, and the GWT version you're using? Some improvements were made in this area for GWT 2.11, and some messages of this kind are merely warnings, indicating that reflection was attempted and some fallback can usually be used instead.

On Friday, June 21, 2024 at 8:45:59 AM UTC-5 tim_mac...@yahoo.co.uk wrote:
SInce upgrading to Java 11,  throwing a new IllegalArgumentException in an RPC server-side implementation gives  InaccessibleObjectException. It can be stopped by using a VM argument --add-opens, but apparently this is not recommended.
Can anyone  clarify ?

--
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

--
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

--
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

--
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/f839b75e-9504-4768-9480-00c6e246f7e3n%40googlegroups.com.