Java

Mavenでのクラスの重複チェック

ライブラリの管理にMavenやGradleを利用するのが一般的だと思いますが、個人的にいつも憎たらしく思うのがgroupIdやartifactIdがバージョンによって変わってくるケース。例えばこんなの。 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-a</artifactid></dependency>…

Javassistでランタイムでクラスを書き換える

イケてないクローズドなライブラリを使う際にどうしても現在のシステムと合わない箇所があり、なんとかクローズドなライブラリに手を入れられないか?ということでJavassistでランタイムでクラスを書き換えて対応しようというものです。 unk極まりないですが…

JPA2ではEntityManagerなしでCriteriaを作る方法がない?

JPA2では以下のようにしてCriteriaを生成します。 // entityManagerFactory.getCriteriaBuilder(); でもOK entityManager.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Company> cq = cb.createQuery(Company.class); Root<Company> ro</company></company>…

JSF2+CDI+Twitter4Jでカンバセーション内でOAuth認証を行う

個人的にハマりどころがあったのでJSF2+CDI+Twitter4JでのOAuth認証の方法をポイントだけまとめます。 JBoss7.1.0と7.1.1、GlassFish3.1.2で動作の確認をしています。Twitterインスタンスを提供します。 TwitterFactoryはスレッドセーフのようなので共有し、…

CDIのBeanをInjectしないで取得する

Seam2のComponent.getInstanceのCDI版を探しています。これでいけるのかな? http://soras.sblo.jp/article/35292434.html BeanManager bm = InitialContext.doLookup("java:comp/BeanManager"); Bean bean = bm.resolve(bm.getBeans(ClassA.class)); Creati…

EntityListenerからEntityManagerやQueryを触るの禁止。

Hibernateのドキュメントより。 A callback method must not invoke EntityManager or Query methods! stackoverflowを探してみるとJPAの仕様でも非推奨のようです。 それよりもEntityにEntityManagerをインジェクトしたい…。 Springなら楽そうなのになぜCDI…

Bytemanでビルドいらずの時間計測処理追加

JBoss.orgにて公開されているBytemanというバイトコードインジェクションツールを用いて、ソースコードに変更を加えず、処理時間を計測する方法を紹介。 再起動とか設定の追加はゆるされるけれど、ソースコードの修正は許されないような場合に便利。 あとは…

JavaのGCログを日付時刻で表示する

こんなのを見て。 http://www.theserverlabs.com/blog/2010/05/26/human-readable-jvm-gc-timestamps/まずは基本編。 -Xloggc: -Xloggc: タイムスタンプが付いたファイルにGCステータスのログを記録する -XX:+PrintGCDetails Print more details at garbage …

JPA2タイプセーフクライテリアを使ってみた

まずは環境を準備。 JBoss AS 7を用意。 Eclipse3.7.1を用意。 JBoss Toolsをマーケットからインストール。 ランタイム設定でJBoss AS 7を設定しておく。 forge consoleビューを表示。 三角ボタンでforgeを起動。 プロジェクトを作成する(好きなディレクトリ…