Jenkins2.0を導入したらUnsupportedOperationExceptionが発生
2017-11-21 23:31
Jenkins2.0 が登場と言うことで、さすがにメジャーバージョンアップは早いかなっと思っていましたが、yum update で確認するとパッケージが用意されている感じだったので思い切ってバージョンアップしてみました。
実際に Jenkins の公式でも war ファイルの上書きのみで問題ないということでしたし、互換性は保ってくれているということでしょう。
設定ファイルやプラグインなど少なからずデフォルトの設定とは違うので、その辺だけが若干不安ではありますが。
Jenkins起動時のエラー
アップデート自体はスムーズに完了したと思ったのですが、残念なことに Jenkins が起動してこない・・・。
Jenkins のログを見ると以下のようなエラーが出力され、原因が特定できそうなのが唯一もの救い。
SEVERE: Container startup failed
java.io.IOException: Failed to start a listener: winstone.Ajp13ConnectorFactory
at winstone.Launcher.spawnListener(Launcher.java:207)
at winstone.Launcher.(Launcher.java:148)
at winstone.Launcher.main(Launcher.java:352)
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 Main._main(Main.java:246)
at Main.main(Main.java:91)
Caused by: java.lang.UnsupportedOperationException: AJP support is removed in Winstone 3.0 due to Jetty 9 not supporting AJP. For reverse proxying, please use HTTP instead of AJP.
at winstone.Ajp13ConnectorFactory.start(Ajp13ConnectorFactory.java:31)
at winstone.Launcher.spawnListener(Launcher.java:205)
... 8 more
ちなみに、Jenkins サーバは、nginx が 443 番ポートで待ち受け、リバースプロキシで Jenkins の SSL ポート(8443)に渡しているというシンプルな構成です。
公式のサポートを見ると、どうやら設定ファイルの AJP の影響のようで、JENKINS_ARGS の内容を調整します。
・https://issues.jenkins-ci.org/browse/JENKINS-33776
$ vi /etc/sysconfig/jenkins
#JENKINS_ARGS="--httpPort=${JENKINS_PORT} --httpsPort=${JENKINS_HTTPS_PORT} --ajp13Port=${JENKINS_AJP_PORT}"
JENKINS_ARGS="--httpPort=${JENKINS_PORT} --httpsPort=${JENKINS_HTTPS_PORT}"
再度、Jenkins の起動を試みてみると無事起動が確認できました。
以前、Jenkins の SSL 化をする際に設定した項目が影響受けてしまっていた感じです。
最終的に JENKINS_HTTPS_PORT を使ったので、そもそも JENKINS_AJP_PORT は使わなくて良かったのかも。
$ service jenkins start
関連記事一覧
「Jenkins2.0を導入したらUnsupportedOperationExceptionが発生」に関連した記事一覧です。