PortletPreferencesオブジェクトを使用するTimerTaskを開始する必要があります。要求オブジェクトなしでPortletPreferencesを取得する方法
@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を使用しています。
は、ここで私は(MyUpdateTaskがここにTimerTaskをを拡張する)今のところ持っているものです。
私は今すぐに問題があります。((PortletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getPreferences();
は、現在のところ要求がないため、UnsupportedOperationExceptionをスローします。リクエストなしでPortletPreferencesを取得するにはどうすればよいですか?
タスクのPortletPreferencesオブジェクトが必要です。
また、タイマー設定を動的に変更する必要がない場合は、代わりに「」を使用できます。次に、 'FacesContext.getCurrentInstance()。getExternalContext.getInitParam(" myTimerSetting ")'を呼び出すことによって、Beanの設定を取得できます。 –
stiemannkj1
残念ながら、私は現在Liferayポータルを使用していません。私はWebSphereを使用しています – Sirmyself
上記のLiferayのPortletPreferencesFactoryUtilに似たベンダー固有の/独自のAPIがWebSphere Portalにあるかどうかを確認することができます。 –