Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-5762

Broker won't start from default broker artefact unless JE is added to ./lib

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.29
    • 0.29
    • Broker-J
    • None

    Description

      If I build the Java Broker from Maven, then try and start the Broker from the artefact at broker/target/qpid-broker-0.30-SNAPSHOT-bin.tar.gz, I find the Broker fails to start with the following exception:

       Exception during startup: java.lang.NoClassDefFoundError: com/sleepycat/je/rep/StateChangeListener
      java.lang.NoClassDefFoundError: com/sleepycat/je/rep/StateChangeListener
      at java.lang.Class.getDeclaredMethods0(Native Method)
      at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
      at java.lang.Class.getDeclaredMethods(Class.java:1855)
      at org.apache.qpid.server.model.ConfiguredObjectTypeRegistry.process(ConfiguredObjectTypeRegistry.java:367)
      at org.apache.qpid.server.model.ConfiguredObjectTypeRegistry.<clinit>(ConfiguredObjectTypeRegistry.java:91)
      at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.getCategoryClass(AbstractConfiguredObjectTypeFactory.java:49)
      at org.apache.qpid.server.model.ConfiguredObjectFactoryImpl.<init>(ConfiguredObjectFactoryImpl.java:53)
      at org.apache.qpid.server.model.BrokerModel.<init>(BrokerModel.java:103)
      at org.apache.qpid.server.model.BrokerModel.<clinit>(BrokerModel.java:46)
      at org.apache.qpid.server.model.SystemContextImpl.<init>(SystemContextImpl.java:53)
      (snip)
      at org.apache.qpid.server.Main.main(Main.java:125)
      Caused by: java.lang.ClassNotFoundException: com.sleepycat.je.rep.StateChangeListener
      at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
      at java.security.AccessController.doPrivileged(Native Method)
      

      The problem is that the Broker now introspects the whole model on startup, this discovery process encounters the classes within qpid-bdbstore-*.jar, which then fails owing to the fact that the (BDB) je.jar cannot be found. BDB JE itself is intentionally omitted from the broker release artifact (provided scope) owing to license constraints.

      We either need to make the COTR tolerant to such exceptions (perhaps logging a message) and/or change the packaging so that qpid-bdbstore-*.jar is excluded from the default artefact.

      Attachments

        Activity

          People

            rgodfrey Robert Godfrey
            kwall Keith Wall
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: