2009-04-07 37 views
1

我有一个系统,我需要distrubte的作品如下。由tomcat服务的Servlet启动并产生大量共享(分布式)字段的线程。 Ergo,我将线程设置为根,并尝试从我的servlet构造函数中正常产生线程。但是,日志表明我试图共享构造函数的Runnable永远不会结束。什么会造成这种情况?关于兵马俑和Servlets /共享线程

在我的servlet中,我有一个线程实例,我试图以root身份共享,并且日志表明一切都很好,直到实现runnable的类(UpdaterThread)的构造函数结束。

我有以下几点:

的Servlet:

打印 “创建新线程”; updaterThread = new UpdaterThread(args); 打印“启动线程”。 new Thread(updaterThread).start();

现在,我从来没有在我的tomcat控制台输出中看到“启动线程”,尽管我可以看到所有的打印语句直到UpdaterThread构造函数的末尾。 UpdaterThread维护对一个映射(由servlet共享),一个String,一个SQL连接,一个Statement,一个ReentrantReadWriteLock,一个Long以及一个临时布尔值和Long不被共享的引用。

在UpdaterThread的构造函数中,我传递了对共享映射和字符串值的引用。没有陶器启用,我可以超越这一点。什么会导致tomcat和兵马俑挂没有任何形式的错误信息?在调用后面的方法之前,不会使用rrwl锁,但在程序执行过程中,我永远不会那么做。帮帮我?

回答

2

已解决。我不得不重新启动Terracotta服务器,然后让我看到错误,指出Statement和Connection是需要暂时生成的不可移植类。