我正在实现一个抛出ApplicationExceptions 的会话bean .这些异常具有链式堆栈跟踪,这些跟踪可能包含客户端上不可用的类的异常.就像是:
@Override
public void doSomethingSpecial(MyObject o) throws MyException {
try {
legacySystem.handle(o);
} catch (LegacyException e) {
logger.warn(e.getMessage(), e);
throw new MyException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,客户端可能会获得一个没有类的异常.这可能导致:
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at sun.proxy.$Proxy0.doSomethingSpecial(Unknown Source)
at com.myapp.client.Client.main(Client.java:56)
Caused by: java.lang.ClassNotFoundException: MyLegacyException
Run Code Online (Sandbox Code Playgroud)
我不希望客户端知道可以在服务器端抛出的所有可能的异常,但是拥有堆栈跟踪永远不会坏.
你是如何处理这些问题的?Interceptor在将异常发送回客户端时,实现将堆栈跟踪解耦的可行解决方案是什么?但是那时Interceptor应该只处理通过的调用RemoteInterface,因为内部我对整个堆栈跟踪感兴趣.
移...
我要做点什么,这会扭曲我的想法.
我得到一个十六进制值为String(例如:"AFFE")并且必须决定,如果设置了字节1的第5位.
public boolean isBitSet(String hexValue) {
//enter your code here
return "no idea".equals("no idea")
}
Run Code Online (Sandbox Code Playgroud)
任何提示?
问候,
Boskop
我在JEE应用程序中有一些SessionBeans,并且喜欢使用BeanValidation来验证我的参数.因此整个验证过程是通用的,并封装在一个地方.
我看到的唯一缺点是客户端得到EJBException并且必须打开主要的Exception.还有一些我看不到的问题或脏东西,甚至是更好的方法吗?