Tag: rmi

java.rmi.NoSuchObjectException:表中没有这样的对象

我正在编写一个非常简单的RMI服务器,并且在unit testing中看到了间歇性的java.rmi.NoSuchObjectExceptions 。 我在同一个对象上有一串远程方法调用,而最初的几个经过,后面的有时会失败。 我没有做任何事情来注销之间的服务器对象。 这些错误并不总是出现,如果我把它们放在断点,他们往往不会出现。 这些Heisenbugs,当它们通过debugging器的执行速度减慢来看待它们时,它们的竞争状态会消失吗? 在我的testing或服务器代码中没有multithreading(虽然也许在RMI堆栈里面)? 我通过Eclipse的JUnit插件在Mac OS X 10.5(Java 1.5)上运行此操作,并且RMI服务器和客户端都在同一个JVM中。 什么会导致这些exception?

java.rmi.ConnectException:连接拒绝主机:127.0.1.1;

java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: java.net.ConnectException: Connection refused at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148) at com.sun.proxy.$Proxy0.notifyMe(Unknown Source) at CallbackServerImpl.doCallback(CallbackServerImpl.java:149) at CallbackServerImpl.registerForCallback(CallbackServerImpl.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) at sun.rmi.transport.Transport$1.run(Transport.java:177) at sun.rmi.transport.Transport$1.run(Transport.java:174) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:173) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808) […]

为什么Java在configurationJMX时打开3个端口?

我在Centos6上用JDK7运行我的Java程序。 我使用以下选项启用JMX: JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9123 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=true" 当我检查打开哪些端口时,我发现了另外两个随机端口: netstat -plunt | grep java tcp 0 0 :::9123 :::* LISTEN 13295/java tcp 0 0 :::59927 :::* LISTEN 13295/java tcp 0 0 :::59928 :::* LISTEN 13295/java 请注意,每个重新启动只configuration端口9123保持不变,另外两个端口更改值。 netstat -plunt | grep java tcp 0 0 :::9123 :::* LISTEN 13331/java tcp 0 0 :::59932 :::* LISTEN 13331/java […]

运行rmi服务器,classnotfound

您好我试图运行一个Java应用程序绑定到命名服务器的类,但我不断得到一个ClassNotFoundException 首先我开始registry: rmir​​egistry的 然后从日食我尝试执行服务器,但得到这个错误 java.rmi.ServerException:在服务器线程中发生RemoteException; 嵌套exception是:java.rmi.UnmarshalException:错误解组参数; 嵌套的exception是:在sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)在sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)处的java.lang.ClassNotFoundException:progInternet2008.commons.NominabileFactory sun.rmi.transport.Transport $ 1.run(Transport.java:159)at sun.rmi.transport.Transport.serviceCall(Transport.java:155)at sun.rmi java.security.AccessController.doPrivileged(Native Method) .transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:790)at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run (TCPTransport.java:649)at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)at java.lang。在sun.rmi.transport.StreamR上的sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)上的Thread.run(Thread.java:619) emoteCall.executeCall(StreamRemoteCall.java:233)at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)at progInternet2008.Pozzobon.tesi.Slave。 main(Slave.java:54)引发:java.rmi.UnmarshalException:错误解组参数; 嵌套的exception是:sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)sun.rmi上的sun.rmi.registry.RegistryImpl_Skel.dispatch(未知源):java.lang.ClassNotFoundException:progInternet2008.commons.NominabileFactory 。sun.rmi.transport.server上的.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)在sun.rmi.transport处的java.security.AccessController.doPrivileged(Native Method)处运行$ 1.run(Transport.java:159)。 Transport.serviceCall(Transport.java:155)at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:790)在sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:649)在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)在java.util.concurrent.ThreadPoolExecutor $工作.run(ThreadPoolExecutor.java:908)at java.lang.Thread.run(Thread.java:619)引起:java.lang.ClassNotFoundException:progInternet2 java.net.URLClassLoader上的008.commons.NominabileFactory在java.net.URLClassLoader.findClass上的java.security.AccessController.doPrivileged(Native方法)上的$ 1.run(URLClassLoader.java:200)(java中的URLClassLoader.java:188) .lang.ClassLoader.loadClass(ClassLoader.java:307)at java.lang.ClassLoader.loadClass(ClassLoader.java:252)at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)at […]

java.rmi.ServerException:在服务器线程中发生RemoteException(ClassNotFoundException)

以下方法: private void startServer() { // snippet that starts the server on the local machine try { RemoteMethodImpl impl = new RemoteMethodImpl(); Naming.rebind( "Illusive-Server" , impl ); }catch(Exception exc) { JOptionPane.showMessageDialog(this, "Problem starting the server", "Error", JOptionPane.ERROR_MESSAGE); System.out.println(exc); } } 抛出这个exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested […]

Spring&Docker:RMI主机名解析为0.0.0.0,而不是其预期的IP地址

我目前正在开发一个将Docker和Spring程序与RMI服务相关联的项目,而我找不到解决问题的方法。 我试图通过docker-compose.yml文件将两个Spring程序部署到两个不同的容器中。 第一个暴露了地址为0.0.0.0 (全部)的RMI接口以及特定的端口(在Docker文件中也是EXPOSEd)。 而第二个只是一个使用远程接口的RMI客户端。 为了访问公开RMI服务的容器,我通过Compose文件中的links参数给它一个别名,如下所示: services: rmi-service: … rmi-client: … links: – rmi-service:rmihost 当我用docker-compose up -d启动我的容器时,如果我从第二个容器执行命令ping rmihost ,它工作的很好。 但是当我尝试启动我的Spring RMI客户端时,出现以下错误: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'my.rmi.client' defined in class path resource [META-INF/rmi-client-spring.xml]: Invocation of init method failed; nested exception is org.springframework.remoting.RemoteConnectFailureException: Could not connect to remote service [rmi://rmihost:11199/businessService]; nested exception is java.rmi.ConnectException: Connection […]