我需要啓動一個使用PortletPreferences對象的TimerTask。如何在沒有請求對象的情況下獲得PortletPreferences
這裏就是我現在(MyUpdateTask這裏延伸的TimerTask):
@ManagedBean(name = "myManagedBean", eager = true)
@ApplicationScoped
public class MyManagedBean implements Serializable {
static MyUpdateTask updateTask;
@PostConstruct
public void init(){
try {
PortletPreferences portletPrefs = ((PortletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getPreferences();
updateTask = new MyUpdateTask(portletPrefs);
MyTaskService.getInstance().update(updateTask);
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}
MyTaskService.update
使用,其產生的服務,定期更新我的數據的ScheduledExecutorService的。
我現在的問題是,((PortletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getPreferences();
拋出一個UnsupportedOperationException因爲目前沒有請求。如何在沒有請求的情況下獲得PortletPreferences?
我確實需要任務的PortletPreferences對象。
或者,如果您不需要動態修改計時器設置,則可以使用「」代替。然後,您可以通過調用'FacesContext.getCurrentInstance()。getExternalContext.getInitParam(「myTimerSetting」)'來獲得bean中的設置。 –
stiemannkj1
不幸的是,我目前沒有使用Liferay Portal。我正在使用WebSphere – Sirmyself
您可能想看看WebSphere Portal是否具有與上述Liferay的PortletPreferencesFactoryUtil類似的供應商特定/專用API。 –