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 19:38:46 -0400

thanks for the issue+patch+test :)

it's fixed


Commit
C:\Source\grizzly\modules\bundles\http-servlet-deployer\src\main\java\com\sun\grizzly\http\servlet\deployer\GrizzlyWebServerDeployer.java
C:\Source\grizzly\modules\bundles\http-servlet-deployer\src\main\java\com\sun\grizzly\http\servlet\deployer\GrizzlyWebServerDeployer.java
At revision: 3570

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

> Thank you, Sebastien!
>
> --
> Bongjae Chang
>
>
>
> ----- Original Message -----
> *From:* Survivant 00 <survivant00_at_gmail.com>
> *To:* dev_at_grizzly.dev.java.net
> *Sent:* Monday, August 31, 2009 11:24 PM
> *Subject:* Re: servlet-mapping didn't work well in
> GrizzlyWebServerDeployer
>
> ah ah ah..  no idea how this one pass all our tests :(
>
>
> in the log :
>
> [main] Mon Aug 31 10:22:17 EDT 2009 [LE PLUS FIN]
> com.sun.grizzly.http.servlet.d
> eployer.GrizzlyWebServerDeployer deploy:sa
> alias=[/simple_war/simple_servlet/simple_servlet/*]
>
> java -Djava.util.logging.config.file=C:/source/logging.properties -jar
> grizzly-http-servlet-deployer-1.9.18-SNAPSHOT.jar
> --application=c:\temp\simple_war.war
>
>
> the sevlet respond but with this URL :
> http://localhost:8080/simple_war/simple_servlet/simple_servlet
>
> I'll fill a bug and fix this.
>
>
> 2009/8/31 Bongjae Chang <carryel_at_korea.com>
>
>> I attached the test web app(simple_war.war).
>> Â
>> The simple_war.war includes web.xml, SimpleServlet.java and
>> SimpleServlet.class.
>> Â
>> web.xml is here.
>> ---
>> <web-app>
>> Â Â <servlet>
>> Â Â Â Â Â <servlet-name>SimpleServlet</servlet-name>
>> Â Â Â Â Â <servlet-class>SimpleServlet</servlet-class>
>> Â Â Â Â Â ...
>> Â Â </servlet>
>> Â Â <servlet-mapping>
>> Â Â Â Â Â <servlet-name>SimpleServlet</servlet-name>
>> Â Â Â Â Â <url-pattern>/simple_servlet/*</url-pattern>
>> Â Â </servlet-mapping>
>> </web-app>
>> ---
>> Â
>> I ran the application with JDK6 on Windows like this:
>> Â
>> ---
>> java -jar grizzly-http-servlet-deployer.jar
>> --application=c:\simple_war.war --port=8080
>> Â
>> or
>> Â
>> java -cp grizzly-http-servlet-deployer.jar
>> com.sun.grizzly.http.servlet.deployer.GrizzlyWebServerDeployer
>> --application=c:\simple_war.war --port=8080
>> ---
>> Â
>> And I requested "http://localhost:8080/simple_war/simple_servlet" or "
>> http://localhost:8080/simple_war/simple_servlet/abc" with IE6.
>> Â
>> I think that the browser should print "Hello, SimpleServlet!".
>> Â
>> And I think that you can reproduce it easily with the attached .war.
>> Â
>> Thanks!
>> Â
>> --
>> Bongjae Chang
>> Â
>> Â
>>
>> ----- Original Message -----
>> *From:* Survivant 00 <survivant00_at_gmail.com>
>> *To:* dev_at_grizzly.dev.java.net
>> *Sent:* Monday, August 31, 2009 10:27 PM
>> *Subject:* Re: servlet-mapping didn't work well in
>> GrizzlyWebServerDeployer
>>
>> 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
>>>>>
>>>>
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_grizzly.dev.java.net
>> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net
>>
>
>