내가 아는 한 FacesContext는 요청 범위에서만 사용할 수 있습니다. FacesContext의 인스턴스를받는 스레드를 만들었지 만 null을 반환합니다.JSF가 요청 외부 FacesContext를 수신합니다.
요점은 응용 프로그램 범위 콩을 10 초마다 업데이트하는 것입니다.
스레드의 실행 방법 :
은@Override
public void run()
{
while (true)
{
try
{
TimeView timeView = (TimeView)FacesContext.getCurrentInstance().
getExternalContext().getApplicationMap().get("timeView");
// FacesContext.getCurrentInstalce() returns null
timeView.update();
Thread.sleep(10000);
}
catch (InterruptedException ex)
{
System.out.println(ex);
}
}
}
(나는 건너 뛴의 getter/setter를 한)
TimeView에서의 헤더 :
이@ManagedBean(eager=true, name="timeView")
@ApplicationScoped
public class TimeView implements Serializable
{
private int hour;
private int minutes;
private int seconds;
public TimeView()
{
update();
}
public void update()
{
Date date = new Date();
setHour(date.getHours());
setMinutes(date.getMinutes());
setSeconds(date.getSeconds());
}
얼굴-config.xml에 : 그래서
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<managed-bean>
<managed-bean-name>timeView</managed-bean-name>
<managed-bean-class>foogame.viewBeans.TimeView</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
</faces-config>
가있다 이 스레드에서 응용 프로그램 범위의 bean에 대한 refference를받는 방법이 있습니까?
ejbs를 사용하고 있습니까? –
나는 그것이 무엇인지 전혀 모른다. –