0

要求是:需要在点击链接时启动后台进程。

<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";
    }
4

0 回答 0