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