Я переношу приложение из jboss 4.2 в wildfly 13. Приложение предоставляет EJB, успешно перенесенные, и эти EJB используются некоторыми автономными клиентами (упакованными как сервисы с оболочкой tanuki), работающими на той же машине, что и wildfly. Эти автономные клиенты отслеживаются с помощью JMX.
Код запуска пытается отменить привязку имени службы в случае сбоя клиента при более раннем запуске с использованием
Naming.unbind("//localhost:1099/myService");
При обычном запуске (не после сбоя) a
java.rmi.NotBoundException
ожидается.
Моя проблема в том, что я получаю следующую трассировку стека
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
порт 1099 является «хорошо известным» портом по умолчанию, как указано в Javadoc Naming:
Класс Naming предоставляет методы для хранения и получения ссылок
для удаленных объектов в реестре удаленных объектов. Каждый метод
Класс именования принимает в качестве одного из аргументов имя, которое является
java.lang.String в формате URL (без компонента схемы)
форма:
// хост: порт / имя
где хост - это хост (удаленный или локальный), где находится реестр, порт - номер порта, на который реестр принимает вызовы,
и где имя - простая строка, не интерпретируемая реестром. И то и другое
хост и порт не являются обязательными. Если хост не указан, по умолчанию хост
местный хозяин. Если порт не указан, по умолчанию используется порт 1099,
«хорошо известный» порт, который использует реестр RMI, rmiregistry.
Я также пробовал с портом управления wildfly, поскольку он использует обновление порта http, я получаю
java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
java.net.SocketTimeoutException: Read timed out
со следующей основной причиной
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at java.io.DataInputStream.readByte(DataInputStream.java:265)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:246)
Что я пропускаю и / или делаю неправильно?