Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-1193

MemoryUtil's static constructor call to ManagementFactory.getMemoryPoolMXBeans() fails on Google App Engine

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • None
    • 6.4.0.Final
    • core engine
    • None
    • NEW
    • NEW

    Description

          [INFO] java.lang.NoClassDefFoundError: java.lang.management.ManagementFactory is a restricted class. Please see the Google  App Engine developer's guide for more details.
      
          [INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:52)
      
          [INFO]  at org.drools.core.util.MemoryUtil.<clinit>(MemoryUtil.java:33)
      
          [INFO]  at java.lang.Class.forName0(Native Method)
      
          [INFO]  at java.lang.Class.forName(Class.java:195)
      
          [INFO]  at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
      
          [INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
      
          [INFO]  at org.drools.core.RuleBaseConfiguration.setPermGenThreshold(RuleBaseConfiguration.java:583)
      
          [INFO]  at org.drools.core.RuleBaseConfiguration.init(RuleBaseConfiguration.java:451)
      
          [INFO]  at org.drools.core.RuleBaseConfiguration.init(RuleBaseConfiguration.java:429)
      
          [INFO]  at org.drools.core.RuleBaseConfiguration.<init>(RuleBaseConfiguration.java:278)
      
          [INFO]  at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieBaseConfiguration(KieServicesImpl.java:185)
      

      the problem is in this code:

          static {
              if (!hasPermGen() || ClassUtils.isAndroid()) { // hasPermGen is true because GAE doesn't support java 8 yet
                  permGenStats = new DummyMemoryStats();
              } else {
                  MemoryPoolMXBean permGenBean = null;
                  for (MemoryPoolMXBean mx : ManagementFactory.getMemoryPoolMXBeans()) { // <=== EXCEPTION
                      if (mx.getName() != null && mx.getName().contains("Perm")) {
                          permGenBean = mx;
                          break;
                      }
                  }
                  permGenStats = new MBeanMemoryStats(permGenBean);
              }
          }
      

      Attachments

        Issue Links

          Activity

            People

              mfusco@redhat.com Mario Fusco
              gdesmet@redhat.com Geoffrey De Smet (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: