如何在 IntelliJ 中调试 Web 服务?
Posted
技术标签:
【中文标题】如何在 IntelliJ 中调试 Web 服务?【英文标题】:how to debug a web service in IntelliJ? 【发布时间】:2019-03-18 20:29:51 【问题描述】:如果我做错了什么请纠正我:
-
我用 Java 创建了一个 Web 服务 (WSDL),它有一个方法
TestCall()
。
我还创建了一个网站http://testwebsite:8000/abc/index.html,该网站正在调用步骤1中的网络服务。
我在 IntelliJ 中为它创建了一个远程调试。我把 testwebsite 作为主机,8000 作为端口号。
一旦我转到http://testwebsite:8000/abc/index.html 并单击TestCall()
,它并没有进入 IntelliJ 中的断点。当我尝试远程调试 Web 服务时,出现错误:
无法打开调试器端口 (testwesite:8000),握手失败,连接永久关闭。
谁能告诉我我错过了哪些步骤?谢谢
【问题讨论】:
调试器端口应该不是 8000,如果我理解正确的话。 【参考方案1】:当您需要远程调试应用程序时,请转到 IntelliJ 中的设置 (Run->Edit configurations
)。
现在单击+
符号并添加Remote
配置。它告诉你命令行添加到你在远程机器上启动的 JVM 的启动中。它会是这样的:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
用于 jvm 5-8。
现在您可以使用这些额外的命令行选项在服务器上启动远程 Web 服务。然后在 IntelliJ 中启动此配置。它会告诉你Connected to target VM, address: 'server name', transport: 'socket'
。您可以像本地调试一样添加断点。
如您所见:远程调试不使用 web 端口,而是专门为调试目的而打开的不同端口。如果服务器和您的工作站之间有防火墙,请选择一个打开的端口,或者打开防火墙端口(如果可能)。
【讨论】:
如果我不使用远程调试器,只需要对 Web 服务进行单元测试,那么正确的方法是什么?创建一个简单的控制台应用程序并调用 Web 服务中的方法? @msProgram:如果你需要单元测试,你应该看看 jUnit 或 TestNG。我更喜欢带有 Mockito 的 jUnit。在单元测试中,您可以测试类本身,而无需围绕它的整个服务器。但请注意:单元测试应该只测试一个类:而不是依赖类。这些应该单独模拟和测试。如果您想完全正确,可以查看 TDD(测试驱动开发):您首先创建一个测试,然后再创建一个类。单元测试通常作为 maven 构建的一部分运行。 谢谢。那应该行得通。我实际上正在使用 Maven 构建。以上是关于如何在 IntelliJ 中调试 Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
intellij idea 调试web项目只能调试一次,第二次不能进入断点
如何在Intellij IDEA 2018.2中调试GWT 2.8.1作为java代码而不是java脚本