flowable/flowable-engine · warning

Service url path is null. JMX connector creation skipped

Error message

Service url path is null. JMX connector creation skipped

What it means

DefaultManagementAgent logs this warning when the JMX serviceUrlPath configured on the JmxConfigurator is null, and skips creating the JMX RMI connector. It is a deliberate early-return, not a thrown exception: JMX remote access is simply not enabled. It typically means the flowable.jmx serviceUrlPath property was never set while JMX was otherwise enabled.

Source

Thrown at modules/flowable-jmx/src/main/java/org/flowable/management/jmx/DefaultManagementAgent.java:193

        }

        // create a mbean server with the given default domain name
        return MBeanServerFactory.createMBeanServer(jmxConfigurator.getMbeanDomain());
    }

    @Override
    public void findAndRegisterMbeans() throws Exception {
        register(new ProcessDefinitionsMBean(jmxConfigurator.getProcessEngineConfig()), new ObjectName(jmxConfigurator.getDomain(), "type", "Deployments"));
        register(new JobExecutorMBean(jmxConfigurator.getProcessEngineConfig()), new ObjectName(jmxConfigurator.getDomain(), "type", "JobExecutor"));
    }

    public void createJmxConnector(String host) throws IOException {

        String serviceUrlPath = jmxConfigurator.getServiceUrlPath();
        Integer registryPort = jmxConfigurator.getRegistryPort();
        Integer connectorPort = jmxConfigurator.getConnectorPort();
        if (serviceUrlPath == null) {
            LOGGER.warn("Service url path is null. JMX connector creation skipped");
            return;
        }
        if (registryPort == null) {
            LOGGER.warn("Registry port is null. JMX connector creation skipped.");
            return;
        }

        try {
            registry = LocateRegistry.createRegistry(registryPort);
            LOGGER.debug("Created JMXConnector RMI registry on port {}", registryPort);
        } catch (RemoteException ex) {
            // The registry may had been created, we could get the registry instead
        }

        // must start with leading slash
        String path = serviceUrlPath.startsWith("/") ? serviceUrlPath : "/" + serviceUrlPath;
        // Create an RMI connector and start it
        final JMXServiceURL url;

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Set the JMX service url path in configuration (e.g. flowable.jmx.serviceUrlPath=/jmxrmi or via JmxConfigurator.setServiceUrlPath(...)).
  2. If JMX is not wanted, explicitly disable JMX so the agent is never started instead of relying on the null path.
  3. Verify the configuration source (properties file / Spring environment) actually binds the serviceUrlPath key to the JmxConfigurator before createMBeanServer runs.
  4. Check logs for this warning at startup to confirm JMX remote monitoring is intentionally off.

Example fix

// before
flowable.jmx.enabled=true
flowable.jmx.registryPort=1099
// after
flowable.jmx.enabled=true
flowable.jmx.registryPort=1099
flowable.jmx.serviceUrlPath=/jmxrmi
flowable.jmx.connectorPort=6789
Defensive patterns

Strategy: validation

Validate before calling

if (jmxConfigurator.getServiceUrlPath() == null) {
    throw new IllegalStateException("flowable.jmx.serviceUrlPath must be set when JMX is enabled");
}

Type guard

boolean isJmxReady(JmxConfigurator c) {
    return c.getServiceUrlPath() != null && c.getRegistryPort() != null && c.getConnectorPort() != null;
}

Prevention

When it happens

Trigger: Calling createJmxConnector (indirectly via createMBeanServer, e.g. when initializing the JMX management agent) while jmxConfigurator.getServiceUrlPath() returns null because the serviceUrlPath property was not configured.

Common situations: Deploying with JMX enabled in config but only the ports set and not the service url path; copying a config sample that leaves serviceUrlPath commented out; programmatic JmxConfigurator setup where only setRegistryPort/setConnectorPort were called.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/a91a76a2e1de4dfd. Report an issue: GitHub.