У нас есть код Java, который запускает несколько служб на основе Java (например, БД, обмен сообщениями и другие микрослужбы), которые привязываются к хосту и порту при запуске.
После запуска служб код Java подключается к ним, используя те же значения хоста и порта, которые использовались во время запуска.
Хост выбирается динамически из доступных сетевых интерфейсов (например, WLAN/Ethernet IPv4), а порты назначаются во время выполнения.
Эта настройка работает правильно во многих средах.
Проблема
В одной системе истекло время ожидания соединения Java с этими локально запущенными службами, хотя службы, похоже, запускаются успешно.
Обнаружены ошибки во время попытки подключения:
Код: Выделить всё
java.net.ConnectException: Operation timed outКод: Выделить всё
java.sql.SQLTransientConnectionExceptionКод: Выделить всё
java.net.SocketTimeoutException: Connect timed outКод: Выделить всё
java.rmi.ConnectException: Connection refused to host
Критическое наблюдение
Один и тот же код и версия ОС ведут себя по-разному в зависимости только от оборудования:
- Работает на macOS Tahoe (26.2) с Apple M2 Pro
- Не работает на macOS Tahoe (26.2) с Apple M4 Max
- Брандмауэр или безопасность конечных точек
Пользователь подтвердил отсутствие правил брандмауэра или безопасности конечной точки, блокирующих Java
- Тот же код работает в M2 и других средах
Вопрос
Что может вызвать Хост/порт Java подключения к локально запущенным службам Java истекают по тайм-ауту в macOS Tahoe (26.2) только на оборудовании Apple M4 Max при работе на Apple M2 Pro?
В частности:
- Известны ли разницы в сетевом стеке или привязке интерфейса на Apple M4?
- Я не могу использовать локальный хост, поскольку службы могут работать на разных системы, но в настоящее время тестируются на одном компьютере.
- Какие диагностики или настройки на уровне JVM или macOS следует проверить в этом сценарии?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ax-but-not
Мобильная версия