DevMode as application server

74 views
Skip to first unread message

blackh...@gmail.com

unread,
Mar 25, 2024, 6:40:37 AMMar 25
to GWT Users
Hi all,

With the release of GWT 2.11.0 Using DevMode as an application server is deprecated.
From the release notes:
"Using DevMode as an application server is deprecated, and may be removed or changed in a future release. Please migrate local development workflows to using a general purpose server, or a custom ServletContainerLauncher."

We are using the Devmode as an application server and want to change, to also be prepared for the future.

We are using ant as the build tool and i want to know what to set up to make development mode working.

I did try "just" starting the code server via an ant task:

<target name="demo-codeserver" description="Run Super Dev Mode for demo">

<java failonerror="true" fork="true"

classname="com.google.gwt.dev.codeserver.CodeServer">

<classpath>

<pathelement location="src"/>

<path refid="gwt.classpath"/>

</classpath>

<jvmarg value="-Xmx1024M"/>

<arg value="-bindAddress"/>

<arg value="127.0.0.1"/>

<arg value="-port"/>

<arg value="9876"/>

<arg line="-src"/>

<arg value="${rootDir}\GWT\src"/>

<arg line="-logLevel"/>

<arg value="DEBUG"/>

<arg line="-style"/>

<arg value="PRETTY"/>

<arg value="com.sweet.demo.webclient"/>

</java>

</target>


The ant task starts and compiles the code, but when opening the url, it keeps recompiling. part of the log:


[java] GET /recompile-requester/demo

[java] Constructing StandardLinkerContext

[java] GET /recompile/demo

[java] Job com.sweet.demo.webclient_1_192

[java] job's progress set to WAITING: com.sweet.demo.webclient_1_192

[java] added job to queue

[java] starting job: com.foxboro.foxnl.base.demo.webclient_1_192

[java] job's progress set to COMPILING: com.sweet.demo.webclient_1_192

[java] job's progress set to COMPILING: com.sweet.demo.webclient_1_192

[java] Constructing StandardLinkerContext

[java] binding: user.agent=safari

[java] skipped compile because no input files have changed

[java] 0.187s total -- Compile completed

[java] job's progress set to SERVING: com.sweet.demo.webclient_1_192

[java] job's progress set to GONE: com.sweet.demo.webclient_1_191

[java] GET /recompile-requester/demo


Am i missing a parameter or is do i have the wrong approach?


Jens

unread,
Mar 25, 2024, 7:41:57 AMMar 25
to GWT Users
CodeServer has a parameter named launcherDir which should point to your exploded war directory. CodeServer generates a special index.nocache.js file which needs to be deployed with your war file. Once you have done that, you just have to open the url to your deployed war file.

So in addition to CodeServer you also need a running jetty (local installation or via docker or possibly via eclipse jetty plugin)

-- J.

blackh...@gmail.com

unread,
Mar 25, 2024, 7:56:56 AMMar 25
to GWT Users
Hi Jens,

Thank you for the quick reply. I have tomcat as external web server.
That should work too, doesn't it?

My files are compiled in {projectfolder}\GWT\war\demo

I am letting tomcat point to that folder and if i would add the following lines to my demo-codeserver task:

<arg line="-launcherDir"/>

<arg value="${rootDir}\GWT\war\demo"/>


Then i get the same result. The browser shows compiling demo, this completes with the following logging:

[java] Linking succeeded -- 4.376s

[java] 13.264s total -- Compile completed

[java] job's progress set to SERVING: com.sweet.demo.webclient_1_0

[java] GET /recompile-requester/demo

[java] Constructing StandardLinkerContext


But then it starts recompiling again and again...somehow get's stuck in a recompile loop.

Op maandag 25 maart 2024 om 12:41:57 UTC+1 schreef Jens:

Jens

unread,
Mar 25, 2024, 8:14:42 AMMar 25
to GWT Users
Sure you can also use tomcat or any other servlet container as you just deploy a war file/folder.

Does the browser actively reload the page? Or does the compile loop happen without reloading the page? I never heard of a compile loop so far so I assume that the browser actively reloads the page. Maybe you have some reload logic inside your app that is now triggered? For example if your app uses GWT-RPC you might have code that reloads the page if it detects that client and server GWT-RPC are out of sync?

-- J.

blackh...@gmail.com

unread,
Mar 25, 2024, 8:48:21 AMMar 25
to GWT Users
i cleaned the project and did a full rebuild. which seemed to fix the reload issue.
Now i need to know how to tell tomcat where my sources are (classpath) 

i have tried using the tomcat without eclipse; So basicly starting it via the (windows) service.
I also tried starting tomcat from eclipse where you can add the project sources to the classpath.
But somehow tomcat is not loading the servlets/services
Op maandag 25 maart 2024 om 13:14:42 UTC+1 schreef Jens:

Jens

unread,
Mar 25, 2024, 10:19:12 AMMar 25
to GWT Users
You should aim to build a proper war / exploded war. Then everything tomcat needs is already in WEB-INF/classes and WEB-INF/lib. 

-- J.

Reply all
Reply to author
Forward
0 new messages