Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以调试Tomcat运行的GWT-RPC过程和ApacheWebServer(使用IntelliJ)运行的静态内容吗_Java_Apache_Tomcat_Gwt_Intellij Idea - Fatal编程技术网

Java 我可以调试Tomcat运行的GWT-RPC过程和ApacheWebServer(使用IntelliJ)运行的静态内容吗

Java 我可以调试Tomcat运行的GWT-RPC过程和ApacheWebServer(使用IntelliJ)运行的静态内容吗,java,apache,tomcat,gwt,intellij-idea,Java,Apache,Tomcat,Gwt,Intellij Idea,在我的Windows开发机器上,我有IntelliJ设置,可以通过ApacheWebServer运行静态html,并使用Tomcat运行GWT-RPC服务。除了调试GWT-RPC服务的服务器代码外,一切都正常。是否仍有可能以这种方式调试GWT-RPC服务器代码?我理解您的说法是否正确 您有一个GWT应用程序在intelliJ中以开发模式hostet运行 这个应用程序的serverpart在tomcat中运行hostet 如果是这样,您应该连接intelliJ。好的,我现在可以使用所描述的设置

在我的Windows开发机器上,我有IntelliJ设置,可以通过ApacheWebServer运行静态html,并使用Tomcat运行GWT-RPC服务。除了调试GWT-RPC服务的服务器代码外,一切都正常。是否仍有可能以这种方式调试GWT-RPC服务器代码?

我理解您的说法是否正确

  • 您有一个GWT应用程序在intelliJ中以开发模式hostet运行
  • 这个应用程序的serverpart在tomcat中运行hostet

如果是这样,您应该连接intelliJ。

好的,我现在可以使用所描述的设置调试服务器代码:

为了完整起见,我将包括我已经知道和完成的步骤:

首先,您必须配置Tomcat以支持远程调试。克里斯蒂安·库特巴赫(Christian Kuetbach)在回答中给出的链接中描述了这一点。简而言之,它向jvm添加了两个选项:

-Xdebug

-Xrunjdwp:transport=dt_socket,address=<yourport>,server=y,suspend=n
-Xdebug
-Xrunjdwp:transport=dt_套接字,地址=,服务器=y,挂起=n
(我已经做了这一步)

第二步是我需要帮助的地方,配置IntelliJ

您必须包括远程运行/调试配置。在此配置中,您需要从步骤1中指定端口。此外,在启动GWT调试之前,您必须启动此远程调试配置,以便它将连接到Tomcat调试套接字

现在,您可以在同一个IntelliJ会话中调试客户端代码和服务器代码

我是这样做的:

  • 在IntelliJ中配置tomcat服务器实例,并确保无需GWT调试器即可启动应用程序。换句话说,在您的IntelliJ想法中,去编辑配置并添加tomcat本地服务器,然后选择要部署到tomcat的war文件
  • 通过IntelliJ在调试模式下启动tomcat
  • 确保你可以打开你的应用程序,并且它在你期望它工作的URL上工作,应该是这样的
    http://localhost:8080/applicationContextThatYouSpecifiedInTomcatDeployentTabConfiguration
  • 通过在应用程序内部单击并检查请求是否在服务器上的适当断点处停止,确保现在可以调试服务器端
  • 在IntelliJ中创建GWT运行配置
    • 确保将开发模式参数设置为“-noserver-binddress 0.0.0.0”noserver意味着当您从intelliJ启动GWT配置时,它不会启动嵌入式服务器,因为我们现在使用Tomcat作为服务器
  • 在调试模式下通过IntelliJ运行GWT配置-是的,您现在有两个配置同时运行:一个用于客户端(GWT)调试,另一个用于服务器端(Tomcat)调试
  • 现在,在浏览器中,在URL的末尾添加以下文本
    ?gwt.codesvr=127.0.1.1:9997
    。 例如,如果在URL中有
    http://localhost:8080/hiThereMyApp/index.html
    新的URL看起来应该像
    http://localhost:8080/hiThereMyApp/index.html?gwt.codesvr=127.0.1.1:9997

  • 另外,有时浏览器的gwt插件会抱怨127.0.1.1主机不允许作为gwt代码库,在这种情况下,尝试将
    127.0.1.1
    替换为
    localhost
    或计算机的ip地址,或者尝试配置浏览器的gwt插件以实际允许所需的gwt代码库。

    没错,GWT在开发模式下运行,但在本地Web服务器上运行(使用-noserver选项)。我已经尝试添加建议的jvm选项,但IntelliJ没有在断点上中断。那么,我应该在何处以及如何设置IntelliJ IDE,以便它知道如何调试远程Java代码?感谢您的详细回答,但是问题是如何将apache webserver用于静态gwt客户端代码,将tomcat用于Web服务。