You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@click.apache.org by Haim Schindler <ha...@gmail.com> on 2011/06/07 14:48:20 UTC

user defined messages, UTF-8

Hello,
I am trying to change the default messages for form errors.
I created click-control.properties and used UTF-8 for my messages (Hebrew)
however when my form is not valid I get errors like "***--@@@"
what to do?
thankyou

Re: Blocked Thread

Posted by Bob Schellink <sa...@gmail.com>.
Hi Stephan,

Strange that logging to the console can block. Which version of Tomcat
is this? Perhaps the issue is related to a version of TC?

I'd also recommend running Click in "production" mode as logging will
be minimal.

Kind regards

Bob

On Fri, Jun 10, 2011 at 1:09 PM, Kennedy, Stephan
<st...@siemens-enterprise.com> wrote:
> Hi
>
> Our Tomcat Servlet engine locked up running a little click web app of ours
> (which ran w/o problems for about a week).
> The thread dump shows one thread has locked a semaphore for logging to the
> console while all the others are waiting on it.
> Any idea why the initial locking thread is not returning to release the
> semaphore? Click is running in debug mode.
>
> One of the waiting threads:
>
> "http-8443-2" daemon prio=6 tid=0x02f5a400 nid=0x220 waiting for monitor
> entry [0x0396f000]
>
> java.lang.Thread.State: BLOCKED (on object monitor)
>
> at java.io.PrintStream.println(Unknown Source)
>
> - waiting to lock <0x245128a8> (a java.io.PrintStream)
>
> at
> org.apache.tomcat.util.log.SystemLogHandler.println(SystemLogHandler.java:238)
>
> at
> org.apache.click.service.ConsoleLogService.log(ConsoleLogService.java:241)
>
> at
> org.apache.click.service.ConsoleLogService.debug(ConsoleLogService.java:98)
>
> at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:331)
>
> at org.apache.click.ClickServlet.doPost(ClickServlet.java:294)
>
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
>
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
>
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
>
> at java.lang.Thread.run(Unknown Source)
>
> Locked ownable synchronizers:
>
> - None
>
>
>
> The blocking thread:
>
> "http-8443-1" daemon prio=6 tid=0x0319b400 nid=0x1ef0 runnable [0x0382f000]
>
> java.lang.Thread.State: RUNNABLE
>
> at java.io.FileOutputStream.writeBytes(Native Method)
>
> at java.io.FileOutputStream.write(Unknown Source)
>
> at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
>
> at java.io.BufferedOutputStream.flush(Unknown Source)
>
> - locked <0x2451c8d0> (a java.io.BufferedOutputStream)
>
> at java.io.PrintStream.write(Unknown Source)
>
> - locked <0x245128a8> (a java.io.PrintStream)
>
> at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
>
> at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
>
> at sun.nio.cs.StreamEncoder.flushBuffer(Unknown Source)
>
> - locked <0x2451c910> (a java.io.OutputStreamWriter)
>
> at java.io.OutputStreamWriter.flushBuffer(Unknown Source)
>
> at java.io.PrintStream.write(Unknown Source)
>
> - locked <0x245128a8> (a java.io.PrintStream)
>
> at java.io.PrintStream.print(Unknown Source)
>
> at java.io.PrintStream.println(Unknown Source)
>
> - locked <0x245128a8> (a java.io.PrintStream)
>
> at
> org.apache.tomcat.util.log.SystemLogHandler.println(SystemLogHandler.java:238)
>
> at
> org.apache.click.service.ConsoleLogService.log(ConsoleLogService.java:241)
>
> at
> org.apache.click.service.ConsoleLogService.debug(ConsoleLogService.java:98)
>
> at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:331)
>
> at org.apache.click.ClickServlet.doPost(ClickServlet.java:294)
>
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
>
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
>
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
>
> at java.lang.Thread.run(Unknown Source)
>
> Locked ownable synchronizers:
>
> - None
>
>
> Regards
> Stephan
>

Blocked Thread

Posted by "Kennedy, Stephan" <st...@siemens-enterprise.com>.
Hi

Our Tomcat Servlet engine locked up running a little click web app of ours (which ran w/o problems for about a week).
The thread dump shows one thread has locked a semaphore for logging to the console while all the others are waiting on it.
Any idea why the initial locking thread is not returning to release the semaphore? Click is running in debug mode.

One of the waiting threads:

"http-8443-2" daemon prio=6 tid=0x02f5a400 nid=0x220 waiting for monitor entry [0x0396f000]

java.lang.Thread.State: BLOCKED (on object monitor)

at java.io.PrintStream.println(Unknown Source)

- waiting to lock <0x245128a8> (a java.io.PrintStream)

at org.apache.tomcat.util.log.SystemLogHandler.println(SystemLogHandler.java:238)

at org.apache.click.service.ConsoleLogService.log(ConsoleLogService.java:241)

at org.apache.click.service.ConsoleLogService.debug(ConsoleLogService.java:98)

at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:331)

at org.apache.click.ClickServlet.doPost(ClickServlet.java:294)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)

at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:

- None



The blocking thread:

"http-8443-1" daemon prio=6 tid=0x0319b400 nid=0x1ef0 runnable [0x0382f000]

java.lang.Thread.State: RUNNABLE

at java.io.FileOutputStream.writeBytes(Native Method)

at java.io.FileOutputStream.write(Unknown Source)

at java.io.BufferedOutputStream.flushBuffer(Unknown Source)

at java.io.BufferedOutputStream.flush(Unknown Source)

- locked <0x2451c8d0> (a java.io.BufferedOutputStream)

at java.io.PrintStream.write(Unknown Source)

- locked <0x245128a8> (a java.io.PrintStream)

at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)

at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)

at sun.nio.cs.StreamEncoder.flushBuffer(Unknown Source)

- locked <0x2451c910> (a java.io.OutputStreamWriter)

at java.io.OutputStreamWriter.flushBuffer(Unknown Source)

at java.io.PrintStream.write(Unknown Source)

- locked <0x245128a8> (a java.io.PrintStream)

at java.io.PrintStream.print(Unknown Source)

at java.io.PrintStream.println(Unknown Source)

- locked <0x245128a8> (a java.io.PrintStream)

at org.apache.tomcat.util.log.SystemLogHandler.println(SystemLogHandler.java:238)

at org.apache.click.service.ConsoleLogService.log(ConsoleLogService.java:241)

at org.apache.click.service.ConsoleLogService.debug(ConsoleLogService.java:98)

at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:331)

at org.apache.click.ClickServlet.doPost(ClickServlet.java:294)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)

at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:

- None


Regards
Stephan

Re: user defined messages, UTF-8

Posted by Haim Schindler <ha...@gmail.com>.
I dont know native2ascii
I use windows7, notepad++ and saved click-control.properties as UTF-8
document.

I can try to debug it


On Tue, Jun 7, 2011 at 11:24 AM, Bob Schellink <sa...@gmail.com> wrote:

> Did you try and encode your property files with native2ascii? Click ships
> with multiple language packs including Japanese and displays just fine.
>
> regards
>
> Bob
>
>
> On 2011/06/07 18:56 PM, Haim Schindler wrote:
>
>>
>> No, I can see Hebrew (UTF-8) from other part of the my-view.htm
>>
>> the problem is just with the fields validation error messages
>>
>>
>> On Tue, Jun 7, 2011 at 9:38 AM, Bob Schellink <sabob1@gmail.com <mailto:
>> sabob1@gmail.com>> wrote:
>>
>>    Hi,
>>
>>    Isn't this an encoding issue? Is the browser picking up UTF-8? In FF
>> right-click on the page -> View
>>    Page Info and check the encoding.
>>
>>    regards
>>
>>    Bob
>>
>>
>>
>>
>>    On 2011/06/07 17:35 PM, Haim Schindler wrote:
>>
>>
>>        I'll contribute
>>        thanks
>>
>>
>>
>>        On Tue, Jun 7, 2011 at 6:13 AM, Gilberto <gilbertoca@gmail.com<mailto:
>> gilbertoca@gmail.com>
>>         <mailto:gilbertoca@gmail.com <ma...@gmail.com>>>
>> wrote:
>>
>>            Hi, Haim!
>>
>>
>>            On Tue, Jun 7, 2011 at 9:48 AM, Haim Schindler <
>> haim.schindler@gmail.com
>>        <ma...@gmail.com>
>>        <mailto:haim.schindler@gmail.com <ma...@gmail.com>>>
>> wrote:
>>
>>                Hello,
>>                I am trying to change the default messages for form errors.
>>                I created click-control.properties and used UTF-8 for my
>> messages (Hebrew)
>>                however when my form is not valid I get errors like
>> "***--@@@"
>>                what to do?
>>                thankyou
>>
>>
>>            I think you need to contribute[1] translating Apache Click for
>> your language[2]. Or
>>        check out
>>            the click project and making you own changes[3].
>>
>>            Regards,
>>
>>            Gilberto
>>
>>            [1]
>> https://cwiki.apache.org/confluence/display/CLICK/Missing+Translations
>>            [2]
>>
>> https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>>        <
>> https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>> >
>>        <
>> https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>>        <
>> https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>> >>
>>            [3]
>> http://click.apache.org/docs/developer-guide/developer-guide.html
>>
>>
>>
>>
>>
>

Re: user defined messages, UTF-8

Posted by Bob Schellink <sa...@gmail.com>.
Did you try and encode your property files with native2ascii? Click ships with multiple language 
packs including Japanese and displays just fine.

regards

Bob

On 2011/06/07 18:56 PM, Haim Schindler wrote:
>
> No, I can see Hebrew (UTF-8) from other part of the my-view.htm
>
> the problem is just with the fields validation error messages
>
>
> On Tue, Jun 7, 2011 at 9:38 AM, Bob Schellink <sabob1@gmail.com <ma...@gmail.com>> wrote:
>
>     Hi,
>
>     Isn't this an encoding issue? Is the browser picking up UTF-8? In FF right-click on the page -> View
>     Page Info and check the encoding.
>
>     regards
>
>     Bob
>
>
>
>
>     On 2011/06/07 17:35 PM, Haim Schindler wrote:
>
>
>         I'll contribute
>         thanks
>
>
>
>         On Tue, Jun 7, 2011 at 6:13 AM, Gilberto <gilbertoca@gmail.com <ma...@gmail.com>
>         <mailto:gilbertoca@gmail.com <ma...@gmail.com>>> wrote:
>
>             Hi, Haim!
>
>
>             On Tue, Jun 7, 2011 at 9:48 AM, Haim Schindler <haim.schindler@gmail.com
>         <ma...@gmail.com>
>         <mailto:haim.schindler@gmail.com <ma...@gmail.com>>> wrote:
>
>                 Hello,
>                 I am trying to change the default messages for form errors.
>                 I created click-control.properties and used UTF-8 for my messages (Hebrew)
>                 however when my form is not valid I get errors like "***--@@@"
>                 what to do?
>                 thankyou
>
>
>             I think you need to contribute[1] translating Apache Click for your language[2]. Or
>         check out
>             the click project and making you own changes[3].
>
>             Regards,
>
>             Gilberto
>
>             [1] https://cwiki.apache.org/confluence/display/CLICK/Missing+Translations
>             [2]
>         https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>         <https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html>
>         <https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>         <https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html>>
>             [3] http://click.apache.org/docs/developer-guide/developer-guide.html
>
>
>
>


Re: user defined messages, UTF-8

Posted by Haim Schindler <ha...@gmail.com>.
No, I can see Hebrew (UTF-8) from other part of the my-view.htm

the problem is just with the fields validation error messages


On Tue, Jun 7, 2011 at 9:38 AM, Bob Schellink <sa...@gmail.com> wrote:

> Hi,
>
> Isn't this an encoding issue? Is the browser picking up UTF-8? In FF
> right-click on the page -> View
> Page Info and check the encoding.
>
> regards
>
> Bob
>
>
>
>
> On 2011/06/07 17:35 PM, Haim Schindler wrote:
>
>>
>> I'll contribute
>> thanks
>>
>>
>>
>> On Tue, Jun 7, 2011 at 6:13 AM, Gilberto <gilbertoca@gmail.com <mailto:
>> gilbertoca@gmail.com>> wrote:
>>
>>    Hi, Haim!
>>
>>
>>    On Tue, Jun 7, 2011 at 9:48 AM, Haim Schindler <
>> haim.schindler@gmail.com
>>    <ma...@gmail.com>> wrote:
>>
>>        Hello,
>>        I am trying to change the default messages for form errors.
>>        I created click-control.properties and used UTF-8 for my messages
>> (Hebrew)
>>        however when my form is not valid I get errors like "***--@@@"
>>        what to do?
>>        thankyou
>>
>>
>>    I think you need to contribute[1] translating Apache Click for your
>> language[2]. Or check out
>>    the click project and making you own changes[3].
>>
>>    Regards,
>>
>>    Gilberto
>>
>>    [1]
>> https://cwiki.apache.org/confluence/display/CLICK/Missing+Translations
>>    [2]
>>
>> https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>>    <
>> https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>> >
>>    [3] http://click.apache.org/docs/developer-guide/developer-guide.html
>>
>>
>>
>

Re: user defined messages, UTF-8

Posted by Bob Schellink <sa...@gmail.com>.
Hi,

Isn't this an encoding issue? Is the browser picking up UTF-8? In FF right-click on the page -> View
Page Info and check the encoding.

regards

Bob



On 2011/06/07 17:35 PM, Haim Schindler wrote:
>
> I'll contribute
> thanks
>
>
> On Tue, Jun 7, 2011 at 6:13 AM, Gilberto <gilbertoca@gmail.com <ma...@gmail.com>> wrote:
>
>     Hi, Haim!
>
>
>     On Tue, Jun 7, 2011 at 9:48 AM, Haim Schindler <haim.schindler@gmail.com
>     <ma...@gmail.com>> wrote:
>
>         Hello,
>         I am trying to change the default messages for form errors.
>         I created click-control.properties and used UTF-8 for my messages (Hebrew)
>         however when my form is not valid I get errors like "***--@@@"
>         what to do?
>         thankyou
>
>
>     I think you need to contribute[1] translating Apache Click for your language[2]. Or check out
>     the click project and making you own changes[3].
>
>     Regards,
>
>     Gilberto
>
>     [1] https://cwiki.apache.org/confluence/display/CLICK/Missing+Translations
>     [2]
>     https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
>     <https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html>
>     [3] http://click.apache.org/docs/developer-guide/developer-guide.html
>
>


Re: user defined messages, UTF-8

Posted by Haim Schindler <ha...@gmail.com>.
I'll contribute
thanks


On Tue, Jun 7, 2011 at 6:13 AM, Gilberto <gi...@gmail.com> wrote:

> Hi, Haim!
>
>
> On Tue, Jun 7, 2011 at 9:48 AM, Haim Schindler <ha...@gmail.com>wrote:
>
>> Hello,
>> I am trying to change the default messages for form errors.
>> I created click-control.properties and used UTF-8 for my messages (Hebrew)
>> however when my form is not valid I get errors like "***--@@@"
>> what to do?
>> thankyou
>>
>
> I think you need to contribute[1] translating Apache Click for your
> language[2]. Or check out the click project and making you own changes[3].
>
> Regards,
>
> Gilberto
>
> [1] https://cwiki.apache.org/confluence/display/CLICK/Missing+Translations
> [2]
> https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
> [3] http://click.apache.org/docs/developer-guide/developer-guide.html
>

Re: user defined messages, UTF-8

Posted by Gilberto <gi...@gmail.com>.
Hi, Haim!

On Tue, Jun 7, 2011 at 9:48 AM, Haim Schindler <ha...@gmail.com>wrote:

> Hello,
> I am trying to change the default messages for form errors.
> I created click-control.properties and used UTF-8 for my messages (Hebrew)
> however when my form is not valid I get errors like "***--@@@"
> what to do?
> thankyou
>

I think you need to contribute[1] translating Apache Click for your
language[2]. Or check out the click project and making you own changes[3].

Regards,

Gilberto

[1] https://cwiki.apache.org/confluence/display/CLICK/Missing+Translations
[2]
https://spreadsheets.google.com/pub?key=0AiO7whVQ-JXfdFJqSzZTNWJBVVMwUDBNQkZseFRxR2c&hl=en&single=true&gid=0&output=html
[3] http://click.apache.org/docs/developer-guide/developer-guide.html