Предложения по реализации вызовов методов на основе параметра, переданного сервлету - PullRequest
0 голосов
/ 22 сентября 2010

Я хотел бы получить некоторые предложения по реализации решения, которое вызывает методы ejb на основе параметров, которые я передаю сервлету.

У меня есть веб-проект и проект ejb 3.0. Ejbs вызываются из сервлета в веб-проекте.

ejbs вызываются на основе параметров, которые я передаю сервлету. Для каждого действия, которое мне нужно выполнить, я передаю сервлету определенный параметр, скажем, task . Например, если задача равна fetchEmployee , она вызовет определенный метод компонента, например: - fetchEmployeeDetails () .Если задача равно deleteEmployee , он должен вызывать другой метод бина.

У меня есть следующие опции:

  • if / else или метод переключения регистра. Это становится грязным и неуправляемым, когда количество задач увеличивается как угодно.

  • сопоставление задач и классов компонентов в файле конфигурации xml, а затем чтение его с помощью Digester

  • Использование ServletFilter для выполнения некоторых действий на основе переданных параметров.

Может кто-нибудь любезно предложить чистый / элегантный метод для реализации этого?

1 Ответ

0 голосов
/ 22 сентября 2010

Вы можете использовать динамический вызов метода для вашего ejb.

Вы можете запросить класс интерфейса для дескриптора метода, основанного на имени и сигнатуре параметра.

Method method = bean.getClass().getMethod(task,paramTypes);

Отображать параметры немного беспорядочно, если вы не делаете свою жизньлегко и всегда передавать hashmap или подобное.В любом случае из запроса вы получите только строки, поэтому в любом случае необходимо выполнить санитарную обработку и перевод.

Затем вы вызываете метод:

Object[] args = new Object[]{paramMap};
String result = method.invoke(method, args);
...