私はシリアル化、Wicket、マルチスレッドプロジェクトの経験が限られています。Wicketとマルチスレッドのビジネスオブジェクト
基本的に、私のWebアプリケーションクラスは、aを作成するPOJ(parentObject)をインスタンス化して、新しいタイマーを開始し、タイマーも持つ複数のPOJ(childObjects)をインスタンス化します。これらのchildObjectは、parentObjectクラスのリストに格納されます。私の改札アプリケーションのページはparentObjectにアクセスする必要があるので、私はそれがアクセスできるように作られた:
public Object getParentObject
{
return this.parentObject;
}
そしてそうのように、各ページに取得されます。
((MyApplication)Application.get()).getParentObject()
問題は現在、ということですTimerTaskを用parentObjectとchildObjectの両方が、毎分毎分呼び出されることはありません。私のログはparentObjectの最初の開始をピックアップしますが、ログメッセージは再び出力されません。これは、親オブジェクトのtimestaskのrun()メソッドが毎分実行されていないことを通知します。子オブジェクトについても同様です。タイマーは一度だけ実行されているようです。以下は、私が
public class childObject implements Serializable
{
private transient NamedParameterJdbcTemplate njt;
private transient Timer timer;
public childObject(DataSource ds)
{
this.njt = new NamedParamterJdbcTemplate(ds);
}
public void start()
{
timer = new Timer();
timer.schedule(new TimerTask(){
public void run()
{
//do some stuff that is never happening
}
}, 0, 60000);
}
}
public class ParentObject implements Serializable
{
private DataSource ds;
private List<ChildObject> childObjects;
private transient Timer;
public ParentObject(DataSource ds)
{
this.ds = ds;
//add some stuff to childObjects
timer = new Timer();
timer.schedule(new TimerTask(){
public void run()
{
for(some condition)
{
//Do some stuff
if(/*condition is met*/)
{
//starts the child's timer to do stuff
childObjects.get(i).start();
}
}
}
}, 0, 60000);
}
}
public MyApplication extends WebApplication
{
private ParentObject object;
private DataSource ds;
public void init()
{
super.init();
ApplicationContext context = new ClassPathXmlApplicationContext("/applicationContext.xml");
ds = (DataSource) context.getBean("dataSource");
parentObject = new ParentObject(ds);
}
}
を持っている何のためにいくつかの擬似コードは、私もこれらのオブジェクトがシリアライズようにする必要がありますでしょうか?文字列、整数、そのクラスのメンバである変数の日付の種類はありますが、オブジェクト自体はwicketコンポーネントには結び付けられません。
ええ、なぜあなたはあなたの[以前の質問](http://stackoverflow.com/questions/10181865/wicket-application-serialization-and-java-timers)を今日から(マイナーチェンジで)再投稿しましたか?オリジナルを編集して改善することはできますが、重複は追加しないでください。 – Jonik
質問は実際には全く反対です。 1つはスレッドが多すぎるという問題があり、何らかの理由でスレッドが強制終了されるようになりました。私はWicketが複数のスレッドを持つPOJを持っていないのはどうして私はまだ混乱していますが、artbristolのアドバイスをもっとも簡単な解決策のように見せています。 – thatidiotguy
ああ、ご容赦ください。それはほぼすべてが逐語的にコピーされている時を伝えることは難しいです(そして、私は実際にそれらを目で「分けて」分を費やしました)。一般的に、この種の継続質問は、あなたが他の質問にリンクしてコンテキストを提供し、あなたが求めている*新しい*質問が何であるかを非常にはっきりと説明すればもっと良いでしょう。キーポイントを強調表示します(太字など)。両方の場所ですべてのコードをコピー&ペーストしないでください。ちょうど関連する/異なる部分(もしあれば)。 – Jonik