Нет сеансов во время запуска приложения;это требование невозможно выполнить.
Я интерпретирую ваши требования следующим образом:
- выполнить дорогостоящее вычисление области применения
- внедрить этот результат области применения в другие области
Способ JSF сделать это через управляемые bean-компоненты.Вот бин области приложения, который выполняет однократное преобразование параметра контекста:
package foo;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
@ManagedBean
@ApplicationScoped
public class SomeCalculationsBean {
@ManagedProperty("#{initParam.paraA}")
private String paraA;
private String someCalculation;
public String getParaA() {
return paraA;
}
public void setParaA(String paraA) {
this.paraA = paraA;
this.someCalculation = //do some transformation
}
public String getSomeCalculation() {
return someCalculation;
}
}
Это значение затем может быть введено в другие области по мере необходимости:
package foo;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class SomeSessionBean {
@ManagedProperty("#{someCalculationsBean.someCalculation}")
private String paraB;
public String getParaB() {
return paraB;
}
public void setParaB(String paraB) {
this.paraB = paraB;
}
}
Код не проверен.Эта реализация предполагает поддержку аннотаций JSF, но вы можете сделать то же самое с faces-config.xml
конфигурацией компонента.