On Tue, Mar 8, 2016 at 10:55 PM, Christopher Schultz <
ch...@christopherschultz.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Yuval,
>
> On 3/8/16 3:47 PM, Yuval Schwartz wrote:
> > On Tue, Mar 8, 2016 at 10:20 PM, Christopher Schultz <
> > ch...@christopherschultz.net> wrote:
> >
> > Yuval,
> >
> > On 3/8/16 12:38 PM, Yuval Schwartz wrote:
> >>>> Hello Christopher, thanks, responses below.
> >>>>
> >>>> On Tue, Mar 8, 2016 at 6:23 PM, Christopher Schultz <
> >>>> ch...@christopherschultz.net> wrote:
> >>>>
> >>>> Yuval,
> >>>>
> >>>> On 3/8/16 3:14 AM, Yuval Schwartz wrote:
> >>>>>>> Tomcat version: 8.0.22 Jdk: 1.8.0_05 Server: Amazon
> >>>>>>> Linux
> >>>>>>>
> >>>>>>> Hello,
> >>>>>>>
> >>>>>>> I want to map my servlet to a Hebrew url pattern.
> >>>>
> >>>> Hmm.
> >>>>
> >>>>>>> I tried placing the hebrew url pattern both in the
> >>>>>>> "@webservlet" annotation (urlpatterns attribute) and in
> >>>>>>> the the web.xml file. In both cases it doesn't work,
> >>>>>>> it's as if there's nothing mapped to the url
> >>>>>>> specified.
> >>>>>>>
> >>>>>>> I though to specify the URIEncoding parameter of the
> >>>>>>> connector but saw that this defaults to "utf-8" in
> >>>>>>> tomcat 8.
> >>>>
> >>>> Yes, it does.
> >>>>
> >>>> So you are trying to set the url-pattern for a servlet
> >>>> mapping?
> >>>>
> >>>> When you do it -- either using @WebServlet or
> >>>> <servlet-mapping> -- can you connect via JMX to observe the
> >>>> pattern that's been read into the configuration? First, I'd
> >>>> want to make sure that the Hebrew characters haven't been
> >>>> destroyed by the loading process of the XML file or by the
> >>>> compiler, or even by Tomcat.
> >>>>
> >>>>
> >>>>> Can you give me some direction on how I would do this?
> >>>>> Maybe a little more detail on jmx? There could be
> >>>>> encoding/decoding going on in the browser (firefox) and in
> >>>>> all the elements you mentioned on the server side. Any way
> >>>>> to see the final String that the server is using to match
> >>>>> the Url pattern?
> >
> > Yeah, that's why I was suggesting using JMX, since Tomcat exposes
> > all the configuration through it.
> >
> > Launch Tomcat, then fire-up jconsole (or VisualVM, or any other
> > tool that contains a JMX client... both jconsole and VisualVM
> > require that you go to the "plug-ins" configuration and install an
> > easy-to-find-and-install plug-in for JMX) on the same machine
> > (it's easiest this way).
> >
> > (I just checked, and VisualVM calls the plug-in
> > "VisualVM-MBeans".)visualvisual
> >
> > Then, connect to the Tomcat instance and go to the BMeans tab.
> >
> > You'll find your servlet under
> > /Catalina/Servlet/host/context/[servlet]. ..
> >
> >
> > Aw, crap. The mappings themselves aren't actually published via
> > JMX. Hmm .
> >
> >>>>> I've done a lot of guessing and checking. For example, I
> >>>>> used the URLEncoder to get the encoded form of my urls and
> >>>>> put that in the url pattern.
> >
> > Good. So you have some set of Unicode escapes like \u0fe64 or
> > whatever in the url-pattern string in your annotation?
> >
> >
> >> No, I don't have any unicode escapes. I have (for the purpose of
> >> testing) two strings, one is the string with the utf-8
> >> characters, the other is an encoded form of the url (which is
> >> encoded into a series of "%" followed by two English letters). Do
> >> you recommend having something else here?
>
> Can you copy/paste your @WebServlet annotation into your next post? I
> think that will clear things up.
>

@WebServlet(name="SomeServlet", urlPatterns={"/help/why-no-work",
"/iw/help/למה-לא-עובד",
"/iw/help/%D7%9C%D7%9E%D7%94-%D7%9C%D7%90-%D7%A2%D7%95%D7%91%D7%93"}
(the last pattern is the same as the second to last, just encoded)

I will try the other stuff suggested and get back to you.


>
> >> Some more info: I placed a filter on pattern "/*". When my
> >> request with the UTF-8 url comes in, I call
> >> httpRequest.getServletPath() and httpRequest.getRequestURI(). As
> >> expected, I get the UTF-8 version of the servlet path (ie:
> >> decoded) and the ASCII request URI (ie: encoded) respectively.
>
> Good idea. So, does your application get what you expected in the
> String servlet path?
>
> >> This means that the request is reaching my server. It's the next
> >> step, the step where the servlet path is mapped to my specified
> >> url pattern, that I want to explore. But I don't know how to
> >> explore this. Where can I control how the url pattern is matched
> >> with the incoming url?
>
> You can't, other than following the rules of the servlet spec. Since
> you can get a Filter in the mix, try mapping the filter to "/smaller"
> where "smaller" is something narrower than "*" that gets you closer to
> what you were trying to accomplish. For instance, if you are trying to
> map to /עברית, then try mapping your filter to /ת* or something like
> that. (I have no idea what the left-to-right rules are for
> string-matching, etc. since Hebrew should be right-to-left, but
> prefix-matching is usually written in a left-to-right fashion).
>
> >> Although I can only conceive two options for how the incoming url
> >> is matched with the url pattern and I've tried both (either the
> >> UTF-8 version of the request url is matched against the pattern
> >> or the encoded version is matched against the pattern).
>
> Tomcat is doing a left-to-right pattern-match, character-by-character,
> as long as there wasn't an exact-match that was found (which would
> have been done roughly using String.equals, though in Tomcat it's
> working with character buffers and not String values).
>
> - -chris
> -----BEGIN PGP SIGNATURE-----
> Comment: GPGTools - http://gpgtools.org
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iEYEARECAAYFAlbfPD0ACgkQ9CaO5/Lv0PCD7QCdE4wcSoUzCI3nUcemqUh7cNbb
> hMYAn3X9P5eHIiNbDxunlRwLfgLViD0t
> =8itk
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to