|
39
|
| Paul de Vrieze · 技术社区 · 17 年前 |
|
|
1
38
不知道这是否会是每个人的答案,但经过一些挖掘,我们得出了以下结论。 这个错误显然是由于侦听器不接受连接这一事实造成的,但是当其他测试可以正常连接时(我们也可以通过sqlplus无问题连接),为什么我们会得到这个错误呢?问题的关键不是我们无法连接,而是 间歇的 经过一些调查,我们发现在类设置期间创建了一些静态数据,这些静态数据将在测试类的生命周期中保持开放的连接,并在运行过程中创建新的连接。现在,即使当这个类超出作用域时(当然是通过一个finally块),所有的资源都被正确地释放了,在运行期间,有一些情况下,这个类会吞没所有可用的连接(好的,坏的实践警报-这是直接连接的单元测试代码,而不是使用池,所以同样的问题无法在生产中发生)。 修复方法不是使该类成为静态的并在类设置中运行,而是在每个方法设置和拆卸方法中使用它。 所以,如果你在自己的应用程序中发现了这个错误,就给那个坏小子一个剖析器,看看你是否有连接泄漏。希望有帮助。 |
|
|
2
26
我发现的另一个类似错误的解决方案是增加找到的服务处理程序的数量。(我的此错误实例是由于WebLogic门户连接池中的连接太多而导致的。)
从这里: |
|
3
3
我也有同样的问题,我在很多地方寻找答案。我得到了许多类似的答案来更改流程/服务处理程序的数量。但我想,如果我忘了把它复位怎么办?
然后我试着用
我不知道怎么做,但至少对我有用。 如果有人想尝试一下,想知道它是如何工作的,请继续。我也想知道,因为我是编程界的初学者。 |
|
|
4
1
我也有类似的问题。每当我运行一组数据库(SpringJDBC)测试时,
|
|
|
5
1
我在一个单元测试中遇到了这个问题,这个单元测试通过一个连接池打开了很多到DB的连接,然后“停止”了连接池(实际上是ManagedDataSource),以在每个测试结束时释放连接。在这套测试中,我总是在某个时刻失去连接。 在我的测试的teardown()中添加了thread.sleep(500),这解决了这个问题。我认为发生的情况是,连接池stop()释放另一个线程中的活动连接,这样,如果主线程继续运行测试,清理线程就会远远落后于Oracle服务器的连接。添加sleep允许后台线程释放池连接。 在现实世界中,这一问题要少得多,因为DB服务器要大得多,而且操作混合良好(不仅仅是无休止的DB连接/断开连接操作)。 |