我已经在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崩溃了。
最佳答案
该错误消息表明IDE和Linux Docker容器中运行的WebSphere Application Server之间的连接失败。
首先,如果要在Linux机器上启动WebSphere服务器,则应使用为Linux编译的JRebel代理库。也就是说,您应该在libjrebel64.so
参数的路径值中使用-agentpath
而不是libjrebel64.dll
。在Linux环境中使用.dll
应该会使服务器在启动时崩溃。目前,我的假设是服务器没有响应,因为它甚至无法正确启动。
此外,请确保可以通过您在IDE端的远程服务器配置中输入的地址访问服务器。
如果在先前的建议之后相同的问题仍然存在,请重现此问题,并将~/.jrebel/
目录中的jrebel.log和jrebel-eclipse.log文件发送给我们到[email protected]。
关于docker - JRebel使用Eclipse在Docker上远程崩溃WebSphere,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49021378/