要件は次のとおりです。リンクのクリック時にバックグラウンド プロセスを開始する必要があります。
<h:commandLink action="#{myBean.generateReport}">
<h:outputText value="Generate Report"/>
</h:commandLink>
スレッド内 - run(),
@Override
public void run()
{
createReport();
}
createReport メソッドでは、
public String createReport()
{
DatabaseAPI data = new DatabaseAPI();
MyUser ip_user = (MyUser) sesFactory.get().getAttribute(ProjConstants.SESSION_USER_VAR);
try
{
data.generateReportFunction( .. arguments ..)
}
catch (Exception e)
{
e.printStackTrace();
return "failure";
}
return "success";
}
createReport メソッドでは、次の行でスレッドが停止します。
DatabaseAPI data = new DatabaseAPI();
その行にコメントすると、次の行で停止します。
MyUser ip_user = (MyUser) sesFactory.get().getAttribute(ProjConstants.SESSION_USER_VAR);
私の管理対象 Bean のスコープは次のとおりです。
以下のようにいくつかの行にコメントしても、スレッドは停止します
public String createReport()
{
DatabaseAPI data = new DatabaseAPI();
//MyUser ip_user = (MyUser) sesFactory.get().getAttribute(ProjConstants.SESSION_USER_VAR);
try
{
// data.generateReportFunction( .. arguments ..)
}
catch (Exception e)
{
e.printStackTrace();
return "failure";
}
return "success";
}