【问题标题】:Spring Boot is blocking H2 Console in Debug ModeSpring Boot 在调试模式下阻止 H2 控制台
【发布时间】:2016-05-12 18:31:09
【问题描述】:

我正在尝试在调试模式下的 WebIntegrationTest 期间访问 H2-Console。但是,我注意到在调试测试时 Spring Boot 阻塞了 H2 控制台。似乎一旦达到断点,H2 控制台也会被阻止。我正在使用 Spring Boot 1.3.1.RELEASE。

以下测试中的每个断点都会导致 H2 控制台阻塞。在断点 1 中,出现登录页面。然后我按下登录按钮,但没有任何反应,直到我让测试继续到下一个断点。在断点 2 中,我已登录并可以执行查询。但只有当我要下一个断点时,才会出现查询结果。

@Test
public void whenGetById_thenCorrectId() throws InterruptedException {
    // do some stuff
    // breakpoint 1
    Thread.sleep(1000);
    // breakpoint 2
    Thread.sleep(1000);
    // breakpoint 3
}

WebIntegrationTest 配置如下:

@ActiveProfiles("local,unittest")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApplication.class)
@WebIntegrationTest({"spring.h2.console.enabled=true", "server.port=8080"})
public class MyResourceTest {

如何将 H2-in-memory DB 与调试模式分离?

【问题讨论】:

  • 嗯,你对断点所做的基本上是停止应用程序,直到你继续手动运行。因此,除了不使用断点之外,没有其他方法可以规避这一点。您可以对 H2 使用其他一种存储方法(例如使用文件或服务器模式),然后将单独的 Web 控制台实例连接到该方法。
  • 听起来你的断点配置为暂停整个 JVM 而不是一个线程。
  • @René Winkler 看到这个答案:stackoverflow.com/questions/12390116/…

标签: java spring spring-boot


【解决方案1】:

可以将断点配置为暂停整个 VM 或仅暂停单个线程。在 IntelliJ 中,您可以通过右键单击相应的断点来设置它。我的断点被配置为暂停整个 VM,因此每个断点也被阻止访问 H2-Console。

【讨论】:

  • 谢谢!我被困在这个问题上将近两天了。我像个白痴一样喂食:)
  • 并注意“设为默认”按钮,如果您切换单选按钮,该按钮将取消隐藏...jetbrains,为什么要在 IDE 周围隐藏和分散选项?此设置应在全局调试器设置中可用。
猜你喜欢
  • 2016-05-11
  • 1970-01-01
  • 2014-08-30
  • 2023-02-08
  • 2022-01-18
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多