要求是:需要在点击链接时启动后台进程。
<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";
}