Naming.unbind(“ somename”)对Wildfly 13失败

时间:2018-09-10 09:42:06

标签: java wildfly rmi jmx wildfly-13

我正在将一个应用程序从jboss 4.2迁移到wildfly13。该应用程序公开了EJB,成功地进行了迁移,并且这些EJB被与Wildfly在同一台计算机上运行的一些独立客户端(通过tanuki包装器包装为服务)使用。这些独立客户端使用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)
如命名Javadoc所述,

端口1099是默认的“知名”端口:

  

Naming类提供了用于存储和获取引用的方法   远程对象注册表中的远程对象。每种方法   命名类将其名称作为其参数之一   URL格式(不含方案组件)的java.lang.String   形成:         // host:端口/名称       其中host是注册表所在的主机(远程或本地),port是注册表接受呼叫的端口号,   其中name是注册表未解释的简单字符串。都   主机和端口是可选的。如果省略host,则主机默认为   本地主机。如果省略port,则端口默认为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)

我缺少什么和/或做错了什么?

1 个答案:

答案 0 :(得分:0)

我发现rmiregistry不是由野蝇启动的。我误以为我们的旧环境会通过init.d在操作系统启动时启动rmiregistry。

所以启动rmiregistry解决了我的问题。

Rmi和wildfly http升级功能彼此无关,因为rmiregistry是一个独立的过程。