タグ

Tipsとjdkに関するpoad1010のブックマーク (3)

  • Javaアプリを高速起動する方法「JRubyテク」 | エンタープライズ | マイコミジャーナル

    JRuby - Java powered Ruby implementation Java仮想マシンで動作するRubyJRuby」はJavaがもっているさまざまな利点を利用できる興味深いプロダクトだが、Javaの欠点もそのまま引き継いでいる。もっとも顕著なのは起動時間が遅いことだ。これはLinuxなどでは特に気になる。一度起動が完了しJITが有効になったあとのJRubyは優れた速度を出すが、起動は遅い。小さいツールを作って利用するようなケースはJRubyは苦手ということになり、「起動が遅い」という悪名高い評判を得ることになる。 JRubyの主要開発者であるCharles Nutter氏がHeadius: JRuby Startup Time TipsにおいてJRubyの起動を高速化するための7つのテクニックを紹介している。いくつかはJRubyに特有のものだが、それ以外はJavaで動作する

  • Java: ファイルロック | Inside ASCADE

    File lockFile = new File("file.lock"); int retryCount = 30; // timeout = 3sec while (! lockFile.createNewFile()) { if ((retryCount--) == 0) { throw new LockFailedException("give up!"); } Thread.sleep(100); } try { // ファイルロックで保護された処理 ... } finally { lockFile.delete(); } マジックナンバーを使っていたり副作用のある式を条件式に使っていたりと、 気になるところはいろいろあるかも知れませんが、このコードの一番の問題は "File.createNewFile() に頼ったロック機構になっている" ことです。どういうことか簡単に説明して

  • TomcatでHTTPセッション単位のデータを扱う方法

    PHPなどのシングルスレッドのWebアプリケーションを長く開発していると、何も考えずにクラス変数を使ってしまう...。 Tomcatは、シングルスレッドの設定を行わない限り、マルチスレッドで動作する(あらかじめいくつか複数のスレッドを起動しておき、リクエスト毎にどれかを使うような感じ)のでクラス変数を使うと全てのスレッドからアクセスが共有されてしまいます。 これは、たとえば現在のHTTPセッション(セッション間データを扱う「セッション変数」ではなく、1セッション内という意味)のみで統一的に扱いたいデータをクラス変数に入れておくと、HTTPセッションが終了してもそのデータが保持されたままになってしまうということです。 クラス変数はプロセス内で共有される変数なので、Tomcat起動中は同じプロセスですから当然といえば当然なのですが...、例えばデータベースコネクションなんかは上記のような形で扱

    TomcatでHTTPセッション単位のデータを扱う方法
  • 1