場合によっては、出力を HTTP リクエストに送信するのではなく、サーブレットからファイルにデータを書き込むことがあります。このファイルは、テンポラリデータを保管したり、パーシスタンスメカニズムとして使用できます。このセクションでは、ファイルを Web アプリケーションのディレクトリや、ホットデプロイされた Web アプリケーションのために JRun が生成したテンポラリディレクトリに書き込む方法を説明します。
サーブレットコンテキストを使用すると、Web アプリケーションのルートディレクトリへのパスを取得できます。このパスは、/<JRun のルートディレクトリ>/servers/<Web アプリケーション名> です。JRun サーバにはデフォルトで書き込み許可があるため、このパスを取得すると、このディレクトリ内のファイルに書き込みを行うことができます。
次の例では、簡単な文字列をファイルに書き込み、それを Web アプリケーションのルートディレクトリに保管します。
...
Properties sysprops = System.getProperties(); String c = sysprops.getProperty("file.separator"); PrintWriter out = response.getWriter(); String notes = "これは文字列です"; String filename = "file.txt"; String path = new String(); try { ServletContext sc = this.getServletContext(); path = sc.getRealPath("/"); FileOutputStream fos = new FileOutputStream(path + c + filename); byte[] bytes = notes.getBytes(); fos.write(bytes); out.println("Created " + filename + " in " + path); } catch (Exception e) { out.println(e.toString()); } ...
サンプルサーブレットを表示するには、samples JRun サーバを起動し、ブラウザで http://localhost:8200/techniques を開きます。
WAR ファイルや EAR ファイルを JRun サーバのルートディレクトリに配置して JRun のホットデプロイ機能を使用すると、JRun は/<JRun のルートディレクトリ>/servers/
<サーバ名>/SERVER-INF/temp/<アプリケーション名>- temp にテンポラリディレクトリを作成して、テンポラリ情報を保管します。javax.servlet.context.tempdir
属性を取得すると、このディレクトリにアクセスできます。次の例を使用すると、このディレクトリにファイルを書き込むことができます。
...
ServletContext context = this.getServletContext(); Properties sysprops = System.getProperties(); String c = sysprops.getProperty("file.separator"); try { File baseDir = (File) context.getAttribute("javax.servlet.context.tempdir"); String fullpath = baseDir.getAbsolutePath() + c + "settings.txt"; File f = new File(fullpath); FileOutputStream fout = null; fout = new FileOutputStream(fullpath); sysprops.store(fout, null); out.println("次のファイルが作成されました:" + f.getAbsolutePath()); } catch (Exception e) { e.printStackTrace(); } ...
このコード例では、ServletContext を使用して Web アプリケーションのテンポラリディレクトリを取得し、System オブジェクトのプロパティを使用して、ファイルセパレータを取得しています。このコードでは、システムプロパティが settings.txt と名付けられたファイルに保管されます。
サンプルサーブレットを表示するには、samples JRun サーバを起動し、ブラウザで http://localhost:8200/techniques を開きます。