【发布时间】:2014-04-20 22:01:26
【问题描述】:
我在 Win 7 上运行,使用 Eclipse 4.2 在 Tomcat 7 服务器上启动 Web 应用程序并使用 Derby 数据库。我尝试了很多方法,但始终遇到一个常见问题:
- 我第一次启动和运行时一切正常。
- 当我在更改后重新部署应用程序时,所有数据库连接都会挂起(任何类型的重新启动)。
- 如果我停止 Eclipse 并重新启动 Eclipse,那么问题就解决了,下一次运行又可以正常工作了。
经过一些调查,问题似乎在于 Derby 端口 (1527) 没有从服务器的一次执行释放到下一次执行。这对我来说似乎很奇怪,因为 Derby 是由 Tomcat 实例启动的,它是一个单独的 javaw 进程。
我试过了:
- 将 Derby 连接配置为 Tomcat 资源
- 在我的代码中建立连接(而不是通过 Tomcat 资源)
- 嵌入式和网络驱动程序
- 在启动和关闭 Tomcat 服务器时从 servlet 启动/停止网络驱动程序
- 在关闭 Tomcat 时通过 servlet 关闭嵌入式驱动程序
同样,每种方法都可以在第一次连接时正常工作。
另一个似乎不相关的症状(除了作为关闭是否正确完成的可能指标)是我的数据库的 db.lck 文件永远不会被删除。但是,它是否存在与我是否可以重新连接无关(只有停止/启动 eclipse 有影响)。
任何见解将不胜感激。 谢谢!
【问题讨论】:
-
您的问题令人困惑:有一次您谈论“Derby 端口(1527)”,而后来您谈论“嵌入式驱动程序”和“db.lck 文件”。看起来你正在尝试很多不同的事情,这使得你很难给你具体的建议。德比连接几乎从不“挂起”。相反,他们给出了例外。那么,您的程序到底遇到了什么异常?打印所有详细信息并将它们添加到您的问题中:wiki.apache.org/db-derby/UnwindExceptionChain
-
这是我的问题的一部分——没有例外。是的,徘徊,尝试了很多事情来识别问题并让它发挥作用。我现在想知道问题是否可能不是数据库(尽管它在我尝试连接到数据库时表现出来)。我设置了一个单独的 MySQL 服务器,所以我可以连接到一个单独的数据库,我遇到了一些类似的问题。需要进行更多调查。
-
即使使用单独的 MySQL 数据库,从 Tomcat 重新部署应用程序也会导致除简单页面请求之外的任何内容挂起。所以它与 Derby 无关(尽管当我使用数据库进行调用时确实会出现挂起;不使用数据库的 Web 请求工作)。任何建议将不胜感激。
-
我让它返回错误而不是挂起。我是按照此处的说明进行操作的:stackoverflow.com/questions/11516747/….