【问题标题】:JRebel remoting crashing WebSphere on Docker using EclipseJRebel 远程处理使用 Eclipse 使 Docker 上的 WebSphere 崩溃
【发布时间】:2018-02-28 03:12:32
【问题描述】:

我在 Windows 机器上的 Eclipse maven 项目中配置了 JRebel 远程处理模式,并在 Linux docker 容器中运行 WebSphere。

在 JVM 参数中,它正在设置

-agentpath:/opt/jrebel/lib/libjrebel64.dll -Drebel.remoting_plugin=true

当我更改源代码时,jrebel开始更新代码,我得到了错误:

2018-02-27 23:32:14.066 ERROR [rebel-CancellableExecutorService-1] c.z.jrebel.remoting.Transaction - [OUT] [tr_36] [Project <maven-module-name>, server websphere] Synchronization failed! Read timed out
com.zeroturnaround.jrebel.remoting.RemotingException: Read timed out
    at com.zeroturnaround.jrebel.remoting.net.RemotingClient.tryMakePostRequest(JRebelRemoting:189)
    at com.zeroturnaround.jrebel.remoting.net.RemotingClient.sendTransactionCommand(JRebelRemoting:147)
    at com.zeroturnaround.jrebel.remoting.net.RemotingClient.commitTransaction(JRebelRemoting:101)
    at com.zeroturnaround.jrebel.remoting.Transaction.commit(JRebelRemoting:487)
    at com.zeroturnaround.jrebel.remoting.Transaction.synchronize(JRebelRemoting:231)
    at com.zeroturnaround.jrebel.remoting.RemoteServer$1.run(JRebelRemoting:56)
    at org.zeroturnaround.common.util.ExecutorUtil$RunnableWrapper.run(ExecutorUtil.java:153)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketTimeoutException: Read timed out

之后,Web 应用程序和 WebSphere 崩溃了。

【问题讨论】:

    标签: docker crash websphere remoting jrebel


    【解决方案1】:

    错误消息表明 IDE 与在 Linux Docker 容器内运行的 WebSphere 应用程序服务器之间的连接失败。

    首先,如果您在 Linux 机器上启动 WebSphere 服务器,您应该使用为 Linux 编译的 JRebel 代理库。也就是说,您应该在-agentpath 参数的路径值中使用libjrebel64.so 而不是libjrebel64.dll。在 Linux 环境中使用 .dll 应该会在启动时使服务器崩溃。目前,我的假设是服务器没有响应,因为它甚至没有正确启动。

    另外,请确保可以通过您在 IDE 端的远程服务器配置中输入的地址访问服务器。

    如果在前面的建议之后仍然存在相同的问题,请重现此问题并将~/.jrebel/jrebel.logjrebel-eclipse.log 文件发送给我们目录到 support@zeroturnaround.com。

    【讨论】:

    • 我使用的是 libjrebel64.so 而不是 libjrebel64.dll。例外是 jrebel.log
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多