code: protected TemporaryBrokerWrapper getBroker() throws PBFactoryException
      {
          PersistenceBrokerInternal broker;
          boolean needsClose = false;
  
          if (getBrokerKey() == null)
          {
              /*
              arminw:
              if no PBKey is set we throw an exception, because we don't
              know which PB (connection) should be used.
              */
              throw new OJBRuntimeException("Can't find associated PBKey. Need PBKey to obtain a valid" +
                                            "PersistenceBroker instance from intern resources.");
          }
          // first try to use the current threaded broker to avoid blocking
          broker = PersistenceBrokerThreadMapping.currentPersistenceBroker(getBrokerKey());
          // current broker not found, create a intern new one
          if ((broker == null) || broker.isClosed())
          {
              broker = (PersistenceBrokerInternal) PersistenceBrokerFactory.createPersistenceBroker(getBrokerKey());
              /** Specifies whether we obtained a fresh broker which we have to close after we used it */
              needsClose = true;
          }
          return new TemporaryBrokerWrapper(broker, needsClose);
      }
docs: Gets the persistence broker used by this indirection handler.
  If no PBKey is available a runtime exception will be thrown.
  
  @return a PersistenceBroker