GWT uses an embedded Jetty server. It is used at the beginning of the development of an application. During the prototype phase.
Personally, I used it for about a year, until we got the need to use JMS.
And since Jetty is not a Java EE server – it does not implement the JMS API – it was time to say goodbye to Jetty and use the application server that is used in production : Jonas.
There is not much info about the configuration to use in order to launch the hosted mode with a server different from Jetty. I found that the official website of the gwt-maven-plugin lacks information in that area.
I spent a few hours finding out the correct configuration for that. So here is how to do it :
1) Start Jonas
2) Deploy the application (EAR or WAR)
3) Run the goal gwt:run
And the configuration for the gwt-maven-plugin plugin is the following :
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<!-- Old configuration, to run the hosted mode with JETTY. -->
<!--
<configuration>
<runTarget>identify.html</runTarget>
<hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp>
<modules>
<module>${project.groupId}.foo.bla.MainApplication</module>
<module>${project.groupId}.foo.bla.SecondEntry</module>
</modules>
<copyWebapp>true</copyWebapp>
<extraJvmArgs>-XX:MaxPermSize=512M -Xms512M -Xmx1024M </extraJvmArgs>
</configuration>
-->
<!-- New configuration, to run the hosted mode with JONAS -->
<configuration>
<modules>
<module>${project.groupId}.foo.bla.MainApplication</module>
<module>${project.groupId}.foo.bla.SecondEntry</module>
</modules>
<extraJvmArgs>-XX:MaxPermSize=512M -Xms512M -Xmx1024M </extraJvmArgs>
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<runTarget>http://localhost:9000/app-context/main.html</runTarget>
<copyWebapp>false</copyWebapp>
<!-- do not start JETTY -->
<noServer>true</noServer>
<!-- the folder where the exploded WAR is located, inside Jonas -->
<!-- Constant path if jonas.development=false in conf/jonas.properties -->
<hostedWebapp>${env.JONAS_BASE}\work\webapps\jonas\ear\myapp-ear-SNAPSHOT.ear\${project.build.finalName}.war</hostedWebapp>
<bindAddress>localhost</bindAddress> <!-- other possible value : 0.0.0.0 -->
<logLevel>INFO</logLevel>
<style>OBF</style>
</configuration>
<executions>
<execution>
<id>gwtcompile</id>
<phase>prepare-package</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
Line 35 is the most important : it specifies the path where the exploded war is deployed in Jonas.
That configuration could work with another application server of course.