我有一个使用datanucleus作为JPA提供商的Java GAE Web应用程序。 在我的本地计算机上部署时,部署会挂起(需要几分钟时间)。 查看任务管理器,我发现有一个javac进程正在运行。 有什么想法是出了什么问题吗?
我有一个使用datanucleus作为JPA提供商的Java GAE Web应用程序。 在我的本地计算机上部署时,部署会挂起(需要几分钟时间)。 查看任务管理器,我发现有一个javac进程正在运行。 有什么想法是出了什么问题吗?
同意。这是GAE的问题,它只有在进行6排列编译后才会部署应用程序并显示在浏览器上。我觉得这只是GAE的问题,而不是JPA的问题。我开发了一个类似的应用程序,如果您认为是因为JPA,您可以检查相应的数据库管理员以查看为用户打开了多少个线程。如果您发现一些线程没有被垃圾回收,请检查您的代码。否则,您可以使用ConnectionPooling机制(使用ORM加速数据库检索).....
这取决于您使用的平台
您可以通过检查信号来查看发生了什么
发送一个信号
Usage:
SendSignal <pid>
<pid> - send ctrl-break to process <pid> (hex ok)
You can get the source via anonymous CVS at
cvs -d :pserver:anon@www.latenighthacking.com:/code-cvsroot co 2003/SendSignal
答案取决于几个参数
无论如何,Thread Dump都可以帮助查看哪些非守护线程被卡住了。
对于在Windows上进行命令行部署-在它挂起后按下CtrlBreak获取线程转储
在Eclipse中,如果有一种以调试模式部署的方式,可以查看调试视图堆栈获取相同的信息。
还请参阅这个答案:How to Force Thread Dump in Eclipse?
我最近通过Eclipse将我的简单应用程序部署到Google App Engine,但是它在几次尝试后都未能成功部署。过了一段时间后,它终于成功部署了,我也能够访问该应用程序。如果出现卡顿情况,请停止部署进程并重新部署。