Thanks again, see below... On Tue, Mar 8, 2016 at 10:20 PM, Christopher Schultz < ch...@christopherschultz.net> wrote:
> -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > 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? 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. 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? 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). > > >> Therefore, the xml loading process/compiler/tomcat/netbeans > >> shouldn't do anything to change it (in the case where I encode > >> the pattern), but the servlet still isn't found. > > Well, if you use annotations, the XML shouldn't be a problem at all, > of course. But you said you were having problems using the > web.xml-based configuration, too, right? > > When you type the URL into your browser, are you just typing the > Hebrew right into the browser, or have you UTF/URL-escaped it first > and then copy/pasted it into the browser (or, better yet, provide a > link from another page that isn't giving you any problems). > I load the url into the href attribute of an "a" tag. I have tried placing the regular hebrew into the attribute as well as placing the encoded form of the hebrew (ie: /package/[some hebrew] & /package/%D7%99%D7... respectively). The latter is how wikipedia does it, inspect the elements to see for yourself ( https://he.wikipedia.org/wiki/%D7%9E%D7%9C%D7%97%D7%9E%D7%AA_%D7%94%D7%A2%D7%A6%D7%9E%D7%90%D7%95%D7%AA) (...the browser automatically encodes the link when I copy it :) > > You might want to make sure that Tomcat is delivering all responses in > UTF-8, so that the browser (hopefully) decides to send the URL for the > *next* page in UTF-8 instead of some weird ISO-8859-1 mess. > > I place a filter that sets the response encoding to UTF-8, doesn't help. Thanks a lot for your help and time. > - -chris > -----BEGIN PGP SIGNATURE----- > Comment: GPGTools - http://gpgtools.org > Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ > > iEYEARECAAYFAlbfNBIACgkQ9CaO5/Lv0PAEswCcD9K3iwDplOASR81WtIMQZVFb > 77YAnisxPAcn8/vuAU1PNDQgnvGuLVlo > =LmWf > -----END PGP SIGNATURE----- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > On Tue, Mar 8, 2016 at 10:20 PM, Christopher Schultz < ch...@christopherschultz.net> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > 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? > > >> Therefore, the xml loading process/compiler/tomcat/netbeans > >> shouldn't do anything to change it (in the case where I encode > >> the pattern), but the servlet still isn't found. > > Well, if you use annotations, the XML shouldn't be a problem at all, > of course. But you said you were having problems using the > web.xml-based configuration, too, right? > > When you type the URL into your browser, are you just typing the > Hebrew right into the browser, or have you UTF/URL-escaped it first > and then copy/pasted it into the browser (or, better yet, provide a > link from another page that isn't giving you any problems). > > You might want to make sure that Tomcat is delivering all responses in > UTF-8, so that the browser (hopefully) decides to send the URL for the > *next* page in UTF-8 instead of some weird ISO-8859-1 mess. > > - -chris > -----BEGIN PGP SIGNATURE----- > Comment: GPGTools - http://gpgtools.org > Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ > > iEYEARECAAYFAlbfNBIACgkQ9CaO5/Lv0PAEswCcD9K3iwDplOASR81WtIMQZVFb > 77YAnisxPAcn8/vuAU1PNDQgnvGuLVlo > =LmWf > -----END PGP SIGNATURE----- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >