1

我有几个使用 Thorntail 框架开发的微服务项目。我正在使用 Eclipse 编写代码。过去,我使用 Wildfly 应用程序服务器完成了所有开发,而 Eclipse 使调试这些应用程序变得非常简单。 Right Click->Debug As->Debug On Server. 完毕。现在我正在使用 Thorntail,我不太确定该怎么做。

从命令行,我将使用以下命令启动我的 Thorntail 项目:

mvn thorntail:run -Dthorntail.useUberJar # Project 1
mvn thorntail:run -Dthorntail.useUberJar -Dthorntail.port.offset=1000 # Project 2

这样就可以启动并运行所有内容,并在端口 8080 和 9080 上进行侦听。但是,这些服务未处于调试模式,并且我没有通过 Eclipse 启动这些服务。

我知道我可以Right Click->Debug As->Maven Build...然后创建一个新的调试配置。我已经这样做了,我的目标对应于mvn上面的命令。但是,当我这样做时,不会自动附加调试器,因此断点等不起作用。我确定我在某处遗漏了一步,但这是我以前从未尝试过使用的功能,所以我迷路了。有什么建议吗?

4

2 回答 2

3

接受带有端口号的mvn thorntail:run系统属性。thorntail.debug.port例如,如果您运行

mvn thorntail:run -Dthorntail.useUberJar -Dthorntail.debug.port=5005

Java 进程将等待远程调试器连接,然后才会继续。

我不使用 Eclipse,但我很确定配置远程调试会话并不难。

于 2019-05-15T15:05:59.083 回答
2

使用以下参数执行 uberjar。确保所有参数都指定在 uberjar 的名称之前就行了。

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=$PORT_NUMBER -jar $UBERJAR_FILENAME

$PORT_NUMBER 是您选择的未使用端口号。请记住此编号以进行远程调试器配置。

$UBERJAR_FILENAME 是 uberjar。

suspend=y确保 JVM 在启动应用程序之前将暂停并等待远程调试器连接。

要使用 Eclipse IDE 进行远程调试,您必须打开 Eclipse,打开目标应用程序的源代码并通过指定目标主机和端口来创建调试配置(“远程 Java 应用程序”)。在此之后,点击“调试”按钮并继续进行远程调试。

于 2019-05-30T12:24:58.420 回答