Java

GlassFish Users Group Japan 勉強会 2013 #1

久しぶりの勉強会エントリですが、GlassFish Users Group Japan 勉強会 2013 #1に参加して来ました。勉強会の内容は、サブタイトルの「Java EE 7リリース記念・集中勉強会」の通り、先日リリースされたJava EE7の機能についての紹介がメインでした。個人的な…

Gradleを使ったWebアプリケーションのさくさく開発(war作成とJUnit編)

時間とモチベーションに余裕のあるうちに行けるところまで調べていきます。というわけで、今回はwarの作成と、Jettyでの起動確認。 コード 需要はないと思いますがGitHubに公開します(EclipseからGitを利用するのに妙にハマりました…。Gitはあまり使い慣れ…

Gradleを使ったWebアプリケーションのさくさく開発(トラブルシューティング編)

さくさく開発を目指しているのに、トラブルシューティングに時間をとられるのもいかがなものかと思いつつ…。 Build Gradle Model for xxx 昨日作ったgradle-sampleプロジェクトが、今日Eclipseを起動した時にタスクが何も実行できなくなってしまいました…。…

Gradleを使ったWebアプリケーションのさくさく開発(セットアップ編)

IvyやMavenもまともに使ったことはないですが、Gradleを使いはじめました。 目標と前提条件 Gradleがどこまで面倒見てくれるかは何も考えずに立てた条件がこちらの通りです。 Jettyで動作する実行可能なWAR(java -jar sample-app.war -p 8080みたいな形で)…

Java ♡ HTML5 Nightに行ってきた。

先日、Oracle本社にて開催されたJava ♡ HTML5 Nightに行ってきました。JJUGとhtml5j.orgの初の共催イベントらしく、とてもためになる内容で、面白かったです。主催、スタッフ、参加者の皆さま、おつかれさまでした。資料は公開されるのかどうかわからないで…

SinatraをJerseyと比べながら試してみた

Ruby on Railsのintegrationテストを真面目に書いていたら挫折しそうになったので、色々と寄り道しながら調べていたら*1、Ruby on Rails以外のRuby製WAFとしてSinatraを知ったので、試してみました。簡単なRESTfulアプリケーションを作りたいという時の選択…

リソースクラスにGuiceでオブジェクトをDIする(Jersey版)

JerseyとGuiceの連携の例。Jerseyを使うとJAX-RS準拠のRESTfulなHTTPサービスを作ることができる。この時リソースクラス(クラス宣言に@Pathをつけたクラス)は、自動でHTTPリソースとして登録されるので、特別インスタンスを取得することはない。ただ、DIコ…

JavaからPowerShellを実行するとコマンド(プロセス)が終了しない場合の対応

JavaからWindows PowerShellスクリプトを実行しようとすると、Process#waitFor()がいつまで経っても終わらなくて(powershellプロセス自体も残ったまま)ハマったので、それを回避する方法についてまとめる。以下は、JavaからC:\test.ps1というPowerShellス…

DbUnitをApache POI3.8互換にする

昨日のつづき。修正箇所はそこまで多くなかったので、自前で修正してjarを作ることにした。DbUnitが依存するApache POIを最新の3.8にしてNoSuchMethodErrorを回避する方法。 org.dbunit.dataset.excel.XlsTable org.apache.poi.ss.usermodel.DateUtilをimpor…

DbUnitが2年ぶりに新しくなったので・・・

DbUnit( http://www.dbunit.org/ )の2.4.9がちょっと前にリリースされた。アップデートはもうないものだと思っていたのだけど。DbUnitは、Excelのデータファイルを扱うために利用しているApache POI( http://poi.apache.org/ )を使っている。ただ困ったこと…

トランザクション属性REQUIRES_NEWの落とし穴

トランザクション属性としてREQUIRES_NEWを指定したセッションBeanのメソッドを、別のセッションBeanから何度も呼ぶと、2回目の呼び出しの時にトランザクションタイムアウトが起こるまで、処理が固まってしまう現象が起きた。簡略化すると、以下のようなセッ…

Windows環境にてRESTEasyを使ってJSONレスポンスを返すとUTF-8にならない件

RESTEasyの話。リソースクラスを実装して、JSONレスポンスを返そうとした時に、アプリケーションがUTF-8でなくShift-JIS形式のJSON文字列を返してしまう現象に出くわした(JBoss 5.1.0GA, Seam 2.2)。なお、JSONエンコーディングにはJSONICを利用。ただし、…

Domaで作ったエンティティクラスとDBスキーマからDB設計書を作りたい

作ったアプリからリバースエンジニアよろしくDB設計書を自動生成したい。生成されるファイルの形式やフォーマットは不問(第三者が前知識なしに必要な情報を得られれればOK)。 前置き ところで「何でDB設計書がないのか?」というと、正確には、最初からな…

Quartzで一つのジョブに複数のトリガーを設定する

JavaでCronとかスケジュール実行したい場合に、Quartzってのがある( http://quartz-scheduler.org/ )基本的な使い方は公式のリファレンスや他所を参照として、1点、はまった点についてメモ。一つのジョブAに対して、時刻a、時刻b、時刻cの3つの時刻に起動す…

サービス化

JavaService Jakarta Commons Daemon Java Service Wrapper Java Service Wrapperチュートリアル(日本語)http://wrapper.tanukisoftware.com/doc/japanese/integrate.html作ったサービス登録したいJavaアプリと、Java Service Wrapperをうまくパッケージ化…

Selenium RCを使ったJBoss Seamアプリケーションの自動テスト

こうすればテストしやすい、といったTipsをまとめる。想定はSelenium RC(Java)。 View(xhtml): JSFタグでは原則id属性をつける 例えば <h:form> ではなく <h:form id="fooForm"> とする。これにより、表示されるページでは、各入力部品のidとして、 j_id123:name のように動的に割り振られ</h:form></h:form>…

リフレクションを使ったAOPのためのNotNull引数チェック

EJB3でのAOPのためには、@AroundInvokeアノテーションを付与したメソッドを定義したインターセプタ用のクラス(これはバインドしたいクラス自身に定義してもOK)を作り、バインドしたいクラスにインターセプタクラスを@Interceptorsアノテーションを使って付…

Seamでアプリを開発する際のTips集

※ Seam2.2。 エラー時に例外メッセージを表示する。 <pages> <exception class="org.jboss.seam.security.AuthorizationException"> <end-conversation/> <redirect view-id="/error.xhtml"> <message severity="WARN">#{handledException.message}</message> </redirect> </exception> </pages> exception要素のclass属性に何も指定しないと、任意の例外時に対する設定になる…

日付を扱うライブラリ

Joda Timeを使っていたけど、Date4jってのもあるらしい。http://www.infoq.com/jp/news/2011/12/date4j-vs-joda-timeたしかに、今関わっているやつを見ると日付「オーバーフロー」の扱いがカスタマイズできるのはよさげ。

JAXBのお勉強

@XMLRootElementや@XMLAttributeなどのアノテーションや設定値は、XML Schemaと対応する。XML Schemaについて触りを掴んでおくと、トラブルシューティングしやすい。@XmlAccessTypeに指定できるNONE/FIELD/PROPERTY/PUBLIC_MEMBERを意識する。適当に@XmlElem…

ログ出力をslf4j+logbackに統一

JBoss ASとSeamを使ったアプリケーションのログ出力形式をslf4j+logbackに一元化したい。要するに、JBossのログ出力(Log4jService)の出力をうまく上書いちゃおうとする時の方法について。アプリが出すログは素直にslf4jを使ってあげればいいのだけど、JBoss …

log4jからslf4j+logbackへの移行

log4j.propertiesのようなpropertiesファイルは使わなくなり、logback.xml(テスト用の場合はlogback-test.xml)のようなxmlファイルのみになった。そのため、移行の際には設定ファイルの変更(作り直し)が必要となる。これには、以下のURLにてオンラインで…

WebサービスのためのJersey V.S. RESTeasy

お手軽Webサービスを実現するための手段という観点で、JerseyとRESTeasyを比べてみる。JavaEEのチュートリアル( http://download.oracle.com/javaee/6/tutorial/doc/gilik.html )とほぼ同じような、以下のリソースクラスをWebサービスとして公開したいケース…

EasyMock#anyObject()で使ったオブジェクトを実行後に取り出して検証する

つい最近3.1がリリースされたEasyMockだが、かつての記事でやりたいと思っていた、EasyMock#anyObject()で使われたオブジェクトを実行後に取り出す方法を考えた。使用例は以下のような感じになった。モデル。ageとnameという2つのフィールドを持つPOJO。 pub…

Embedded JBossとかEmbedded GlassFishとか。

ダウンロード:http://sourceforge.net/projects/jboss/files/Embedded%20JBoss/Embedded%20JBoss%20Beta%203/チュートリアル:http://community.jboss.org/wiki/EmbeddedAndJavaSEただまぁ、スタンドアロンな環境でさくさくっとアプリケーションの開発、テ…

JSFあれこれ

コレクションのループ処理。普通にSeamのサンプルを除いても<h:dataTable>を使ったものばかりだったので。下記のサイトを参考にした。http://d.hatena.ne.jp/shin/20090829</h:datatable>

RESTEasyとEJB(2)

以前のエントリにて、「RESTEasyを使ったアプリでセッションBeanがうまくDIできない」件、改めて考えるとできるのでは?という説。まずEJB3上でのDIのルールと、SeamでのDIのルールについて整理。 EJB3のDIの適用範囲はEJB3のみ(ここでいうEJB3というのは、…

Ajaxライブラリの比較

JBoss Seamで動くWebアプリケーションでのちょっとリッチなUIを提供するためのライブラリについて。seam-genをプロジェクトを生成すると、ICEFacesとRichFacesのどっちにする?ってことを聞かれたのが調べるきっかけ。それらに加えて、Ajax4JSFを合わせた3つ…

RESTEasyとEJB

EJBとの連携も売り文句にしているRESTEasyだけど、どうもまだ完全にうまく組み込めないみたい。まだJBoss初心者なので、設定がうまくできていない可能性も多々あるけど。 DIするために、web.xmlに明示的な設定作業が必要。インタフェースと実装クラスが1:1に…

RCPプロダクトのエクスポート等

クラスパスやらjarやら依存プラグインやらをplugin.xml, MANIFEST.MFやらに設定する時、どこにどうすればよいかの整理。 [依存関係]タブの依存関係 依存するプラグイン を設定する。設定のためにはEclipseのpluginsに該当プラグインがインストールされている…