2014-01-01から1年間の記事一覧
この記事は GlassFish Advent Calendar 2014の12/25分の記事です。昨日は @backpaper0さんのGlassFishでセッションIDを生成してるところでした。2013/11にGlassFishの商用サポートの終了がアナウンスされて私も不安に思っていましたが、冷静に考えるとGlassF…
この記事は Java EE Advent Calendar 2014の12/17分の記事です。昨日は @glory_ofさんのJAX-RSのレスポンスでした。明日は@nagaseyasuhitoさんです。Java EE8では、『使い方が複雑・各APサーバ固有のレルム設定がよくわからん』とあまり評判のよくないセキュ…
まだまだエンタープライズな分野ではJAX-WSがシステム間連携に使われることが多い。wsdlからスタブを生成するMavenプラグインの使い方に関するメモ。 JAX-WS Mavenプラグイン https://jax-ws-commons.java.net/jaxws-maven-plugin/ にJAX-WSの参照実装Metro…
SlideShareがやっているように、PDFスライドから抽出したしたテキストから、改行やタブを半角スペース1つに置換を試みた際にはまったのでメモ。取得したいのはSlideShareのページ下部に表示されているこの文字列。 1. PDFBoxでテキスト抽出 PDFTextStripper.…
サンフランシスコ市街地のスーパーに水を買いにいったら、キャベツ太郎が売ってたので思わず写真を撮る。2.49ドル、日本でいうとポッキーよりも高級なお菓子になっている。以下のようなセッションに参加。 Everything You Wanted to Know About Writing Asyn…
今日も晴れていて、過ごしやすい気候。3回目のJavaOneでも雨に振られたことがないので、サンフランシスコは雨が少ない地域なのだろうか。 Building a Distributed Application for the Cloud with Akka Clustering and Java 8 [TUT6483] Playフレームワーク…
2日目。朝は霧が出ていて少し寒いが、日中になると日差しが出て半袖でも良いくらい暑くなる。今日から本格的にセッションの開始。 Java EE 8 [CON3015] Java EE8のスペックリードであるLinda DeMichielさんによる、Java EE 8の現状の方針を話すセッション。J…
JavaOne2014の初日はコミュニティが主体のユーザグループフォーラム(UGF)と、キーノートがサンフランシスコのモスコーンセンタにて行われた。カメラとPCを繋ぐケーブルを家に忘れたので、写真は後日追加予定。以下、荒い部分も数多くあるがセッション参加メ…
HotSpotJVMの監視・解析OSSツールであるHeapStatsをChefでインストールできるようにクックブックを作ってみた。n-agetsu/chef-heapstats n-agetsu/chef-heapstats · GitHubHeapStatsとはなんぞやについては、JJUGナイトセミナーなどのスライドやキャスレー技…
JDK8およびJDK8u20では、GCログに関連する2つの便利な機能が追加されている。いずれの機能も2014/8現在最新のJDK7 update 67 には含まれていないが、JDK7u80にてバックポートされる予定。 GCログにpidと日付を含める (JDK8より) JAVA_OPTS="$JAVA_OPTS -Xlog…
Hibernateには内部的にjava.sql.Statement.addBatch()およびexecuteBatch()を使ってバッチ更新でSQLを発行するオプションhibernate.jdbc.batch_sizeがある。 デフォルトは無効となっているが、1トランザクションで大量のエンティティを登録する処理において…
OutOfMemoryErrorの主な要因例として、DBMSからデータを取得しすぎがあります。LASYフェッチによるN + 1 問題を回避するために、結合先テーブルの要素を一気に持ってくるJOIN FETCHを使ったところ、引き換えにJavaヒープ使用量が多くなるのはよくあるケース…
Java EE を使っている人なら多くの人が遭遇するクラスローダリーク。EclipseなどのIDEでホットデプロイしながら開発していると、突然APサーバから応答がなくなったり、java.lang.OutOfMemory : PermGenが出力されたりする。原因についてはnekopさんのスライ…
定番のスケジュール実行としてはcronがあるが、Java EEにおいても同様の機能が用意されている。Java EE 5以前では『x秒後に実行する』ような機能しかなかったが、Java EE 6(WLS12c/JBossEAP6など)以降ではcron風にカレンダー形式で設定ができる。 使い方 Jav…
以前の記事でトラブルが起きた後の初動対応を書いてみたが、いざトラブルに遭遇すると、まず再起動してからどうするか考えるケースが多いと感じている。しかし何も情報がないと『情報がない/再現方法が不明』などの理由からそのままお蔵入りになってしまう。…
アプリケーションサーバでありがちなトラブルとしてDB接続プールの枯渇がある。原因はチューニングミスやSQLが長時間化してプールにコネクションが返って来ないなど色々とあるが、負荷試験時にモニタリングしておくと多くの問題は事前に検知・対処できる。JB…
Javaトラブルでは『情報がなくて、再現もなかなかしません』といった状況に陥ることがある。このような状況を回避するために、以下の3つの代表的なトラブルを例に、アプリケーションサーバを再起動する前に何を取得すれば良いのかをまとめてみる。 アプリケ…
Java EE アプリケーションサーバを使うとどの製品にもDBコネクションプーリング機能が付いている。DB接続の再接続にはコストがかかることがこの機能の動機だが、いったいどれくらいの『コスト』なのか。あまり実データを見たことないので、実際に測ってみる…
Java SE 7よりJavaから外部コマンドを実行できるProcessBuilderに便利な機能が追加されている。pingを実行してファイルにリダイレクトが簡単にできるなど、派手ではないが嬉しい機能追加である。以下では、追加された機能を使って色々なpingを実行してみる。…
UNIXカーネルの設計を読んでいて以下のような記述を見つけたとき、ふと疑問が浮かんだ。 UNIXカーネルの設計 p164 7.1 プロセスの生成 UNIXオペレーティングシステムで利用者が新しいプロセスを作る唯一の方法は, forkシステムコールを呼び出すことである。 …