远程方法调用(RMI)是Java面向对象的远程过程调用(RPC)机制。
RMI JMXConnectorServer 启动时等待两分钟
我们在具有 Tomcat 前端的服务器上运行应用程序。通过RMI 进行通信。 此设置已运行多年,但我在设置新服务器时遇到问题。设置 MBeanS 时...
Spring RMI 的替代方案是什么? (因为它已被弃用)
Spring 似乎正在弃用它的 RMI: 从 Spring Framework 5.3 开始,出于安全原因和更广泛的行业支持,现已弃用对多种远程技术的支持。支持
随着 RmiRegistryFactoryBean 已被弃用,ConnectorServerFactoryBean 的 RmiRegistryFactoryBean 的替代方案是什么?
我有一个现有代码,我们正在使用 org.springframework.remoting.rmi.RmiRegistryFactoryBean。 我正在升级我们的 Spring 版本,看起来 RmiRegistryFactoryBean 在 lat 中已被弃用...
为什么 java 编译器抛出“RemoteException 无法访问的 catch 块”。在 try-catch 中出现 RemoteException?
我有这个代码: 公共静态无效主(字符串[] args){ 尝试 { 注册表registro = LocateRegistry.getRegistry(); EchoInt 存根 = (
RMIServiceExporter 不工作,无法连接到端口 1099 的 RMI 本地主机
我已使用以下配置将 Spring 托管服务 bean 导出到 RMI 服务中: 我已使用以下配置将 Spring 托管服务 bean 导出到 RMI 服务中: <bean class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName" value="spitterService"/> <property name="service" ref="spitterService"/> <property name="serviceInterface" value="com.spitter.service.SpitterService"/> <property name="registryHost" value="127.0.0.1"/> <property name="registryPort" value="1099"/> </bean> 但是当我加载我的 spring 配置文件(在 Tomcat 中部署我的应用程序)时,它会抛出以下异常 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.remoting.rmi.RmiServiceExporter#0' defined in ServletContext resource [/WEB-INF/spitter-servlet.xml]: Invocation of init method failed; nested exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused: connect at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4681) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5184) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5179) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused: connect at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184) at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322) at sun.rmi.registry.RegistryImpl_Stub.list(Unknown Source) at org.springframework.remoting.rmi.RmiServiceExporter.testRegistry(RmiServiceExporter.java:415) at org.springframework.remoting.rmi.RmiServiceExporter.getRegistry(RmiServiceExporter.java:326) at org.springframework.remoting.rmi.RmiServiceExporter.prepare(RmiServiceExporter.java:264) at org.springframework.remoting.rmi.RmiServiceExporter.afterPropertiesSet(RmiServiceExporter.java:227) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409) ... 20 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at java.net.Socket.connect(Socket.java:478) at java.net.Socket.<init>(Socket.java:375) at java.net.Socket.<init>(Socket.java:189) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595) ... 30 more 请帮助我..提前致谢 我还创建了一个 rmi 客户端来使用 RMI 服务 public class SpitterMain { public static void main(String[] args){ String serviceURL = "rmi://localhost:1099/spitterService"; try { SpitterService spitterService = (SpitterService) Naming.lookup(serviceURL); Spitter spitter = spitterService.getSpitter("panneerselvam"); List<Spittle> spittles = spitterService.getSpittlesForSpitter(spitter.getId(), 25); System.out.println("Welcome>"+spitter.getName()+"( "+spitter.getUsername()+" )"); System.out.println("Your Recent Spittles are:"); for(Spittle spittle: spittles){ System.out.println(spittle.getText()+" ON "+spittle.getWhen()); } } catch (NotBoundException ex) { Logger.getLogger(SpitterMain.class.getName()).log(Level.SEVERE, null, ex); } catch (MalformedURLException ex) { Logger.getLogger(SpitterMain.class.getName()).log(Level.SEVERE, null, ex); } catch (RemoteException ex) { Logger.getLogger(SpitterMain.class.getName()).log(Level.SEVERE, null, ex); } } } 现在我遇到以下异常.. java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: org.springframework.remoting.rmi.RmiInvocationHandler (no security manager: RMI class loader disabled) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at com.spitter.client.SpitterMain.main(SpitterMain.java:28) Caused by: java.lang.ClassNotFoundException: org.springframework.remoting.rmi.RmiInvocationHandler (no security manager: RMI class loader disabled) at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:535) at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628) at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294) at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238) at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1530) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1492) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) ... 3 more 请检查一下这些...再次感谢 我认为如果您删除 registryHost 属性,它将在 1099 上动态创建一个主机,因为还没有一个主机。 <bean class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName" value="spitterService"/> <property name="service" ref="spitterService"/> <property name="serviceInterface" value="com.spitter.service.SpitterService"/> <property name="registryPort" value="1099"/> </bean> 要么在 1099 上启动 RmiRegistry。 您必须创建 myRmiExporter 并扩展 RMIServiceExporter 然后用这个body来实现这个方法 protected Registry getRegistry(String registryHost, int registryPort, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) throws RemoteException { if (registryHost != null) { // Host explictly specified: only lookup possible. if (logger.isInfoEnabled()) { logger.info("Looking for RMI registry at port '" + registryPort + "' of host [" + registryHost + "]"); } try { Registry reg = LocateRegistry.getRegistry(registryHost, registryPort, clientSocketFactory); testRegistry(reg); return reg; } catch (RemoteException ex) { logger.debug("RMI registry access threw exception", ex); logger.warn("Could not detect RMI registry - creating new one"); // Assume no registry found -> create new one. LocateRegistry.createRegistry(registryPort); Registry reg = LocateRegistry.getRegistry(registryHost, registryPort, clientSocketFactory); testRegistry(reg); return reg; } } else { return getRegistry(registryPort, clientSocketFactory, serverSocketFactory); } } 成功了 import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject; import java.util.Random; public class GuessingGameServer extends UnicastRemoteObject implements GuessingGameInterface { private int num; public GuessingGameServer() throws RemoteException { super(); num = new Random().nextInt(100) + 1; System.out.println("[Server] Generated number to guess: " + num); } public String guessNumber(int guess) throws RemoteException { System.out.println("[Server] Client guessed: " + guess); if (guess == num) { return "Correct!"; } else if (guess < num) { return "Too Low!"; } else { return "Too High!"; } } public static void main(String[] args) { try { LocateRegistry.createRegistry(1099); System.out.println("[Server] RMI Registry started on port 1099"); GuessingGameServer game = new GuessingGameServer(); Naming.rebind("rmi://localhost/GuessingGameService", game); System.out.println("[Server] Guessing Game Server is running..."); } catch (Exception e) { e.printStackTrace(); } } }
带有 RMI 的 Maven exec 插件 java 目标提前退出
org.codehaus.mojo:exec-maven-plugin:3.3.0 插件“java”目标文档指出“一旦所有已知的非守护线程退出,守护线程就会加入并中断”。我不是这样的
我在tomcat 8.5.63版本和Java 1.8版本上部署了应用程序。每当我部署应用程序时,tomcat 默认都会为 JMX rmi 打开 tcp 端口 1099。我能够做到这一点
为什么Tomcat服务器可以通过jmxrmi端口1099访问
我的理解是,如果我们配置以下属性,则可以通过jmxrmi访问tomcat服务器。端口也可以配置。 -Dcom.sun.management.jmxremote.port=30000 -Dcom.sun.management.
java 17 WAR 项目中的 RMI。我该如何修复这个错误?
我正在努力将公司的代码从java 8更新到17。我已经添加了依赖项,但代码使用了jdk 8中内置的RMI,但在jdk 11和17中不可用。 代码库...
在我的代码中,我使用一个保存 Reservation 对象的向量。 预订舱位: 公共类保留实现java.io.Serialized { int ano; 内部BNO; int cno; int dno; 内在; 字符串名称;
在我的代码中,我使用一个保存 Reservation 对象的向量。 预订舱位: 公共类保留实现java.io.Serialized { int ano; 内部BNO; int cno; int dno; 内在; 字符串名称;
不支持的协议:尝试获取 weblogic 中的线程数时出现 t3 异常
我正在使用 JMX 获取 Weblogic 中的线程数,但发生错误。 这是我的代码: 导入java.util.Hashtable; 导入 javax.management.MBeanServer; 导入 javax.management.MBeanServerConn...
我最近发现了 Java RMI API,并且我正在使用 Rmiregistry 来存储和获取远程对象。 然后,我看到我们可以使用 LDAP 来完成此任务。我对这种方法很感兴趣......
我正在考虑像这样对我的 RMI 服务的用户进行身份验证 接口 RemoteService 扩展 Remote { ... } 接口 RemoteServiceProvider 扩展 Remote { ... } 类 RemoteServiceProviderImpl
无法从我的本地计算机连接到java rmi服务器(位于aws中)
我有一个vpc,我在公共子网上启动了我的Windows ec2实例,它有公共IP和私有IP地址。在那个 windows ec2 实例中,我添加了一个小型 rmi 服务器,它是 ru...
JDK 17 中的 WebSphere Liberty BASE 远程 EJB 调用失败
这里我尝试在部署在两个单独的虚拟机中的两个 JavaEE 应用程序之间启动远程 ejb 调用,当我从主 JavaEE 应用程序启动远程 ejb 查找时...
每当我尝试运行java时,我都可以打印出系统已启动,但不能打印出导出和绑定 导入 java.rmi.server.UnicastRemoteObject; //!!使用 UnicastRemoteObject 导入java.rmi.
RMI 测试在隔离中通过,但与其他测试一起运行时失败并出现 UnmarshalException
我试图理解为什么使用 RMI 的特定测试方法在单独运行时通过,但在与也使用 RMI 的其他测试一起运行时失败。测试结构与 b...
每个新会话都需要 dbms_java.grant_permission
我正在尝试实现java RMI客户端服务器连接,我在NetBeans IDE中创建了我的服务器,并在oracle数据库中创建了客户端类作为java存储过程,并通过我的...
java.rmi.server.ExportException:端口已在使用中:1099;
我正在编写一个Java RMI 程序来计算数字的阶乘。 这是界面: 导入java.rmi.Remote; 导入 java.rmi.RemoteException; 公共接口 FactorialRMI 扩展了 Remote...