Список управляемых bean-компонентов JSF - PullRequest
0 голосов
/ 22 октября 2011

Мой обработчик JSF определен в области запроса следующим образом

public class JsfHandler {
  private List<ManagedBean>  managedBeanList;   // managed bean List in session scope
}

    <managed-bean>
        <managed-bean-name>jsfHandler</managed-bean-name>
        <managed-bean-class>com.test.JsfHandler</managed-bean-class>
         <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>managedBeanList</property-name>
            <value>#{managedBeanList}</value>
        </managed-property>
      </managed-bean>

У меня есть список управляемых bean-компонентов JSF в JSF, определенный следующим образом.

   <managed-bean>
      <managed-bean-name>managedBeanList</managed-bean-name>
      <managed-bean-class>java.util.ArrayList</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
   </managed-bean>

Подход 1:

managedBeanList.clear();
managedBeanList.addAll(service.getResultList());  
// assuming service.getResultList() would return a new ArrayList();

Подход 2:

managedBeanList =  service.getResultList();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("managedBeanList",managedBeanList);

В настоящее время мы используем подход 1.

Правильный ли подход 2? Есть ли какое-то преимущество с точки зрения использования памяти, когда сборщик Java Garabage вызывается в appraoch 2.

1 Ответ

1 голос
/ 22 октября 2011

Ни один из них не является правильным.Этот список должен быть свойством управляемого EJB-объекта области сеанса.Вам следует избегать как можно большего количества ручных манипуляций с картой сеанса.

Ни один из них не является более "дружественным к ГК", чем другой.При подходе 1 вы получите экземпляр, на который нет ссылок в списке, который возвращается service.getResultList().Во втором подходе вы получите экземпляр списка без ссылок, на который ранее ссылалась managedBeanList.В обоих случаях сборщик мусора должен выполнить одну и ту же работу: очистить экземпляр без ссылки.

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