testJMXOverTLS fails because of port conflict between RMI registry and server on macOS
- Dominant language
- Java
- Stars
- 4.1k
- Forks
- 2k
- Avg merge
- 3d 56m
- Merged PRs (30d)
- 48
Description
**Jetty version(s)**
Jetty 12.0.x
**Jetty Environment**
core
**Java version/vendor** `(use: java -version)`
openjdk version "21.0.8" 2025-07-15
OpenJDK Runtime Environment Homebrew (build 21.0.8)
OpenJDK 64-Bit Server VM Homebrew (build 21.0.8, mixed mode, sharing)
**OS type/version**
macOS 15.5 (24F74)
**Description**
Hello, the testJMXOverTLS test fails, when I run "mvn install" on my Macbook Air M1 with Homebrew OpenJDK 21, because (differently from Linux) the port binding to 1100 fails on macOS (and neither retries nor changing the hardcoded port to 1101 help; the lsof and netstat also show the port 1100 being free, when the test is not being run):
```
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.458 s <<< FAILURE! -- in org.eclipse.jetty.jmx.ConnectorServerTest
[ERROR] org.eclipse.jetty.jmx.ConnectorServerTest.testJMXOverTLS -- Time elapsed: 0.439 s <<< ERROR!
java.rmi.server.ExportException:
Port already in use: 1100; nested exception is:
java.net.BindException: Address already in use
at java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:356)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:251)
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:415)
at java.rmi/sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
at java.rmi/sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:235)
at java.management.rmi/javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:158)
at java.management.rmi/javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:138)
at java.management.rmi/javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:450)
at org.eclipse.jetty.jmx@12.0.24-SNAPSHOT/org.eclipse.jetty.jmx.ConnectorServer.doStart(ConnectorServer.java:212)
at org.eclipse.jetty.util@12.0.24-SNAPSHOT/org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at org.eclipse.jetty.jmx@12.0.24-SNAPSHOT/org.eclipse.jetty.jmx.ConnectorServerTest.testJMXOverTLS(ConnectorServerTest.java:248)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Caused by: java.net.BindException: Address already in use
at java.base/sun.nio.ch.Net.bind0(Native Method)
at java.base/sun.nio.ch.Net.bind(Net.java:565)
at java.base/sun.nio.ch.Net.bind(Net.java:554)
at java.base/sun.nio.ch.NioSocketImpl.bind(NioSocketImpl.java:636)
at java.base/java.net.ServerSocket.bind(ServerSocket.java:391)
at java.base/java.net.ServerSocket.(ServerSocket.java:278)
at java.base/javax.net.ssl.SSLServerSocket.(SSLServerSocket.java:179)
at java.base/sun.security.ssl.SSLServerSocketImpl.(SSLServerSocketImpl.java:80)
at java.base/sun.security.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.java:87)
at org.eclipse.jetty.util@12.0.24-SNAPSHOT/org.eclipse.jetty.util.ssl.SslContextFactory.newSslServerSocket(SslContextFactory.java:1676)
at org.eclipse.jetty.jmx@12.0.24-SNAPSHOT/org.eclipse.jetty.jmx.ConnectorServer$JMXRMIServerSocketFactory.createServerSocket(ConnectorServer.java:322)
at org.eclipse.jetty.jmx@12.0.24-SNAPSHOT/org.eclipse.jetty.jmx.ConnectorServer$JMXRMIServerSocketFactory.createServerSocket(ConnectorServer.java:297)
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:672)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:344)
... 16 more
[INFO]
[INFO] Results:
[INFO]
[ERROR] Errors:
[ERROR] ConnectorServerTest.testJMXOverTLS:248 » Export Port already in use: 1100; nested exception is:
java.net.BindException: Address already in use
[INFO]
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
```
**How to reproduce?**
```
cd jetty-core/jetty-jmx && mvn clean test -Dtest=ConnectorServerTest#testJMXOverTLS -Dmaven.build.cache.enabled=false
```
Here are the logs (please wait for my upcoming PR):
[testJMXOverTLS-broken.txt](https://github.com/user-attachments/files/21669792/testJMXOverTLS-broken.txt)
[testJMXOverTLS-disabled.txt](https://github.com/user-attachments/files/21670057/testJMXOverTLS-disabled.txt)
Contributor guide
Research direction
Start in jetty-core/jetty-jmx with ConnectorServerTest.testJMXOverTLS, especially ConnectorServerTest.java:248, and reproduce it with the provided Maven command on macOS. Trace the RMI registry and TLS server port setup; done means the test runs successfully without the port conflict while preserving its TLS coverage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100