rmi 相关问题

远程方法调用(RMI)是Java面向对象的远程过程调用(RPC)机制。

RMI JMXConnectorServer 启动时等待两分钟

我们在具有 Tomcat 前端的服务器上运行应用程序。通过RMI 进行通信。 此设置已运行多年,但我在设置新服务器时遇到问题。设置 MBeanS 时...

回答 1 投票 0

Spring RMI 的替代方案是什么? (因为它已被弃用)

Spring 似乎正在弃用它的 RMI: 从 Spring Framework 5.3 开始,出于安全原因和更广泛的行业支持,现已弃用对多种远程技术的支持。支持

回答 3 投票 0

随着 RmiRegistryFactoryBean 已被弃用,ConnectorServerFactoryBean 的 RmiRegistryFactoryBean 的替代方案是什么?

我有一个现有代码,我们正在使用 org.springframework.remoting.rmi.RmiRegistryFactoryBean。 我正在升级我们的 Spring 版本,看起来 RmiRegistryFactoryBean 在 lat 中已被弃用...

回答 1 投票 0

为什么 java 编译器抛出“RemoteException 无法访问的 catch 块”。在 try-catch 中出现 RemoteException?

我有这个代码: 公共静态无效主(字符串[] args){ 尝试 { 注册表registro = LocateRegistry.getRegistry(); EchoInt 存根 = (

回答 1 投票 0

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(); } } }

回答 3 投票 0

带有 RMI 的 Maven exec 插件 java 目标提前退出

org.codehaus.mojo:exec-maven-plugin:3.3.0 插件“java”目标文档指出“一旦所有已知的非守护线程退出,守护线程就会加入并中断”。我不是这样的

回答 1 投票 0

Tomcat 持续监听 tcp 1099 端口

我在tomcat 8.5.63版本和Java 1.8版本上部署了应用程序。每当我部署应用程序时,tomcat 默认都会为 JMX rmi 打开 tcp 端口 1099。我能够做到这一点

回答 1 投票 0

为什么Tomcat服务器可以通过jmxrmi端口1099访问

我的理解是,如果我们配置以下属性,则可以通过jmxrmi访问tomcat服务器。端口也可以配置。 -Dcom.sun.management.jmxremote.port=30000 -Dcom.sun.management.

回答 2 投票 0

java 17 WAR 项目中的 RMI。我该如何修复这个错误?

我正在努力将公司的代码从java 8更新到17。我已经添加了依赖项,但代码使用了jdk 8中内置的RMI,但在jdk 11和17中不可用。 代码库...

回答 1 投票 0

找不到符号,类向量[重复]

在我的代码中,我使用一个保存 Reservation 对象的向量。 预订舱位: 公共类保留实现java.io.Serialized { int ano; 内部BNO; int cno; int dno; 内在; 字符串名称;

回答 1 投票 0

找不到JAVA类的符号、向量

在我的代码中,我使用一个保存 Reservation 对象的向量。 预订舱位: 公共类保留实现java.io.Serialized { int ano; 内部BNO; int cno; int dno; 内在; 字符串名称;

回答 1 投票 0

不支持的协议:尝试获取 weblogic 中的线程数时出现 t3 异常

我正在使用 JMX 获取 Weblogic 中的线程数,但发生错误。 这是我的代码: 导入java.util.Hashtable; 导入 javax.management.MBeanServer; 导入 javax.management.MBeanServerConn...

回答 4 投票 0

Rmiregistry 与 LDAP

我最近发现了 Java RMI API,并且我正在使用 Rmiregistry 来存储和获取远程对象。 然后,我看到我们可以使用 LDAP 来完成此任务。我对这种方法很感兴趣......

回答 1 投票 0

通过 RMI 对客户端进行安全身份验证

我正在考虑像这样对我的 RMI 服务的用户进行身份验证 接口 RemoteService 扩展 Remote { ... } 接口 RemoteServiceProvider 扩展 Remote { ... } 类 RemoteServiceProviderImpl

回答 1 投票 0

无法从我的本地计算机连接到java rmi服务器(位于aws中)

我有一个vpc,我在公共子网上启动了我的Windows ec2实例,它有公共IP和私有IP地址。在那个 windows ec2 实例中,我添加了一个小型 rmi 服务器,它是 ru...

回答 1 投票 0

JDK 17 中的 WebSphere Liberty BASE 远程 EJB 调用失败

这里我尝试在部署在两个单独的虚拟机中的两个 JavaEE 应用程序之间启动远程 ejb 调用,当我从主 JavaEE 应用程序启动远程 ejb 查找时...

回答 1 投票 0

启动终端时客户端启动 RMIregistry 不起作用

每当我尝试运行java时,我都可以打印出系统已启动,但不能打印出导出和绑定 导入 java.rmi.server.UnicastRemoteObject; //!!使用 UnicastRemoteObject 导入java.rmi.

回答 1 投票 0

RMI 测试在隔离中通过,但与其他测试一起运行时失败并出现 UnmarshalException

我试图理解为什么使用 RMI 的特定测试方法在单独运行时通过,但在与也使用 RMI 的其他测试一起运行时失败。测试结构与 b...

回答 1 投票 0

每个新会话都需要 dbms_java.grant_permission

我正在尝试实现java RMI客户端服务器连接,我在NetBeans IDE中创建了我的服务器,并在oracle数据库中创建了客户端类作为java存储过程,并通过我的...

回答 2 投票 0

java.rmi.server.ExportException:端口已在使用中:1099;

我正在编写一个Java RMI 程序来计算数字的阶乘。 这是界面: 导入java.rmi.Remote; 导入 java.rmi.RemoteException; 公共接口 FactorialRMI 扩展了 Remote...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.