Spring 似乎正在弃用它的 RMI:
从 Spring Framework 5.3 开始,出于安全原因和更广泛的行业支持,现已弃用对多种远程技术的支持。支持基础设施将从 Spring Framework 的下一个主要版本中删除。
但我找不到任何简单的等效替代方案。REST 听起来像是简单事物的最佳选择,但它不涵盖任务长时间运行和/或需要连续结果流的解决方案。因此,使用 REST 来实现会非常痛苦。有些人考虑通过 REST 将任务提交到队列,然后可能单独查询结果 - 但这听起来像是一种矫枉过正,并且使过去可用的非常简单的任务所需的工作量变得非常高。
是否有一个好的替代方案或一些使用未弃用技术并且正式可用的框架来处理上述问题?当某些东西被弃用时,通常表明有更好的东西可用,这将是更好的解决方案,那么有人可以帮助我教育我它是什么吗?
我需要公开一些服务供Java客户端远程使用(他们应该使用httpinvoker)和其他语言(他们应该使用REST).
我可以配置弹簧启动来暴露两者吗?(我不介意是否会使用两个具有不同端口的独立实例,如本文所述).
我倾向于为内部使用REST 的Java客户端提供API,因为使用RestTemplate.
HttpInvoker的概念手动将所有REST端点连接到代码中是相当繁琐的,因为ProxyFactoryBean自动使用了它.如果Spring Remoting 能够以某种方式完成这项工作,那么可以为JMS,AMQP和其他人做到这一点.
我有一个 Spring webapp,它使用 HttpInvoker 连接到 Spring Boot 服务。我最近更新了服务项目以使用 Java 11,同时将其更新为 Spring Boot starter 2.1.3.RELEASE。服务项目提供了一个接口 jar,其中包含使用 HttpInvoker 时所需的所有请求和响应对象以及接口类。
我遇到了这个错误,但仅限于某些服务端点。我一直试图找出成功请求和失败请求之间的区别,但没有成功。
我试图解决问题的事情
谁能指出我正确的方向来解决这个问题......我现在真的在挠头
此错误的主要问题是服务接收来自 webapp 的请求,处理请求,然后响应。在远程回调的某个地方,我收到此错误,我的 web 应用程序响应异常,但在后台请求已成功完成。
以下是堆栈跟踪的一部分,我故意遗漏了一些,如果您需要更多信息,请告诉我。
java.io.StreamCorruptedException: Inconsistent vector internals
at java.base/java.util.Vector.readObject(Vector.java:1191) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1160) ~[na:na]
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2216) ~[na:na]
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2087) ~[na:na]
at …Run Code Online (Sandbox Code Playgroud)