我想获得一些关于实现基于我传递给servlet的参数调用ejb方法的解决方案的建议。
我有一个Web项目和一个ejb 3.0项目。从Web项目中的servlet调用ejbs。
根据我传递给servlet的参数调用ejbs。对于我需要执行的每个操作,我将一个明确的参数说, task 传递给servlet。例如,如果任务等于 fetchEmployee ,它将调用bean的特定方法,例如: - fetchEmployeeDetails()。如果< em> task 等于 deleteEmployee ,它应该调用不同的bean方法。
我有以下选择:
if / else或switch case方法。当任务数量增加时,这变得混乱和无法管理。
将任务和bean类映射到xml配置文件中,然后使用Digester
使用ServletFilter根据传递的参数执行某些操作。
有人可以建议一个干净/优雅的方法来实现这个吗?
答案 0 :(得分:0)
您可以在ejb上使用动态方法调用。
您可以根据名称和参数签名向接口的类询问方法句柄。
Method method = bean.getClass().getMethod(task,paramTypes);
映射参数会有点麻烦,除非你让生活轻松并且总是传递一个hashmap或类似的东西。无论如何,您只能从请求中获得字符串,因此无论如何都必须进行卫生和翻译。
然后你调用方法:
Object[] args = new Object[]{paramMap};
String result = method.invoke(method, args);