まず、これはかなり特定の問題である可能性があることを認めなければなりません。JavaServer Facesアプリケーションで、サーバー側でスクリプトを実行してユーザーと対話できるようにしたいと思います。
詳細を説明するために、私がやりたいことの例を示します。私のアプリケーションでは、ユーザーはデータを入力でき、サーバー側にはこのデータをチェック/変更できるスクリプトがあります。ユーザーがカスタムスクリプトを作成できるため、正確なスクリプトはわかりません。全体として、これまでのところ問題はありませんが、スクリプトでは、質問ダイアログの方法でユーザーと対話することができます。次の例では、それ以降のスクリプトの実行はユーザーの回答によって異なります。
...
if( inputData.equals("Something") ){
if( askUser("Question?","Some question...") )
{
doSomething();
}
else
{
doSomethingElse();
}
}
...
ご覧のとおり、メソッド「askUser」は、スクリプトを続行する前に結果を待機する必要があります。スクリプト自体はBeanshellスクリプトであり、メソッド「askUser」はBeanshellインタープリターによって呼び出されるJavaメソッドです。
スレッドとJava同期メソッドを使用してスクリプトを一時停止することを考えていましたが、EJBではスレッドの作成は許可されていません。それでも私はその方法を試しましたが、FacesContextがユーザー作成のスレッドで利用できないために失敗しました。
私の意図を明確にできればと思います。これをどのように行うことができるか、ご存知の方もいらっしゃると思います。よろしくお願いします。:)