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 10:24:46 -0400

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
>