是否有一个jruby-on-rails习惯用于检测你是否在Tomcat中运行?

时间:2011-12-09 21:14:59

标签: tomcat jruby idioms jrubyonrails

检查defined?(JRUBY_VERSION)似乎是判断你是否在jruby(c.f。How can I tell if I'm running from JRuby vs. Ruby?,各种FOSS jruby项目中运行的最惯用的方式)。是否有类似的习惯用于确定您是否在Tomcat中运行?

3 个答案:

答案 0 :(得分:2)

如果没有现成的明确成语,我将提议defined?($servlet_context)。这将在任何 servlet容器中定义,而不仅仅是Tomcat,但无论如何这可能更合适。

答案 1 :(得分:0)

可能是这样的:

public boolean isTomcat() {
    try {
      Class.forName("org.apache.tomcat.InstanceManager");
      return true;
    } catch (ClassNotFoundException ex) {
    return false;
  }
}

答案 2 :(得分:0)

适用于mri和jruby

IN_TOMCAT = begin
   require 'org/apache/tomcat/InstanceManager'
   defined?(Java::org::apache::tomcat::InstanceManager)
rescue LoadError;end