所以我有一个系列化,检票比较有限经验,以及多线程项目如此忍受我。
基本上我的web应用程序的类实例化一个POJ(parentObject),它创建了一个启动一个新的计时器和实例几个POJs(childObjects)也有他们的计时器。 这些childObjects存储在parentObject类的列表。 在我的检票应用程序页面需要访问parentObject,所以我把它作为访问这样:
public Object getParentObject
{
return this.parentObject;
}
正是在像这样每个页面检索:
((MyApplication)Application.get()).getParentObject()
这个问题目前是两者的parentObject和childObjects一个TimerTask不再被称为他们应该是每一分钟。 我的日志拿起parentObject的首次启动,但永远不会再输出的日志消息信令没有被执行的每一分钟父对象的的TimerTask的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);
}
}
我甚至需要使这些对象序列化? 这些对象本身永远都不会被连接到检票口的部件,尽管字符串,整数,这是他们班的成员日期各种各样的变量。