gpt4 book ai didi

intellij-idea - 使用 IntelliJ 12 部署和调试远程 Jetty

转载 作者:行者123 更新时间:2023-12-02 23:44:56 28 4
gpt4 key购买 nike

我已经进行了一段时间的黑客攻击和谷歌搜索,我发现了几个 statck 溢出线程,它们似乎是为旧版本的 intellij 编写的,具有各种应用程序服务器。通常他们会告诉你输入

java -Xdebug -Xrunjdwp:transport=dt_socket,address=51887,suspend=n,server=y

One answer建议使用类似的东西

-agentlib:jdwp:transport=dt_socket,address=51887,suspend=n,server=y

但后来我明白了:

Error occurred during initialization of VM
Could not find agent library: libjdwp:transport.jnilib (searched /Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Libraries:/System/Library/Java/Extensions:/Library/Java/Extensions:.)

然后在上述一项或另一个之后,他们会告诉您类似“编辑配置> jetty >远程并输入localhost,51887”(端口号不同)

但是在 12 中,选择远程后登陆的页面有大量选项,并且要求 JNDI 端口,而不是另一个选项卡上的 jdwp 端口,它实际上建议上面的 jdwp 参数。

研究 JNDI 端口位,通常会产生将这样的参数添加到命令行的指令...

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

我也这样做了,我可以看到 java 持有的端口 1099(使用 lsof),并且我可以 telnet 到 1099,所以我知道 JVM 正在监听。 (我们会尽量不担心这样一个事实,即打开一个端口,任何人都可以通过该端口在没有密码的情况下通过网络将任意 java 代码安装到您的计算机上)

但是,在 Intellij 中,每当我尝试部署和调试时,它都会给出以下消息:

Yes, I know it's an ancient version of jetty

当我用wireshark监听端口1099时,我可以看到超过1099的java RMI通信(但它们难以辨认)。显然,Intellij 的通信并不令人满意,所以我想知道是否需要对 Jetty 做一些事情才能让它正常运行。请注意,目前无法更改 Jetty 版本,因此我们不要这样做:)。

我还尝试删除工件,禁用 make,并尝试仅连接调试器,但它仍然给我相同的红色气球和错误消息,因此显然需要 JNDI(端口 1099)部分。

有人看到我做错了什么,或者知道我应该做些什么才能让它发挥作用吗?

(我想知道是否类似于:http://youtrack.jetbrains.com/issue/IDEA-65746 jboss问题)

编辑:感谢this google groups post我发现如果您不指定编辑配置> + > jetty > 远程,而是选择编辑配置> + > 远程,则可以连接调试器,但调试和部署是我所追求的,所以这就是只有一半的解决方案。

最佳答案

jetty remote配置需要几个手动步骤,当您使用 local 直接从 IDEA 启动 Jetty 时,这些步骤会自动执行。而是配置。

如果您绝对必须使用 remote配置,请尝试以下步骤:

Remote staging Server 部分IDEA Jetty 远程运行配置选项卡:

  • 指定 Same file system对于 TypeHost
  • 指定 <Jetty home>/contexts 的路径文件夹中的Local path contexts的领域部分

(如果您的 Jetty 在 IDEA 之外的另一台计算机上运行,​​设置将会有所不同,但我假设您的情况是同一台计算机)

将以下虚拟机参数传递给 Jetty 进程:

-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=<JNDI port>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-DOPTIONS=jmx

<JNDI port>值应与 JNDI port 中指定的相同IDEA Jetty运行配置字段

将以下配置文件传递给 Jetty 进程(在命令行中):

  • etc/jetty-jmx.xml
  • etc/jetty.xml

如果需要调试,还应该将从 IDEA Jetty 运行配置中获取的 VM 参数传递给 Jetty 进程:Startup/Connection选项卡,选择Debug To debug remote server JVM ...下的列表项

以下是使用所有必需选项启动 Jetty 进程的示例命令行:

java -Xdebug -Xrunjdwp:transport=dt_socket,address=60208,suspend=n,server=y -DSTOP.PORT=0 -Dcom.sun.management.jmxremote= -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -DOPTIONS=jmx -Dfile.encoding=UTF-8 -classpath start.jar etc/jetty-jmx.xml etc/jetty.xml 

关于intellij-idea - 使用 IntelliJ 12 部署和调试远程 Jetty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825546/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com