【问题标题】:Tomcat Intellij Idea: Remote deployTomcat Intellij 理念:远程部署
【发布时间】:2012-12-29 19:55:43
【问题描述】:

RackSpace 云服务器 Ubuntu-12.04、Intellij Idea-11.1.2、Windows-8、Tomcat-7.0.26、JDK-6。

当我尝试在远程 Tomcat 7 服务器上运行 jsf 项目时,在 Intellij Idea 上显示:

错误运行 servername: 无法连接到 ip-address:1099

问题似乎与 JNDI 端口有关,它是 1099,但我猜我无法激活它。 Tomcat配置是……。像这样:

我尝试了什么?

在服务器端设置 CATALINA_OPTS 或 JAVA_OPTS:

 CATALINA_OPTS=-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false

JAVA_OPTS=-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false

但是这个没有用,有什么想法吗?

【问题讨论】:

  • 这些参数用于将 JConsole/VisualVM 连接到正在运行的应用程序。可能不需要百分号?
  • 或者;我关闭了从工件选项构建它不需要 JNDI 端口但现在我必须将战争爆炸或战争文件放入我的远程服务器但问题是我应该放在哪里?
  • 有关 IntelliJ 远程部署的更多信息,请参阅此问题:*.com/questions/10461717/…
  • @WimDeblauwe 您的评论与我的问题有细微的关系。
  • @JayGridley 是的,我做了,检查我的答案。

标签: linux tomcat deployment intellij-idea


【解决方案1】:

我对我的问题的回答:

远程部署的正确方法是在远程服务器上编辑 JAVA_OPTS 环境变量。只需输入以下命令:

export JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

如果这行不通,并且如果您不热衷于通过 Intellij Idea 部署您的网站,那么我已经找到了解决此问题的方法。为了能够在 Tomcat 下运行您的网站,您可以/应该以 .war 文件的形式获取工件。

可以在 Intellij 中从项目设置中完成(ctrl+alt+shift+s)然后点击加号按钮并添加新工件(web:application archieve)

重建工件后,.war 文件可以在project-folder\out\artifacts 中看到。接下来,您应该将此文件放入您的tomcat/webapps 文件夹中。

例如,如果您使用的是 Tomcat-7,我的意思是该文件夹存在于 /var/lib/tomcat7/webapps 中。在复制您的 .war file 之前,您应该将其重命名为 ROOT.war。这提供了通过http://youripaddress:8080 直接访问您的站点。重启Tomcat7服务后即可访问该站点。

但尚未完成,您可以远程调试项目,就像在本地机器上使用 Intellij Idea 调试项目一样。在 Idea 中打开 Run/Debug Configuration,点击加号按钮,必须有Remote。这是为 JBoss、Glassfish 以及 Idea 等应用程序服务器调试项目的方法。输入您的主机和端口号,选择您的项目作为模块。

在开始调试之前,正如 Intellij 所说,您应该为服务器 JVM 提供以下参数:

JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

为了能够在 Ubuntu 和 Tomcat-7 中执行此操作,修改了 usr/share/tomcat7 文件夹中的 catalina.sh 文件。我在if [ -z "$LOGGING_MANAGER" ]; then 行的上方插入了参数。它必须位于文件的中间部分。然后您应该可以使用 Intellij Idea 调试您的项目。

【讨论】:

  • 如果您在 VM 中运行 Tomcat,您可能还需要 -Djava.rmi.server.hostname=172.16.33.33(将 IP 替换为 VM IP)