问题标签 [rmi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 将属性传递给 Spring 上下文
我正在使用 Spring 处理对某个远程服务器的 RMI 调用。构造应用程序上下文并从客户端获取远程调用的 bean 很简单:
但是,我没有看到将属性传递到配置中的简单方法。例如,如果我想在客户端运行时确定远程服务器的主机名。
理想情况下,我会在 Spring 上下文中有一个这样的条目:
并将属性作为参数从客户端传递给上下文。
我可以在上下文中使用 PropertyPlaceholderConfigurer 来替换这些属性,但据我所知,这仅适用于从文件中读取的属性。
我有一个解决这个问题的实现(作为答案添加),但我正在寻找一个标准的 Spring 实现以避免自己滚动。是否有另一个 Spring 配置器(或其他任何东西)来帮助初始化配置,或者我最好查看 java config 来实现这一点?
java - 关闭 rmi 注册表
使用RMI将String对象从WebAppA传递给WebAppB。WebAppB是RMIServer,而WebAppA是RMIClient。我在WebAppB中添加了ContextListener,这样在tomcat中初始化上下文时rmi服务立即启动。并且在tomcat的contextDestroyed方法中我正在尝试使用以下语句关闭/关闭 rmi:
但即使在执行上述语句之后,rmi 仍在端口 3232 处侦听传入请求。我在命令提示符下使用“netsat -ano”看到了这一点。请帮我关闭 RMI 服务。
java - 如何使用 Tomcat 隧道 RMI
我想将 RMI 设置为通过 java servlet 上的端口 80 ..(通过防火墙)我有一个 Tomcat 服务器,我正在寻找能够捕获 RMI http 请求并将其传递给服务器机器上的 RMI 层。我读过 RMI 会自动处理它。
有分步指南吗?或者只是一个要安装在服务器上的战争文件?
谢谢。
java - 从 .NET 访问 Java RMI
我有一个使用 RMI 的现有基于 java 的系统。我无权更改此系统。
我希望能够直接从 .NET 调用 RMI api 方法。实现这一目标的最佳方法是什么?如果它是第三方组件,则首选免费或低成本。
谢谢
java - 我必须如何配置 RMI 环境才能在“真实”网络中使用它?
因为我不想为基于客户端-服务器的应用程序实现通信协议,所以我在两侧实现了一个 RMI 客户端和一个 RMI 服务器,用于两个组件之间的信息交换。
如果我尝试通过在同一台机器上启动两个组件来使用我的应用程序,那么一切正常。但是,如果我将组件拆分到两台不同的计算机(Kubuntu 9.04 作为 Windows 7 RC 环境中的虚拟机,禁用防火墙和本机 Ubuntu 9.04 环境),RMI 客户端似乎无法执行以下方法在服务器端定义。(每个函数调用都会导致 RMI 异常。)
目前我只将两边的系统属性“java.rmi.server.hostname”设置为应该用于数据交换的网络接口,并注册了与rmi守护进程(?)rmid通信的默认端口。
有人知道可能出了什么问题吗?我是否必须设置一些其他参数,例如“java.rmi.server.codebase”(http://java.sun.com/j2se/1.4.2/docs/guide/rmi/javarmiproperties.html)才能使用我的应用程序中的 RMI 功能?
编辑:好的,这里有一些额外的信息给你:
在初始化阶段,我的客户端尝试建立与服务器组件的 RMI 服务器的连接,该连接使用以下两种方法进行初始化:
“ipAddress”在这里是服务器组件的网络接口的 IP 地址。
客户端组件用来建立连接的方法如下所示:
如您所见,我的客户端调用了一个函数来在服务器上注册连接:
如果我使用真实的网络连接运行我的程序,则文本“slave control ...”不会显示在服务器端。因此,我不确定该函数是否真的被客户端组件调用。
客户端组件初始化后,它会尝试通过使用它与服务器的 RMI 连接调用以下方法来通知服务器组件:
在服务器端设置一个标志。
客户端的此函数内部发生错误:
java.rmi.ConnectException:连接拒绝主机 127.0.1.1;嵌套异常是:java.net.ConnectException:连接被拒绝。
我不知道为什么主机在这里 127.0.1.1 ...
@nos
当然,我禁用了windows防火墙和卡巴斯基安全软件的保护机制。我认为我的 Kubuntu 中没有运行防火墙。一般来说,可以建立连接,因为我已经使用 scp 将我的程序复制到另一台机器上。
编辑2:
嗯,在将 /etc/hosts 中的条目设置为机器的 IP 地址后,它似乎可以工作,但不太明白为什么会这样......
BR,
马库斯
java - 如何使用 Java RMI 实现观察者模式?
我有一个客户端在服务器上启动一个长时间运行的进程。每隔一段时间,我想向用户展示后台发生的事情。最简单的方法是轮询服务器,但我想知道是否没有办法为此实现观察者模式。不幸的是,我正在使用 RMI 与服务器通信,我担心我必须为此将我的客户端变成 RMI 服务器。
还有另一种我想念的方式吗?
java - 远程 JMX 调用因 ClassNotFoundException 失败:...(无安全管理器:RMI 类加载器已禁用
我尝试从 Tomcat 的 Web 应用程序调用 MBean 的方法。目标 MBean 在 JBoss 4.2.3 下运行。Tomcat 和 JBoss 应用程序都使用具有相同类的相同版本的 jar,但在调用时我看到以下异常:
我认为 JBoss 不使用自己的类,而是尝试从某个地方下载该类,但由于“没有安全管理器:RMI 类加载器已禁用”而失败。但是如何改变这种行为来使用本地已经加载的类。或者也许我猜错了..?
apache - Apache 用隐式重定向重写
一段时间以来,我一直在尝试这样做,但没有成功。我会提前说这可能是一个新手问题,所以很抱歉,但我确实需要一些帮助。
我正在尝试将对 cgi-bin/java-rmi.cgi 的请求重定向到 tomcat 上的 servlet(来自 apache)。我已经成功地重定向到 servlet,但我无法进行隐式重定向(隐藏客户端的 url 更改)。
这是强制性的,因为如果它被重定向,rmi 将无法工作,所以我必须对客户端隐藏它。
现在我的 httpd.conf 看起来像这样(显然只有相关的东西)
另外,我的 mod_jk.conf 看起来像这样(同样,只有相关的东西)
(虽然我认为 mod_jk.conf 与问题无关)
我还启用了这些:
dules/mod_rewrite.so
每当我尝试打开http://localhost/cgi-bin/java-rmi.cgi时,页面打开时的 url http://localhost/RMIServlet并不好。
我究竟做错了什么?
谢谢!
java - 使用 Java RMI,序列化对象究竟何时通过网络传输?
我正在使用 RMI 来实现一些分布式算法,并且由于我们正在传输相当大的对象,我想要一些关于 RMI 何时通过网络传输序列化对象的精度。
假设我有一个具有以下方法的 Remote 类。
现在,我有两个(或更多)RMI 客户端调用 MyServer.foo 方法。当客户端 1调用它时,它在Thread.wait()中被阻塞。然后,客户端 2调用foo并被阻塞,因为客户端 1 仍在同步的foo方法中。
现在,问题是:Client 2调用的bar参数何时通过网络传输?只有一次客户端 2可以实际进入foo方法或之前,当它被阻塞时?
额外的问题:这是(传输对象的时间)是由 RMI 规范强制执行的行为,还是特定于实现的行为?
spring - Spring 中的 RMIPRoxyFactoryBean 工厂?
我目前正在使用 SpringRmiProxyFactoryBean
来访问远程服务。由于需求发生了变化,我需要在运行时指定一个不同的主机 - 可以有很多 - ,但remoteServiceInterface
和非主机组件remoteServiceUrl
保持不变。
从概念上讲,我会看到一个类似于以下内容的 bean 定义:
这暴露了一个
Spring有这样的服务吗?或者,您是否看到另一种方法?
请注意,在编译或启动时将不知道主机列表,因此我无法在 xml 文件中生成它。