EJB 3 Статическая ссылка или поиск во время выполнения? - PullRequest
1 голос
/ 26 сентября 2011

Я звоню в EJB из POJO, делая поиск JNDI. Я хочу знать, как лучше сделать поиск и каковы последствия каждого из них? У меня есть 2 варианта

  1. В статическом блоке POJO создайте статическую ссылку на EJB и используйте эту статическую ссылку во всех объектах

     public class MyPojo
    {      
    static  {   
        MyEJB ejb = (MyEJB) EJBServiceLocatorUtil.fetchService(IAppConstants.JNDI_LOCAL);
        }
         .....
    }
    
  2. Выполнять поиск JNDI каждый раз, когда я создаю новый объект

    public class MyPojo
    {
    public MyPojo(){
        MyEJB ejb = (MyEJB)     EJBServiceLocatorUtil.fetchService(IAppConstants.JNDI_LOCAL);
    }
    }
    

1 Ответ

1 голос
/ 26 сентября 2011

Опция 1 может завершиться ошибкой, если EJB еще не развернут или контекст JNDI недоступен. Может быть проблема переносимости с одного сервера приложений на другой.

Вариант 2 может занять много времени (поиск JNDI) в зависимости от того, как часто вы создаете экземпляр MyPojo.

Другим вариантом может быть использование реализации шаблона синглтона Билла Плаги: http://en.wikipedia.org/wiki/Singleton_pattern#The_solution_of_Bill_Pugh, где Singleton - ваш EJB. Поиск JNDI выполняется только один раз и лениво (при первом вызове).

Обратите внимание, что все эти параметры действительны только для сессионных компонентов без сохранения состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...