Tomcat version 6.0.x on Linux OS Hi all,
I have an application deployed on several customers Tomcat servers. The Tomcat versions are different (6.0.16, 6.0.37, etc.) and asking all customers to upgrade to the latest Tomcat version would be too tricky. I would like to programmatically get the disableURLRewriting context attribute value, when it exists (i.e Tomcat 6.0.30 onwards). My purpose is to add a tuckey.org/urlrewrite filter rule that redirects the user to an error page when the 'jsessionid=' string is detected in the URL. if (disableURLRewriting exists and its value is true) -> the filter rule should be applied if (disableURLRewriting doesn't exist or its value is false) -> the filter rule should not be applied because Tomcat 6 adds ';jsessionid=xxx' when there is no cookie in the client browser The only way that I have found to achieve this on different Tomcat versions is to use Tomcat classes: public boolean isDisableURLRewriting(StandardContext standardContext) { Method isDisableURLRewritingMethod = null; try { isDisableURLRewritingMethod = StandardContext.class.getMethod("isDisableURLRewriting"); } catch (Exception e) { // the method does not exist or is not accesible } if (isDisableURLRewritingMethod != null) { try { return ((Boolean) isDisableURLRewritingMethod.invoke(standardContext)).booleanValue(); } catch (Exception e) { throw new RuntimeException("Unable to invoke the isDisableURLRewriting method on the standard context"); } } // the method does not exist, we return false return false; } StandardEngine engine = (StandardEngine) ServerFactory.getServer().findService("Catalina").getContainer(); Container container = engine.findChild(engine.getDefaultHost()); StandardContext standardContext = (StandardContext) container.findChild(context.getContextPath()); if (isDisableURLRewriting(standardContext)) { // apply the rule } else { // don't apply the rule } 1. Will this code work for every Tomcat configuration? (I know that this code works when the context file is in the conf/Catalina/localhost directory with the default server.xml file, but I don't know if it will work when several hosts are defined in the server.xml file, because I'm using engine.getDefaultHost()) 2. Is there a better way to achieve this? (maybe without using Tomcat classes?) Thanks in advance, Regards, Lo