Windows では、ネットワークサーバー上のドライブをローカルドライブ文字(ドライブを示すアルファベット)にマッピングすることで、 ユーザーがローカルドライブであるかのようにアクセスできるようにすることが可能です。 これは Windows の非常に強力な機能であり、多くのアプリケーションで利用されています。
しかし、問題は、Windows サービスからアクセスした場合に、 マッピングされたドライブの取り扱いについて Windows に一慣性がないことです。 手動でサービスを開始した時、マッピングされたドライブは使用可能になりますが、 システムを再起動すると、そのサービスはもはやドライブにアクセスできません。
Java Service Wrapper では簡単な手法で、 ネットワークドライブが利用できないとき、そのドライブをマッピングするように、サービスへ指示を出します。 つまり、確実にアクセスできることを意味します。
解決策 |
解決策としては、サービスに独自のドライブをマッピングする機能を与えることです。 Java Service Wrapper は、起動時にネットワークドライブやプリンターのマッピングを 可能にする柔軟なプロパティセットを提供します。 これにより、サービスの開始タイミングに関わらず、Java アプリケーションが確実にそのような共有を利用することができます。 Windows では、ネットワーク共有をドライブ文字にマッピングすることで、あたかもローカルドライブのようにアクセスすることができます。 多くのアプリケーションは、この機能を利用して、ネットワーク上で共有されているファイルにシームレスにアクセスします。 しかし、アプリケーションをサービス化した場合、マッピングがユーザーのセッション内でしか行われない可能性があるため、 マッピングされたドライブへのアクセスの信頼性が失われます。 サービスがいつ開始されたか、およびその時点で誰がマシンにログインしていたかによって、 利用できる場合と利用できない場合があります。 |
テクニカル概要 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Windows サービスを特定のアカウントで実行するように設定することが可能です。 ただし、そのアカウントでマッピング設定したドライブは、システムの最初の起動時には利用できず、 それゆえにサービスからも利用することができません。 もしユーザーが同じアカウントでログインした場合、そのドライブはセットアップされますが、 サービスを完全に再起動しない限り、ドライブは利用できないままです。 従来からの方式で、UNC 形式(Uniform Naming Convention) (マシン名を含むフルパス)を使ってネットワーク上のファイルへアクセスする必要がありました。
この UNC 形式は、一部のアプリケーションでは動作しますが、マッピングされたドライブほど便利でポータブルではありません。
Windows サービスとして動作するように初めから設計されていないアプリケーションや、 ネットワークドライブへアクセスするアプリケーションの多くは、 コンフィギュレーションファイル内で UNC パスに遭遇すると失敗します。 Java Service Wrapper により、サービスが共有リソースに簡単にアクセスできるようになります。 「共有」関連のプロパティのセットだけで、 遠隔地またはプリンターへのマッピングを簡単に設定し、Java アプリケーションを起動する前に、 実行中のアカウントでそれらを使用できるようにすることができます。
|
参照: wrapper.share.<n>.* プロパティ群 |
これらのプロパティは、ローカルドライブへのネットワークリソースのマッピングを設定するために使用されます。
|