我需要启动一个使用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。 –