Multi-Module Project and Servlet Mappings

66 visningar
Hoppa till det första olästa meddelandet

rsimon

oläst,
13 jan. 2011 07:28:182011-01-13
till Google Web Toolkit
Dear all,

I have a project which consists of multiple modules. Basically, it's
four separate GWT applications which share some common code. There's a
separate module for each of the four applications, plus a 'core'
module for the common functionality.

Now my problem: The common functionality includes server-side RPC
endpoints. I have defined the servlet paths for those endpoints in
the .gwt.xml file of my core module as

<servlet path='/endpointA' class="..."/>
<servlet path='/endpointB' class="..."/>

and so on. Now - when I inherit the core module in my app modules, GWT
insists that the endpoints are mapped to

"/<AppName>/endpointA" rather than just "/endpointA"

So far so good. But as a result, I need to provide 4 servlet mappings
in my web.xml, each pointing to the same service impl class. E.g.
something like this:

<servlet>
<servlet-name>endpointA<servlet-name>
<servlet-class>my.gwtapp.server.EndpointAServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>endpointA</servlet-name>
<url-pattern>/AppOne/endpointA</url-pattern>
<url-pattern>/AppTwo/endpointA</url-pattern>
<url-pattern>/AppThree/endpointA</url-pattern>
<url-pattern>/AppFour/endpointA</url-pattern>
</servlet-mapping>

Ok, it's not a showstopper. But I can't believe there's no better way
to share servlets across modules than by repeating the mappings for
each module?

Any advice appreciated!

Y2i

oläst,
13 jan. 2011 19:42:142011-01-13
till google-we...@googlegroups.com
What if you remove <servlet/> from *.gwt.xml and configure servlets only from web.xml?

The xml reference says that 
The <servlet> element applies only to GWT's embedded server server-side debugging feature.
NOTE: as of GWT 1.6, this tag does no longer loads servlets in development mode, instead you must configure a WEB-INF/web.xml in your war directory to load any servlets needed.


Meddelandet har raderats

rsimon

oläst,
14 jan. 2011 03:37:372011-01-14
till Google Web Toolkit
Ouch. Looks like I should have RTFM ;-) Thanks for the hint!

This solved most of my problem. I was able to map the servlets to /
<endpointName>, rather than being forced to create multiple /
<moduleName>/<endpointName> mappings. The applications still made
their RPC requests to <moduleName>/<endpointName>, though.

However I could fix that by changing the RemoteServiceRelativePath
configuration in my client side service interface, like so:

RemoteServiceRelativePath("../<endpointName>") instead of
("<endpointName")

Not sure if this is 100% clean. But it did the trick.

newnoise

oläst,
2 feb. 2011 16:26:322011-02-02
till Google Web Toolkit
Hi,

I'm having kind of the same problem, but dont understand what you
actually did. Could you maybe post a sample web.xml?

Thanks in advance!
Tom

newnoise

oläst,
3 feb. 2011 05:34:322011-02-03
till Google Web Toolkit
Got it. Reading your post several times got me to it. Thanks.
Svara alla
Svara författaren
Vidarebefordra
0 nya meddelanden