无法从通过Eclipse启动的Tomcat服务器重新连接到Derby

无法从通过Eclipse启动的Tomcat服务器重新连接到Derby,eclipse,tomcat,derby,Eclipse,Tomcat,Derby,我在Win7上运行,使用Eclipse4.2在Tomcat7服务器上启动一个web应用程序,并使用Derby数据库。我尝试了许多方法,但始终遇到一个常见问题: 在我第一次启动和运行时,一切正常 更改后重新部署应用程序时,所有数据库连接都会挂起(任何类型的重新启动) 如果我停止Eclipse并重新启动Eclipse,那么问题就解决了,下一次运行也可以正常运行 做了一些调查之后,问题似乎是Derby端口(1527)没有从服务器的一次执行释放到下一次执行。这对我来说似乎很奇怪,因为Derby是由T

我在Win7上运行,使用Eclipse4.2在Tomcat7服务器上启动一个web应用程序,并使用Derby数据库。我尝试了许多方法,但始终遇到一个常见问题:

  • 在我第一次启动和运行时,一切正常
  • 更改后重新部署应用程序时,所有数据库连接都会挂起(任何类型的重新启动)
  • 如果我停止Eclipse并重新启动Eclipse,那么问题就解决了,下一次运行也可以正常运行
做了一些调查之后,问题似乎是Derby端口(1527)没有从服务器的一次执行释放到下一次执行。这对我来说似乎很奇怪,因为Derby是由Tomcat实例启动的,它是一个独立的javaw进程

我试过:

  • 将Derby连接配置为Tomcat资源
  • 在我的代码中建立连接(而不是通过Tomcat资源)
  • 嵌入式和网络驱动程序
  • 在启动和关闭Tomcat服务器时从servlet启动/停止网络驱动程序
  • 关闭Tomcat时通过servlet关闭嵌入式驱动程序
同样,每种方法都可以在第一次连接时正常工作

另一个似乎与此无关的症状(作为关机是否正确完成的可能指标除外)是,我的数据库的db.lck文件从未被删除。然而,它是否存在与我是否可以重新连接没有关系(只有停止/启动eclipse才有影响)

如有任何见解,将不胜感激。
谢谢

经过进一步调查,我将称之为:。这不是完全相同的事情,但该解决方案(创建META-INF/context.xml)允许它继续进行失败的调用,而不是挂起,这是一个显著的改进,并表明这在很大程度上是相关的。

我终于弄明白了这一点。事实证明,derby JAR位于Tomcat lib文件夹(对于Tomcat)和Eclipse中应用程序的部署程序集中(而不仅仅是在构建路径中)。所以Tomcat使用的是内置的libs,而我的应用程序使用的是嵌入式libs,这导致了冲突。将LIB作为Tomcat的一部分并从我的war文件中删除完全解决了这个问题。

您的问题令人困惑:您曾经谈到“Derby端口(1527)”,而后来谈到“嵌入式驱动程序”和“db.lck文件”。你似乎在尝试很多不同的事情,这使得你很难给出具体的建议。Derby连接几乎从不“挂起”。相反,它们给出了例外情况。那么,在你的程序中,你到底遇到了什么样的异常呢?打印所有细节并将其添加到您的问题中:这是我问题的一部分-没有例外。是的,四处游荡,试着做很多事情来发现问题并让它工作。我现在想知道这个问题是否与数据库无关(尽管在我尝试连接到数据库时它已经表现出来)。我设置了一个单独的MySQL服务器,这样我就可以连接到一个单独的数据库,我遇到了一些类似的问题。需要进行更多的调查。即使使用单独的MySQL数据库,从Tomcat重新部署应用程序也会导致除简单页面请求之外的任何其他应用程序挂起。因此,它与Derby无关(尽管当我使用数据库进行调用时,挂起似乎会发生;而不使用数据库的web请求则会工作)。如果您有任何建议,我将不胜感激。我得到的是返回错误而不是挂起。我通过以下说明完成了此操作:。