我有一个我不信任的C库(从某种意义上说,它可能经常崩溃)。我从Java进程中调用它。

为了防止C库崩溃导致整个Java应用程序崩溃。向下,我认为最好是为该库生成一个专用的Java进程,并使其与Java应用程序交互。通过套接字编程或RMI。然后,如果发生崩溃,我可以再生成一个并继续处理。
ProcessBuilder是可行的方式吗?还是还有其他更简单的方法?

谢谢!

最佳答案

是的,在单独的Java进程中托管 native 代码是保护您的应用程序不受 native 代码攻击的唯一方法。

至于更简单的方法,只是实现上的细微差异。例如,不要从Java应用程序中生成代码,也不要将 native 代码包装在配置为自动启动的 native 包装器中。如果您具有C和套接字的知识,这将简化解决方案。用这种方法,RMI并不是最佳选择。

即使将 native 代码包装在Java中,我仍然不会选择RMI。我在WAN上使用Windows遇到网络问题。如果可能的话,我会保持简单的沟通。如果数据太复杂,则可能是基本的序列化库。如果您遵循XML路线,则有几种选择。这太过分了,但是您也可以嵌入http服务器和Web服务层。我不知道您的系统要求,

恢复将带来各种挑战。如果它停止响应,您是否只是生成另一个进程...您愿意执行多少次... Java的进程管理,还有很多需要改进的地方。

10-07 20:00
查看更多