Hi Matt.  You really don't need to do any URLRewriting.  The key here
is that the artifacts produced by GWT are relative.  This means that
you shouldn't care if you have the package name while running in
hosted mode, but your war can have it all w/o the package name.  If
you really do want to run in hosted mode w/o the package name, then I
would recommend using the jetty maven plugin and use Hosted mode in
the noserver configuration.  Here is a quick walk through...

The secret in the sauce is using the jetty maven plugin's semi-new
overlay feature.  This allows you to merge your webapp directory with
the GWT output.  Here I am using jetty with HSQL and my module name is
com.example.MyApp:

                    <plugin>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>maven-jetty-plugin</artifactId>
                        <version>6.1.14</version>
                        <dependencies>
                            <dependency>
                                <groupId>commons-dbcp</groupId>
                                <artifactId>commons-dbcp</artifactId>
                                <version>${commonsDbcpVersion}</
version>
                            </dependency>
                            <dependency>
                                <groupId>commons-pool</groupId>
                                <artifactId>commons-pool</artifactId>
                                <version>${commonsPoolVersion}</
version>
                            </dependency>
                            <dependency>
                                <groupId>hsqldb</groupId>
                                <artifactId>hsqldb</artifactId>
                                <version>${hsqldbVersion}</version>
                            </dependency>
                        </dependencies>
                        <configuration>
                                <webAppConfig>
                                <contextPath>/</contextPath>
                               <!--- LOOKY HERE ... THIS IS THE KEY -
USING OVERLAYS -->
                                <baseResource
implementation="org.mortbay.resource.ResourceCollection">
                                        <resourcesAsCSV>${basedir}/src/main/
webapp,${basedir}/target/myapp/com.example.MyApp</resourcesAsCSV>
                                </baseResource>
                            </webAppConfig>
                            <!-- My jetty config - I think you can
figure this part out yourself -->
                            <jettyConfig>${basedir}/src/test/jetty/
hsql/jetty.xml</jettyConfig>
                            <scanIntervalSeconds>5</
scanIntervalSeconds>
                            <scanTargets>
                                <scanTarget>${basedir}/src/main/
resources</scanTarget>
                                <scanTarget>${basedir}/src/main/
webapp</scanTarget>
                                <scanTarget>${basedir}/target/myapp/
com.example.MyApp</scanTarget>
                            </scanTargets>
                            <systemProperties>
                               <!-- Just some HSQL config stuff - just
ignore for now -->
                                <systemProperty>
                                    <name>dbtest</name>
                                    <value>${basedir}/src/test/db/
testdb</value>
                                </systemProperty>
                                <systemProperty>
                                    <name>hibernate_driver</name>
                                    <value>org.hsqldb.jdbcDriver</
value>
                                </systemProperty>
                                <systemProperty>
                                    <name>hibernate_dialect</name>
 
<value>com.example.myapp.util.CustomHSQLDialect</value>
                                </systemProperty>
                            </systemProperties>
                        </configuration>
                    </plugin>

The next part is telling the war packager to get rid of the package
name, so when you deploy, you don't have that nasty module name:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webappDirectory>${project.build.directory}/$
{project.build.finalName}/com.example.MyApp</webappDirectory>
                </configuration>
            </plugin>

Now you can run mvn jetty:run  and then run GWT in --noserver mode.
You will notice that you can startup GWT with http://localhost:8080/index.html.
You can put your index.html as your launch pad for your application.

Now, if you want to run it all in hosted mode, including Spring,
Hibernate, etc under Tomcat... I can post that configuration as its
much more involved.  However, you will have to live with the module
name when running it in full hosted mode, but your deployment/war will
not have the module name (due to the maven war config posted above).
Just be sure you are not hard-coding URLs in your code and that
everything is relative.

I hope this helps.  If you have issues...post the results and I will
see if I can fill in the blanks.

On Feb 23, 3:23 pm, Matt Raible <[email protected]> wrote:
> I was able to solve this by adding the UrlRewriteFilter to my project
> with the following configuration in WEB-INF/urlrewrite.xml:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
>         "http://tuckey.org/res/dtds/urlrewrite3.0.dtd";>
>
> <urlrewrite>
>     <rule>
>         <from>/$</from>
>         <to type="forward" last="true">/com.mycompany.app.Application/
> Application.html</to>
>     </rule>
>     <rule>
>         <from>/index.html</from>
>         <to type="forward" last="true">/com.mycompany.app.Application/
> Application.html</to>
>     </rule>
>     <rule>
>         <from>^/(.*)\.(.*)$</from>
>         <to type="forward">/com.mycompany.app.Application/$1.$2</to>
>     </rule>
> </urlrewrite>
>
> Hope this helps someone else.
>
> Matt
>
> On Feb 18, 2:23 pm, Matt Raible <[email protected]> wrote:
>
> > Is there a way to use the gwt-maven plugin to allow running in hosted
> > mode, as well as deploying the app at root?
>
> > Thanks,
>
> > Matt
>
> > On Wed, Feb 18, 2009 at 1:34 PM, Robert kebernet Cooper
>
> > <[email protected]> wrote:
>
> > > Rather "do that with the hosted mode tomcat"..
>
> > > 2009/2/18 Robert "kebernet" Cooper <[email protected]>:
> > >> Aah, yeah. You can't actually do that with the hosted mode browser. You 
> > >> would need to deploy the war (or start it in-place) and run the shell in 
> > >> noserver mode.
>
> > >> 2009/2/18 Matt Raible <[email protected]>:
>
> > >>> What do I change my pom.xml's runTarget to? It's current set at:
>
> > >>> <runTarget>com.mycompany.Application/Application.html</runTarget>
>
> > >>> If I make your suggested change and change my runLevel to:
>
> > >>> <runTarget>index.html</runTarget>
>
> > >>> I get the following error in hosted mode:
>
> > >>> Unable to find/load module 'index.html' (see server log for details)
>
> > >>> Thanks,
>
> > >>> Matt
>
> > >>> On Wed, Feb 18, 2009 at 12:02 PM, Robert kebernet Cooper
> > >>> <[email protected]> wrote:
>
> > >>>> Actually, I don't think you even need to do that anymore. With the
> > >>>> 1.4+ bootstrap, just include
> > >>>> <script src="my.Module/my.Module.nocache.js" >
>
> > >>>> in your webapp/index.html file.
>
> > >>>> On Wed, Feb 18, 2009 at 1:51 PM, Matt Raible <[email protected]> wrote:
>
> > >>>>> Rather than having my application's HTML file in
> > >>>>> src/main/java/com/mycompany/Application.html, I'd like to move it to
> > >>>>> src/main/webapp/index.html. I tried copying the HTML and adding the
> > >>>>> following to my index.html, but no dice:
>
> > >>>>> <meta name="gwt:module" content="com.mycompany.Application"/>
>
> > >>>>> Is this possible with the gwt-maven-plugin? I'd like to have my main
> > >>>>> HTML and CSS at the root of my application.
>
> > >>>>> Thanks,
>
> > >>>>> Matt
>
> > >>>> --
> > >>>> :Robert "kebernet" Cooper
> > >>>> ::[email protected]
> > >>>> Alice's cleartext
> > >>>> Charlie is the attacker
> > >>>> Bob signs and encrypts
> > >>>>http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x9E8759F8
>
> > >> --
> > >> :Robert "kebernet" Cooper
> > >> ::[email protected]
> > >> Alice's cleartext
> > >> Charlie is the attacker
> > >> Bob signs and encrypts
> > >>http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x9E8759F8
>
> > > --
> > > :Robert "kebernet" Cooper
> > > ::[email protected]
> > > Alice's cleartext
> > > Charlie is the attacker
> > > Bob signs and encrypts
> > >http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x9E8759F8

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"gwt-maven" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/gwt-maven?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to