当前位置: 首页 > 知识库问答 >
问题:

通过RMI从服务器上的方法调用隐藏实现超类发送接口对象?

关飞翔
2023-03-14
SuperNode implements Node
public Node RMIImplServer.getNode();

UnMarshalException:解封返回时出错;嵌套异常为:java.lang.ClassNotFoundException:seht.somePackage.supernode(没有安全管理器:RMI类加载器禁用)位于sun.RMI.server.unicastRef.Invoke(未知源)位于java.RMI.server.RemoteObjectInvocationHandler.InvokeRemoteMethod(未知源)位于java.RMI.server.RemoteObjectInvocationHandler.Invoke(未知源)位于com.sun.proxy。$proxy0.GetDataNodes(未知源)由:java.lang.ClassNotFoundException:seht.somePackage.supernode(没有安全管理器:RMI类加载器禁用)位于(未知源)位于sun.RMI.server.LoaderHandler.LoadClass(未知源)位于java.RMI.server.rmiclassLoader$2.LoadClass(未知源)位于java.RMI.server.rmiclassLoader.LoadClass(未知源)位于sun.RMI.server.MarshalInputStream.ResolveClass(未知源)位于java.io.ObjectInputStream.ReadNonProxyDesc(未知源)位于java.io.ObjectInputStream.ReadClassDesc(未知源)位于java.io.ObjectInputStream.ReadOrdinaryObject(未知源)e)java.io.objectInputStream.ReadObject0(未知源)在java.io.objectInputStream.ReadObject(未知源)在java.io.objectInputStream.ReadObject(未知源)在java.io.objectInputStream.ReadOdject(未知源)在java.io.objectInputStream.ReadOdject(未知源)在java.io.objectInputStream.ReadOdject(未知源)在java.io.objectInputStream.ReadOdject(未知源)在sun.reflect.nativeMethodAccessorInvoke0(未知源)在sun.reflect.nativeMethodAccessorInvoke0(aryObject(未知源)在java.io.ObjectInputStream.ReadObject0(未知源)在java.io.ObjectInputStream.ReadObject(未知源)在sun.rmi.server.unicastRef.UnMarshalValue(未知源)...5

是我正在努力做的可能,如果是这样,我做错了什么,任何帮助将是感激的。

最后弄明白了...jar文件没有包含正确的文件,因为我没有检查一个愚蠢的缺省。非常感谢EJP的帮助。

共有1个答案

董霖
2023-03-14

客户端不需要任何源文件。但是,它需要远程方法返回的所有类型的对象文件(.class)文件(在其类路径上可用),除非:

...如果您不想在客户端部署supernode.class或其他任何内容,则可以使用codebase特性。它很复杂.

  1. 您需要在客户端安装安全管理器。
  2. 您需要在服务器JVM上定义系统属性java.rmi.server.codeBase
  3. 您需要将其设置为一个或多个客户端可以理解的URL,并将其命名为包含要动态加载的类的JAR文件。通常,代码库项是HTTP URL。请注意,引用服务器本地文件系统的代码库项不能工作,因为客户端无法理解它。
 类似资料:
  • 我目前正在从事一个项目,该项目允许第三方连接到我们产品的消息代理。任务是提供一个第三方可以使用的库。我希望能够将公共交通或NServiceBus与之一起打包,但我希望将该细节隐藏在接口后面。 我把服务车藏起来了。。。 供应商不应该被允许发布/发送消息,而应该只消费。如何隐藏消息的消费,以便打包服务总线库而不暴露正在使用的库? 编辑1使用大众交通消费消息如下所示 在引导过程中,当您创建服务总线实例时

  • 我有一个Node.js通过Nginx设置,它涉及服务器发送的事件。 无论我的Nginx配置如何,sse的连接都会在60秒后断开并重新初始化。如果我直接在为应用程序提供服务的节点的端口上连接到应用程序,则不会发生这种情况,所以这显然是一些Nginx代理问题。 我希望sse连接没有超时。这可能吗?我尝试过调整、、和但它不会改变任何东西。下面是我的Nginx配置。

  • 本文向大家介绍SpringBoot服务上实现接口限流的方法,包括了SpringBoot服务上实现接口限流的方法的使用技巧和注意事项,需要的朋友参考一下 Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面。 在日常开发中,限流功能时常被使用,用于对某些接口进行限流熔断,譬如限制单位时间内接口访问次数;或者按照某种规则进行限流,如限制ip的单位时间访问次数等。 之前我们已经讲过接口限

  • 本文向大家介绍Nginx隐藏服务器端各类信息的方法,包括了Nginx隐藏服务器端各类信息的方法的使用技巧和注意事项,需要的朋友参考一下 有时我们不希望有人可以通过一些工具来返回我们服务器的信息,下面我来介绍在nginx中隐藏nginx响应头,修改nginx返回头信息,隐藏php版本号,隐藏服务器信息,同学可参考。 首先隐藏nginx版本信息,只需编辑 nginx.conf 文件 添加一行 响应头隐

  • 问题内容: 考虑以下情况, 在上面的例子中我得到以下输出这是 相当 期待。 我一直在阅读有关默认方法的信息, 尤其是 关于扩展包含默认方法的接口的信息 2 第二子弹:重新声明的默认方法,这使得它的抽象。 在上面的示例中,我有两个接口的默认方法具有相同的名称,并且当我实现这两个接口时,我只能实现对的引用。 我对此几乎没有疑问, 我怎样才能 到达 的方法 和 如果我不能比,为什么? 没有这种行为从本质

  • 我有一个客户端和一个服务器。它们通过使用以下命令创建的套接字进行通信: 套接字(AF_INET,SOCK_STREAM,0) 他们之间的交流很好。 我想创建第三个程序,充当服务器并向客户端发送假消息。此程序必须使用以前创建的客户端和服务器套接字。 我使用发送命令与套接字ID由我的静态设置 写入(插座号,消息,1024) 但是它不起作用(我不确定这是正确的方法)。 因此,我尝试了telnet和nc(