要約:@PreDestroyをApplication ScopeマネージドBeanのリサイクル\タイムアウト時にトリガーする方法を知っている人はいますか?Xpages @PreDestroy
私は、「スケジュールされたエージェント」について数週間前質問投稿:すべてのロジックがデザインの中に含まれるよう30 sec periodic task to poll external web service and cache data ...私はこれまでスレッドを使用して正常に実装(現時点ではこの方法で行ってきましたアプリケーションスコープのバッキングBeanからスレッドを\ cancel \ pause \ restartを再起動することができます。しかし、副作用は、スレッドを開始するバッキングBeanがリサイクルされるとき、スレッドは実行を継続するということです。アプリケーションスコープBeanで@PreDestroyを使用してキャンセルスレッドメソッドを呼び出すメソッドがありますが、呼び出されないようです。
私はこのリンクをIBMから見つけました: LO67255:MANAGED BEANS ANNOTATION - @POSTCONSTRUCTと@PREDESTROYは期待通りに動作していません。 http://www-01.ibm.com/support/docview.wss?crawler=1&uid=swg1LO67255 ...しかし、私はその記事にアクセスするためのアクセス権がありませんので、結果が...動作しないかどうかはわかりません。
非常に簡単なテストクラスがあることを実証するために、ここに最後の投稿があるため、上にいくつかの冗長なライブラリをインポートしました:https://community.jboss.org/thread/179819がXPageのjavax.enterprise。*にアクセスできません。
私はテストのためにDB XPageのプロパティ "Application Timeout"に "recycling"を1に設定しました。単純なページ呼び出し(以下を参照)で... 1分待っていると、コンストラクタが起動しているのを見ることができますが、@PreDestroyとPostConstructは決して呼び出されません。
コメントや提案については...事前に感謝します。
ニック
import javax.annotation.*;
import java.util.Date;
import javax.annotation.PreDestroy;
import javax.faces.context.*;
import javax.faces.lifecycle.*;
public class Junk {
public Junk(){
System.out.println("Junk.constructor()");
}
@PostConstruct
public void afterOpen(){
System.out.println("Junk.afterOpen() Resource after open...");
}
/**
*
* @return
*/
public String getJunkDate(){
String res = "";
Date d = new Date();
try{
System.out.println("Junk.getJunkDate()==e");
res = d.toLocaleString();
}catch(Exception e){
e.printStackTrace();
}
return res;
}
@PreDestroy
public void destroy(){
System.out.println("Junk.destroy()...!");
}
public void finalize(){
System.out.println("Junk.finalize()...!");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:panel id="panel1">
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="panel1">
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:text escape="true" id="computedField1" value="#{javascript:Junk.junkDate}">
</xp:text></xp:panel>
</xp:view>
コメントするビットがありますが、感謝のTim。 –