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
>