dev@grizzly.java.net

Re: servlet-mapping didn't work well in GrizzlyWebServerDeployer

From: Survivant 00 <survivant00_at_gmail.com>
Date: Mon, 31 Aug 2009 08:41:15 -0400

will try that on debug tonight.

the mapping doesn't look special. I think grizzly-twitter have the same
things.. /words/ something like that.

I'll check.

can you package a .war that I can test. Will be easier to test.. with the
command line you use please.



2009/8/31 Bongjae Chang <carryel_at_korea.com>

> Hi Sebastien,
>
> Thank you for your reply.
>
> I think that maybe your last reply is concerned about the following.
>
> ---
> * if (appliPath != null && appliPath.endsWith(File.pathSeparator)) {*
> * appliPath = appliPath + File.pathSeparator;*
> * }*
> ---
> I see...
>
> But, I think that definately, the following code is not correct.
>
> ---
> *mapping = urlPattern.substring(urlPattern.indexOf(sa.getServletPath()));*
> ---
>
> After you will review it, please let me know. :)
>
> Thanks!
>
> --
> Bongjae Chang
>
>
>
> ----- Original Message -----
> *From:* Survivant 00 <survivant00_at_gmail.com>
> *To:* dev_at_grizzly.dev.java.net
> *Sent:* Thursday, August 27, 2009 6:59 PM
> *Subject:* Re: servlet-mapping didn't work well in
> GrizzlyWebServerDeployer
>
> it's to early in the morning to think about it.. will come back to you
> later.
>
> but here what's in the help
>
> -a, --application=[path]* Application(s) path(s).
>
> Application(s) deployed can be :
>
> Servlet(s), war(s) and expanded war folder(s).
> To deploy multiple applications
> use File.pathSeparator
>
> Example : -a /app.war:/servlet/web.xml:/warfolder/
>
>
>
>
> 2009/8/27 Bongjae Chang <carryel_at_korea.com>
>
>> Hi,
>>
>> I deployed an web application with using GrizzlyWebServerDeploy, I found
>> that the Servlet is not served because of wrong path mapping.
>>
>> Here is the example of web.xml
>> ---
>> <web-app>
>> <servlet>
>> <servlet-name>TestServlet</servlet-name>
>> <servlet-class>my.test.TestServlet</servlet-class>
>> </servlet>
>> <servlet-mapping>
>> <servlet-name>TestServlet</servlet-name>
>> <url-pattern>/test/*</url-pattern>
>> </servlet-mapping>
>> ...
>> </web-app>
>> ---
>>
>> Assuming that context path is "/example",
>>
>> When I requested http://localhost:port/examples/test/abc, I expected that
>> the TestServlet was serviced.
>>
>> When I debugged, I found some strange codes.
>>
>> In GrizzlyWebServerDeploy.java
>> ---
>> public String[] getAlias(ServletAdapter sa, Collection<String> aliases) {
>> ...
>> for( String urlPattern : aliases) {
>> String mapping = "";
>> if (!sa.getServletPath().equals(urlPattern) &&
>> urlPattern.indexOf(sa.getServletPath()) > -1) {
>> *mapping =
>> urlPattern.substring(urlPattern.indexOf(sa.getServletPath()));*
>> }
>> String aliasTmp = sa.getContextPath() + sa.getServletPath() +
>> mapping;
>> }
>> ...
>> }
>>
>> When I deployed the web app, sa.getServletPath() is equal to "/test" and
>> urlPattern is equal to "/test/*".
>>
>> Then mapping result is equal to "/test/*" , so aliasTmp result is equal to
>> "/example/test/test/*".
>>
>> But I think that aliasTmp should become to be "/examples/test/*".
>>
>> When I edited the mapping code like this experimentally,
>>
>> ---
>> *mapping = urlPattern.subString(urlPattern.indexOf(sa.getServletPath()) +
>> sa.getServletPath().length());*
>> ---
>>
>> I could know that my test servlet is served well.
>>
>> Could you please review this?
>>
>>
>> And I saw another strange code. This is trivial.
>>
>> In GrizzlyWebServerDeployer.java
>> ---
>> public String appendWarContentToClassPath(String appliPath) throw ... {
>> ...
>> * if (appliPath != null && appliPath.endsWith(File.pathSeparator)) {*
>> * appliPath = appliPath + File.pathSeparator;*
>> * }*
>> }
>> ---
>> File.pathSeparator is equal to ";" in Windows.
>>
>> Perhaps you mean File.separator "/" or "\". Is it right?
>>
>> Then, the proposed patch is here.
>> ---
>> public String appendWarContentToClassPath(String appliPath) throw ... {
>> ...
>> if (appliPath != null && *!*appliPath.endsWith(File.*separator*)) {
>> appliPath = appliPath + File.*separator*;
>> }
>> }
>> ---
>>
>> Is also Right? But, I am not sure. :)
>>
>> Thanks!
>>
>> --
>> Bongjae Chang
>>
>
>