新旧のColdFusion バージョンが同時に起動できない場合の確認点

最新バージョンでの動作テストやマイグレーション作業などの過程で、複数のColdFusionバージョンを起動しようとした際にエラーが発生する場合、その原因の多くは同じポート番号を使用している事にあります。

 

例えば、ColdFusion 10 と ColdFusion 11の二つのバージョンで、それぞれのバージョンだけを起動した場合は正常に動作しますが、上記の図のように ColdFusion 10を起動した状態でColdFusion 11を起動しようとすると、サービス起動に失敗(コード2)する場合があります。

ColdFusionのログやOSのログに情報が掲載されていない場合は、コマンドプロンプトからColdFusionの起動バッチを実行し、エラーメッセージ等が表示されないかを確認して下さい。

例)ColdFusion 11の起動バッチを実行する場合:

  1. ディレクトリの変更コマンド(cd 等)で、batファイルが置かれているフォルダ([cf11_root]/cfusion/bin)に移動します
    • 例: cd C:\ColdFusion11\cfusion\bin
  2. cfstart.bat を実行して、画面にメッセージが表示された場合は、そのメッセージに該当する設定を確認下さい。

 

エラー例)

  1. 下記のエラーは、同じポートをラインデバッガで指定している場合に表示されます。ポート番号の変更(あるいはラインデバッグの有効/無効)は ColdFusion Administrator の [デバッグとロギング] - [デバッガの設定] で行えますので、同じポート番号を指定しないように変更して下さい。

    ERROR: transport error 202: bind failed: Address already in use
    ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
    JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [xxxxxx:750]
    FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_E RROR_TRANSPORT_INIT(197)
  2. 下記のエラーは、指定されているリモートポートが既に使用されている場合に発生します。下記の例は、ColdFusion 11でマルチインスタンス機能を利用して複数のColdFusionインスタンスを起動した後に、ColdFusion 10を起動したところ、リモートポートが同じ番号が使用されていてエラーが発生しています。対応としては、設定ファイル([cf_root]/インスタンス名/runtime/conf/server.xml)をテキストエディタ等で開き、手動で該当する項目のポート番号を変更していきます。 

    ・Either the server is already running or some other application is using the AJP port 8012.
    ・Either the server is already running or some other application is using the Shutdown port 8007.

2017.2.13 追記

別の例として、ColdFusion 11 と ColdFusion 2016の二つのバージョンを同時に起動した際、片方のバージョンの.cfmページをリクエストすると、下記のように 「Monitoring サービスを使用できません」が表示されました。

javax.servlet.ServletException: ROOT CAUSE:
coldfusion.server.ServiceFactory$ServiceNotAvailableException: Monitoring サービスを使用できません。
    at coldfusion.server.ServiceFactory.getMonitoringService(ServiceFactory.java:223)
    at coldfusion.CfmServlet.service(CfmServlet.java:199)
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    ....

これは、ColdFusion Enterprise 版で使用可能なサーバーモニターのポートの割当てが競合したために発生しています。サーバーモニターは、普段のリクエストで使用しているポート(80 や 443、開発用Webサーバーの8500など)でアクセス可能ですが、そのポートのリクエストが集中したときのために、別のポートで監視サーバーへアクセスする事が可能です。
監視サーバーの有効化・無効化は [ColdFusion サーバーの監視] - [監視設定] の 「サーバー監視/設定」で『監視サーバーを有効にする』 で設定できますが、有効・無効の設定に関わらず、監視サーバー自体は起動しています。監視サーバーのポート番号は ColdFusion 起動時に自動的に割当てを行うため、複数のColdFusionを同時に起動した時に、(タイミングによって)このエラーが発生する場合があります。

application.log には以下のようなエラーが表示されます

Information [localhost-startStop-1] - Monitoring を開始しています...
Information [localhost-startStop-1] - ポート 5500 の監視サーバーを起動しています。
Error [localhost-startStop-1] - Address already in use: bind
Error [localhost-startStop-1] - Address already in use: bind
[localhost-startStop-1] - Monitoring サービスを初期化できません : coldfusion.server.ServiceException: Address already in use: bind

このエラーが発生したときは、もう一度、エラーが発生したバージョンのColdFusionサービスを再起動して下さい。また、同時にサービスが起動しないように調整頂く(手動、もしくは、サービスの依存関係の設定)事をご検討下さい。

※別のポート番号が割り当てられた時は以下のような出力になります。

Information [localhost-startStop-1] - Monitoring を開始しています...
Error [localhost-startStop-1] - Address already in use: JVM_Bind
Information [localhost-startStop-1] - ポート 56783 の監視サーバーを起動しています。

 


記事公開日:2014年05月02日
最終更新日:2017年02月13日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.