私のアプリケーションでは、次のコードが使用されています。強調表示されているコードについて詳しく説明できる人はいますか?
最初に強調表示されたブロックでは、Java リフレクションがメソッド handle_validation.. の呼び出しに使用されていることを理解しましたが、詳細な説明が必要です。
次に、2 番目に強調表示されたブロックで RemoteException がスローされます。
私の正確な質問は、EngineHandlerIF を呼び出すためにリフレクションを使用した理由と、この EngineHandlerIF で RMI を使用して EngineHandler のメソッドの定義を呼び出す理由です。
private static EngineHandlerIF init() {
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "validation.xml" });
String[] beans = ctx.getBeanDefinitionNames();
for (String string : beans) {
logger.info(string);
}
EngineHandlerIF engine = (EngineHandlerIF) ctx.getBean("engine");
return engine;
}
private Object callEngineMethod(MiddlewareMessage mmsg) {
Object resultObj;
try {
**String methodName = "handle_validation";
Method method = EngineHandlerIF.class.getDeclaredMethod(methodName, MiddlewareMessage.class);
method.setAccessible(true);
resultObj = method.invoke(engine, new Object[] { mmsg });**
} catch (Exception e) {
logger.error("sendMessage Exception: ", e);
return new Boolean(false);
}
return resultObj;
}
EngineHandlerIF:
----------------
**public abstract String handle_validation(MiddlewareMessage mmsg) throws RemoteException;**
EngineHandler:
--------------
public String handle_validation(MiddlewareMessage mmsg) throws Exception {
//some code
}