问题标签 [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.

0 投票
5 回答
18975 浏览

java - 将属性传递给 Spring 上下文

我正在使用 Spring 处理对某个远程服务器的 RMI 调用。构造应用程序上下文并从客户端获取远程调用的 bean 很简单:

但是,我没有看到将属性传递到配置中的简单方法。例如,如果我想在客户端运行时确定远程服务器的主机名。

理想情况下,我会在 Spring 上下文中有一个这样的条目:

并将属性作为参数从客户端传递给上下文。

我可以在上下文中使用 PropertyPlaceholderConfigurer 来替换这些属性,但据我所知,这仅适用于从文件中读取的属性。

我有一个解决这个问题的实现(作为答案添加),但我正在寻找一个标准的 Spring 实现以避免自己滚动。是否有另一个 Spring 配置器(或其他任何东西)来帮助初始化配置,或者我最好查看 java config 来实现这一点?

0 投票
3 回答
7611 浏览

java - 关闭 rmi 注册表

使用RMI将String对象从WebAppA传递给WebAppB。WebAppB是RMIServer,而WebAppA是RMIClient。我在WebAppB中添加了ContextListener,这样在tomcat中初始化上下文时rmi服务立即启动。并且在tomcat的contextDestroyed方法中我正在尝试使用以下语句关闭/关闭 rmi:

但即使在执行上述语句之后,rmi 仍在端口 3232 处侦听传入请求。我在命令提示符下使用“netsat -ano”看到了这一点。请帮我关闭 RMI 服务。

0 投票
1 回答
5059 浏览

java - 如何使用 Tomcat 隧道 RMI

我想将 RMI 设置为通过 java servlet 上的端口 80 ..(通过防火墙)我有一个 Tomcat 服务器,我正在寻找能够捕获 RMI http 请求并将其传递给服务器机器上的 RMI 层。我读过 RMI 会自动处理它。

有分步指南吗?或者只是一个要安装在服务器上的战争文件?

谢谢。

0 投票
3 回答
5506 浏览

java - 从 .NET 访问 Java RMI

我有一个使用 RMI 的现有基于 java 的系统。我无权更改此系统。

我希望能够直接从 .NET 调用 RMI api 方法。实现这一目标的最佳方法是什么?如果它是第三方组件,则首选免费或低成本。

谢谢

0 投票
2 回答
26323 浏览

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,

马库斯

0 投票
4 回答
8849 浏览

java - 如何使用 Java RMI 实现观察者模式?

我有一个客户端在服务器上启动一个长时间运行的进程。每隔一段时间,我想向用户展示后台发生的事情。最简单的方法是轮询服务器,但我想知道是否没有办法为此实现观察者模式。不幸的是,我正在使用 RMI 与服务器通信,我担心我必须为此将我的客户端变成 RMI 服务器。

还有另一种我想念的方式吗?

0 投票
2 回答
6136 浏览

java - 远程 JMX 调用因 ClassNotFoundException 失败:...(无安全管理器:RMI 类加载器已禁用

我尝试从 Tomcat 的 Web 应用程序调用 MBean 的方法。目标 MBean 在 JBoss 4.2.3 下运行。Tomcat 和 JBoss 应用程序都使用具有相同类的相同版本的 jar,但在调用时我看到以下异常:

我认为 JBoss 不使用自己的类,而是尝试从某个地方下载该类,但由于“没有安全管理器:RMI 类加载器已禁用”而失败。但是如何改变这种行为来使用本地已经加载的类。或者也许我猜错了..?

0 投票
2 回答
832 浏览

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并不好。

我究竟做错了什么?

谢谢!

0 投票
2 回答
614 浏览

java - 使用 Java RMI,序列化对象究竟何时通过网络传输?

我正在使用 RMI 来实现一些分布式算法,并且由于我们正在传输相当大的对象,我想要一些关于 RMI 何时通过网络传输序列化对象的精度。

假设我有一个具有以下方法的 Remote 类。

现在,我有两个(或更多)RMI 客户端调用 MyServer.foo 方法。当客户端 1调用它时,它在Thread.wait()中被阻塞。然后,客户端 2调用foo并被阻塞,因为客户端 1 仍在同步的foo方法中。

现在,问题是:Client 2调用的bar参数何时通过网络传输?只有一次客户端 2可以实际进入foo方法或之前,当它被阻塞时?

额外的问题:这是(传输对象的时间)是由 RMI 规范强制执行的行为,还是特定于实现的行为?

0 投票
2 回答
3774 浏览

spring - Spring 中的 RMIPRoxyFactoryBean 工厂?

我目前正在使用 SpringRmiProxyFactoryBean来访问远程服务。由于需求发生了变化,我需要在运行时指定一个不同的主机 - 可以有很多 - ,但remoteServiceInterface和非主机组件remoteServiceUrl保持不变。

从概念上讲,我会看到一个类似于以下内容的 bean 定义:

这暴露了一个

Spring有这样的服务吗?或者,您是否看到另一种方法?


请注意,在编译或启动时将知道主机列表,因此我无法在 xml 文件中生成它。