Search code examples
gwttapestry

Including GWT in Tapestry 4


I am having a Tapestry 4 running on a JBoss 4.3 server. The web app is running at http://localhost:8080/TapestryGISPlayerground/ In this Tapestry im using GWT code. This is the HomePage:

<html jwcid="@Shell" title="literal:'TapestryGISPlayerground' Start Page" >
<body jwcid="@Body">
<h1>view Start Page</h1>

<script language="javascript" src="/TapestryGISPlayerground/tapestryGWT/tapestryGWT.nocache.js"></script>

<p>This is the start page for this application, a good place to
start your modifications. Just to prove this is live:</p>

<p><span jwcid="time@Any"> The current time is: <span
  jwcid="@Insert" value="ognl:currentTime"> 12/22/2002 blah </span> </span></p>
<div id="Derpington">
</div>

</body>
</html>

This should basically work, but this is where it gets tricky. The nocache.js performs a get request on http://localhost:8080/TapestryGISPlayerground/tapestryGWT/107089FA8293C4684B109E80DDA15F8F.cache.html to get its real code ( http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html#DevGuideBootstrap ). But Tapestry sees im trying to get a HTML page and redirects the request to the Home page above. This in turn redownloads the nocache.js and starts a infinite loop.

Instead of executing:

public class TapestryEntry implements EntryPoint {

  public void onModuleLoad() {
    GWT.log("BLABLA");
    Window.alert("Im doing SOMETHING!");
    RootPanel.get("Derpington").add(new InlineLabel("Derp"));
  }

}

It redownloads the page a couple of thousand times without executing my entrypoint.

How can i either:

  • Make tapestry not catch the requests made by GWT or
  • Make GWT not use .html but a diffrent filetype for its downloading

Does anyone know how to do this?

Additional notes:

  • GWT version: 2.6.0
  • Tapestry version: 4.1.6 (Not by my choise, need to build something into a existing tapestry page)

Solution

  • Fixed it by changing:

     <servlet-mapping>
        <servlet-name>app</servlet-name>
        <url-pattern>*.html</url-pattern>
      </servlet-mapping>
    

    To:

     <servlet-mapping>
        <servlet-name>app</servlet-name>
        <url-pattern>/index.html</url-pattern>
      </servlet-mapping>
    

    In the web.xml