2016-01-01から1年間の記事一覧

Payaraのバグを報告してみよう

この記事は? Payara Advent Calendar 2016の22日目です。 Payaraは、GitHub上でオープンソースで開発されています。Payara開発チームは、誰でもGitHubのIssueに書き込んでバグ報告してくれてOK、というスタンスをとっています。 僕は過去2回*1バグを報告し…

ThymeleafでApache Shiroを使うためのライブラリを作ってみた

この記事は? Java EE Advent Calendar 2016の19日目です。 昨日の記事は@khasunumaさんの「MicroProfile によるアプリケーション開発」でした。明日は@emaggameさんです。 今回は、以前@n_agetsuさんが紹介されていたApache Shiroというセキュリティフレー…

必要最小限のサンプルでThymeleafを完全マスター

この記事は? Java EE Advent Calendar 2016 - Qiitaの12日目です。 昨日の記事は@yyYankさんの「どうすんのJava EE - Javaプログラマのはしくれダイアリー」でした。明日は@n_agetsuさんです。 Thymeleafは、Javaで作られたテンプレートエンジンです。JSPの…

Bean Validationでクライアント側のロケールに合わせたメッセージを出力する

やりたいこと 通常のBean Validationでは、クライアント側ではなく、サーバー側のロケールのエラーメッセージになってしまいます。 なので、クライアント側のロケールに合わせて $ curl -v -H "Accept: text/html" -H "Accept-Language: ja" http://localhos…

【書評】Spring Microservices(洋書)

www.packtpub.com Spring Cloudの勉強をするために買いました。 内容としては、 Spring Bootの基礎 Microservicesとは何ぞや?その背景は? Circuit BreakerやService Discoveryって何ぞや?なぜ必要なのか? Spring Cloudの基礎 Docker、Mesos など、かなり…

「新人研修や本では教えてくれないJava!」というタイトルで発表してきました #jjug_ccc

昨日のJJUG CCC 2016 Fallで発表してきました。ありがたいことに、CCC登壇は6回連続6回目になります。 speakerdeck.com 朝イチ10時から、かつ基調講演の裏番組にもかかわらず、120名くらいの部屋がほぼ満席となりました。 ご参加いただいた皆様、そして運営…

【回避方法あり】Payara 4.1.1.164には認証に関するバグがありました

環境 Payara Web ML 4.1.1.164 確認していませんが、Full Profileでも同じバグがある可能性があります。 また、4.1.1.163以前のバージョンには、このバグはありません。 現象 JDBCリソースやレルムの設定を正しく行っても、アプリケーションでフォーム認証が…

Spring Boot 1.4でThymeleaf 3を使う

プロジェクト作成は、Spring Initializrとかで作成済みの前提です。 Spring Boot 1.4では、デフォルトでThymeleaf 2が使われます。 Thymeleaf 2ではXHTMLで書く必要がありますが、Thymeleaf 3だと完全にピュアなHTMLで書くことが可能です。 pom.xmlのpropert…

Java EE 7を勉強する方法(2016年ver.)

今年になって、Java EEの学習環境がガラッと変わりました。 2016年も半分以上過ぎてしましましたが(笑)、今からJava EE 7を勉強するにはどうすべきか、改めて書きたいと思います。 1. まずは作りながら学ぶ 以下3冊のいずれか1つで、Webアプリを作りながらJa…

【書評】「パーフェクトJava EE」は最強のJava EE 7リファレンス!

https://www.amazon.co.jp/パーフェクト-Java-EE-井上-誠一郎/dp/4774183164www.amazon.co.jpgihyo.jp 著者の1人である@kikutaro_さんから献本いただきました。ありがとうございます! これまでのJava EE書籍の課題 まずは、Java EEの最新バージョンである「…

Thymeleafのビューから@NamedなCDI管理ビーンにアクセスする

やりたいこと こんなCDI管理ビーンがあって、 @Named @SessionScoped public class SessionDto implements Serializable { private String id; public String getId() { return id; } } Thymeleafのビューからこんな感じで参照したいです。 <p th:text="${sessionDto.id}">...</p> 本当は上記み…

ThymeleafでJava SE 8のDate and Time APIを使う方法

やりたいこと Thymeleafのビューで、java.time.LocalDateなどJava SE 8で入った日時クラス(Date and Time API)を使いたい。 Date and Time APIについてはこちらをどうぞ。 Java日付時刻APIメモ(Hishidama's Java8 Date and Time API Memo) (蓮沼さんの資料…

JJUG CCC 2016 SpringでアクションベースMVCの発表してきた&楽しんできた #jjug_ccc

発表してきた 「ネクストStruts/Seasar2としてのJava EEアクションベースMVC入門」というタイトルで発表してきました。 165人の部屋が、ほぼ満席となるくらいの方々にお越しいただきました。ありがとうございます。 やっぱり、StrutsやSeasar2からの移行をど…

EclipseLinkとHibernateではTemporalType.DATEなフィールドの型が違う

かなり久々のJPAネタ。 こんなエンティティクラスがあって、 @Entity public class Employee implements Serializable { @Id @Column(name = "emp_id") private Integer empId; @Temporal(TemporalType.DATE) @Column(name = "joined_date") private java.ut…

Payara Microの実行可能JAR(Uber JAR)がとても簡単な件

先日、Payara 4.1.1.162がリリースされました! その組み込みサーバー版であるPayara Micro 4.1.1.162には、「Uber JAR」というSpring BootやWildFly Swarmのような単体で実行可能なJARを作る機能が追加されました。 Payara 4.1.1.162 がリリースされました …

Jersey MVCでThymeleafを使おう!

この記事について JJUG CCC 2016 Spring「ネクストStruts/Seasr2としてのJava EEアクションベースMVC入門」の補足記事です。 Jersey MVCで、JSPの代わりのビューとしてThymeleafを使う方法を解説します。 Jersey MVCの基本については、下記の記事を参照して…

Jersey MVC + Thymeleafしたら文字化けた時の対策

環境 OS X 10.11.4 Google Chrome Payara Web ML 4.1.1.161.1 (Jersey 2.22.1) Thymeleaf 2.1.4.RELEASE プログラム概要 @bufferingさんの記事を参考に、Thymeleaf用のTemplateProcessorを作成。 @Provider public class ThymeleafTemplateProcessor extends…

Cloud Foundryワークショップに参加してきました! #cfws

2016-04-05(火)に開催された、Pivotalさん主催のCloud Foundryワークショップに参加してきました! クラウド関連のことはあまり知識がないので、クラウドの世界ってどんなものなんだろう?ということ知りたかったというのが動機です。 講師は@makingさん。冒…

TOEIC受験記(2016年3月)

なぜ受験しようと思ったか 僕の仕事は研修講師(主にプログラミング)なので、色々と調べ物をする時にどうしても英語の仕様書・書籍・ブログ記事などを読む必要が出てきます。やはり、ITの本場はアメリカです。 なので、もっとリーディング力を高めたいと思っ…

Jersey MVCのレスポンスのContent-Typeが「*/*」になる問題対策

詳細は後ほど追記します。 ContianerResponseFilterだと何故かできなかった・・・。 Jersey MVCは、MessageBodyWriterの中でContent-Typeを上書きしています。 ContianerResponseFilterはMessageBodyWriterよりも前に実行されるので、そりゃあ効かないですね…

Payara 161.1 で @Transactional のバグが修正されました!

この記事は、半分ポエムです。 最初のきっかけ 下記の@opengl_8080さんの記事でした。 JavaEE使い方メモ(JTA) - Qiita CDIビーンのメソッドに@Transactionalアノテーションを付加しても、非チェック例外発生時にロールバックされない、というバグがあるの…

Jersey Test + MockitoでJAX-RSリソースクラスの単体テスト

Jersey TestでJAX-RSリソースクラスの単体テストするときに、Mockitoでモックのビジネスロジックを差し込みます。 環境 Payara Web ML 4.1.1.161 Jersey 2.22.1 pom.xml JUnit Jersey Test Jersey Testの実行環境 Mockito が必要です。 jersey-test-framewor…

指定したフォルダ配下の全.javaファイルのタブをスペースに一括変換する

$ find . -name "*.java" -exec perl -i.bak -pe 's/\t/ /g' "{}" \; こうするとタブがスペース4つに変換はされるが、「Xxx.java.bak」というファイルが大量にできるので、これを一括削除。 $ find . -name "*.bak" -delete 参考URL java - Change all tabs …

Jersey MVCでレルム認証する(Jerseyも基本的には方法は同じ!)

Jersey MVCでレルム認証する(Jerseyも基本的には方法は同じ!) Java EEの認証・認可機能といえばレルムですね。 今回は、Jersey MVCでレルムを使ってみました。MVCじゃないJerseyでも方法は基本的に同じです。 ソースコードはGitHubにアップしています。 htt…

「Seasar2が終わる!」と慌てるべきではない理由。「Seasar2」という言葉をしっかり定義しよう

2016年9月26日、Seasar2のサポートが終了します。 Seasar2から卒業しよう - DJ HIGAYASUWO (元ひがやすを) 僕自身、大好きなフレームワークです。 EclipseプラグインのDoltengなど、開発環境までそろったしっかりそろっているフレームワークって、今でもなか…

DBから取ってきたエンティティをビューやRESTに直接渡すべきではない理由?

とりあえず、見つけた記事を自分用にメモ。 極北データモデリング パトリオットミサイル: プログラマーの雑記帳 知りたいこと なぜエンティティをDTOに詰め替えすべきなのか? 詰め替えはどのクラスでやるべきなのか?コントローラー?ビジネスロジック?DAO…