gpt4 book ai didi

java - RMI 异常处理

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:35 25 4
gpt4 key购买 nike

我有一个常见问题,我想听听您对最佳解决方法的意见。

假设您有一个在分布式服务器系统上运行的应用程序。比方说前端和后端服务器。通过 RMI 调用后端服务器上的方法。

后端 java 进程通常需要与前端 java 进程不同的库。有可能后台出现运行时异常。抛出的异常不会被后端捕获,因此它会传送到前端服务器。现在的问题是前端不知道异常,因为包不在类路径中(例如 EJBTransactionRolledBackException)。抛出另一个异常 - ClassNotFoundException。这使得无法查看执行发生的位置,因为堆栈跟踪不包括来自后端服务器的堆栈。我能想到的另一种场景是无法序列化异常。

你是如何解决这个问题的?我能否以某种方式记录抛出的任何运行时异常,而无需构建 try ... catch 和 rethrow block ?

最佳答案

Methods on the backend server are called through RMI.

嗯,这就是您的问题。 :-)

说真的,处理这个问题最简单的方法可能是在服务器上设置以下属性:

-Dsun.rmi.server.exceptionTrace=true

这将为您提供服务器端的异常堆栈跟踪。它不会修复客户端的 ClassNotFoundException,但至少当发生这种情况时,您知道要挖掘服务器日志以查找更多信息。

此处记录了其他有用的 RMI 属性:

http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/javarmiproperties.html

http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/sunrmiproperties.html

关于java - RMI 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12055745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com