Paul,
 
The problem is that the URI without the trailing slash isn't equivalent to
the one with it. It's true that in many cases, people assume it is
equivalent but it doesn't have to.
 
Also, relative URIs can be expressed in the same way if the ends with a
slash or not, leading to further routing issues. The only way we found to
clean that is to force the client to redirect itself to the URI with a
slash. However, it isn't something we should do automatically.
 
BTW, there is a related RFE:
 
"Improve matching of directory URIs"
http://restlet.tigris.org/issues/show_bug.cgi?id=532
 
Best regards,
Jerome Louvel
--
Restlet ~ Founder and Lead developer ~  <http://www.restlet.org/>
http://www.restlet.org
Noelios Technologies ~ Co-founder ~  <http://www.noelios.com>
http://www.noelios.com
 

 
  _____  

De : Paul Austin [mailto:mail-li...@revolsys.com] 
Envoyé : mardi 7 avril 2009 21:58
À : discuss@restlet.tigris.org
Objet : Re: [1.1.3] Tomcat + RestletFrameworkServlet mapping
SpringBeanRouter to /


Here is a class which fixes the issue. Probably a better solution would be
to change the Route class so that if the remainingPart is "" it sets it to
"/" before doing the regex matching. On a related note is it possible to
force exact matching so that say /apps would be mapped but not /apps/xyz?

public class RootSpringBeanRouter extends SpringBeanRouter {
@Override
public void handle(Request request, Response response) {
Reference resourceRef = request.getResourceRef();
if (resourceRef.getRemainingPart().equals("")) {
resourceRef.addSegment("");
}
super.handle(request, response);
}
}



On Tue, Apr 7, 2009 at 12:27 PM, Paul Austin <mail-li...@revolsys.com>
wrote:


In my project I am deploying an application as a war file. The root of the
web application /* is mapped to the RestletFrameworkServlet so that all
handling is performed by Restlet.

<servlet>
<servlet-name>bpf</servlet-name>
<servlet-class>com.noelios.restlet.ext.spring.RestletFrameworkServlet</servl
et-class>
</servlet>

<servlet-mapping>
<servlet-name>bpf</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

The root restlet is a SpringBeanRouter and I have a mapping for / to a
resource as shown below.

<bean id="root" class="org.restlet.ext.spring.SpringBeanRouter" />

<bean
name="/"
id="rootResource"
scope="prototype"
class="myResourceClass"
/>

The war is deployed to /ws on my server.

If I access /ws I get an Restlet status page error saying "The server has
not found anything matching the request URI" but if I use /ws/ it works
correctly.

I tried mapping to "" to see if that would work and it gives the same
behaviour.

Is it possible to modify the router so that the root resource does not need
the trailing slash?

Cheers,
Paul

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1594914

Reply via email to