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 09:27:39 -0400

thanks.

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

> Hi Sebastien,
>
> Okay! I will try to make a simple .war for reproducing this issue in a few
> hours and will attach it.
>
> Thanks!
> --
> Bongjae Chang
>
>
>
> ----- Original Message -----
> *From:* Survivant 00 <survivant00_at_gmail.com>
> *To:* dev_at_grizzly.dev.java.net
> *Sent:* Monday, August 31, 2009 9:41 PM
> *Subject:* Re: servlet-mapping didn't work well in
> GrizzlyWebServerDeployer
>
> 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
>>>
>>
>>
>