簡単に言うと、(SonarQube 5.5で導入された)によって使用されるすべてのポートを構成する方法、management-agent.jar
または無効にする方法はありますか?
詳細情報: SonarQube を OpenShift (再び) で実行しようとしていますが、今回はバージョン 5.5/5.6 です。起動時に次のエラーが表示されます: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 0; nested exception is: java.net.BindException: Permission denied
.
これまでに分かったことは、
- エージェントは 3 つのポートを開き、
- 2 つを設定できます (システム プロパティ
com.sun.management.jmxremote.port
とcom.sun.management.jmxremote.rmi.port
) 。 - しかし、そのうちの 1 つは設計上、常にエフェメラル ポート (ポート 0)であり、OpenShift では動作しないようです。
ポートを OpenShift で許可されている範囲 (ポート 15000 ~ 35530) に明示的に設定することに加えて、この-XX:+DisableAttachMechanism
オプションを試してみましたが、うまくいきませんでした。
それを回避する方法はありますか?SonarQube はエージェントなしで動作しますか?
再現方法:このから OpenShift アプリを作成し、SONAR_VERSION
を5.5
または5.6
に変更します。.openshift/action_hooks/build
完全なスタックトレース
2016.06.02 16:09:34 INFO app[o.s.p.m.JavaProcessLauncher] Launch process[es]: java -Djava.awt.headless=true -javaagent:jre/lib/management-agent.jar -cp ./lib/common/*:./lib/search/* org.sonar.search.SearchServer
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 0; nested exception is:
java.net.BindException: Permission denied
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:384)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)
Caused by: java.lang.RuntimeException: Exception thrown by the agent
at sun.management.Agent.error(Agent.java:520)
at sun.management.Agent.error(Agent.java:511)
at sun.management.Agent.startAgent(Agent.java:268)
at sun.management.Agent.agentmain(Agent.java:134)
at sun.management.Agent.premain(Agent.java:116)
... 6 more