読者です 読者をやめる 読者になる 読者になる

Java EE 事始め!

主にJava EEについて、つらつらとマイペースに書いていきます。「Java EEを勉強するときに、一番最初に読んでもらえるブログ」を目指して頑張ります!

マイクロサービスアーキテクチャ読書会 資料一覧 #MSA読書会

第1章 : マイクロサービス (未発見) 第2章 : 進化的アーキテクト (未発見) 第3章 : サービスのモデル化方法 Msa reading chap3 第4章 : 統合 前半 Msa読書会#3前半 後半 第三回マイクロサービスアーキテクチャ読書会(後半) 第5章 : モノリスの分割 モ…

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…

Java EE 7でもアクションベースMVC! -MVC 1.0への移行を睨んだJersey MVCの活用- #javaee

この記事について このブログは、Java EE Advent Calendar 2015 - Qiitaの25日目(最終日)です。 昨日はhondaYoshitakaさんの「Java - JAX-RSによるExcel/CSV/PDFファイルダウンロード - Qiita」でした。 MVC 1.0はJava EE 8から アクションベースMVCと言え…

@Transactional(Spring Framework)のpropagation属性

表題の件を調べていて、ほぼJava EEのJTAと同じかと思いきや、NESTEDというJTAには無いものがあったのでまとめました。 @Transactionalとは? メソッドに付加すると、メソッドの開始がトランザクションの開始、メソッドの終了がトランザクションの終了になり…

Java EEハンズオン事前準備手順(JJUG CCC 2015 Fall) #jjug_ccc #ccc_m1

JJUG CCC 2015 Fallが近づいてきました。 今回、僕は2時間のJava EEハンズオンを担当することになりました。 ■脱Struts&独自フレームワーク!今からでも遅くないJava EE Web開発入門ハンズオン! http://www.java-users.jp/?page_id=2064#M-1 このハンズオ…

【全部俺】JavaのIDE、どれを使う?【3大IDE頂上決戦】

皆さんはJavaのIDE、何をお使いでしょうか。 2015年現在では、おそらく以下の3つのいずれかだと思います。 Eclipse NetBeans IntelliJ IDEA (ちなみに、僕自身が使った経験がほとんどないので、VimやEmacsなどのエディタは今回のスコープから除外しますm( )m…

GlassFish/Payaraで@Transactional境界内で発生した例外が失われる現象が治ってた!

普段から僕は、Java EEやるときはGlassFish/Payaraを使っているのですが、1つだけ懸念事項がありました。それが表題の現象です。それがPayara 4.1.1.154(おそらくGlassFish 4.1.1)で治っていた、というお話です。 どんな現象? Java EEでWeb作るときは、永…

10分で出来る!初めてのTwitter4J & Twitterアプリ作り方メモ in 2015-10-18

最近はJava EE系でもJAX-RS研修の担当が多くなっている関係上、OAuthやRESTクライアントにも興味が出てきました。ということで、初めてTwitter4Jでプログラムを作ってみました。参考にしたのは、@kikutaro_さんのこちらのブログです。 Twitter4Jを使ったら10…

Payara(GlassFish)でMariaDBのJDBC接続プールが作成できない

表題の通りです。 環境 MacBook Air (OS X El Capitan) MariaDB 10.1.x Payara Web 4.1.153 JDK 1.8.0_60 試していませんが、おそらくWindowsやGlassFishでも同じ現象が起こると思います。 現象 MariaDBのJDBCドライバのJARを「<PAYARA_HOME>/glassfish/lib」や「<PAYARA_HOME>/glassfi</payara_home></payara_home>…

【注意事項あり】Doma 2だけどCDI/EJB使ってJTAでトランザクション管理したい!そしてJAX-RSでREST作りたい!

Doma 2とは?基本的な使い方は? Doma 2は、SQLを外部ファイルに書くことができるORマッパーです。ネイティブSQLが書けること、依存ライブラリが無い事、国産 OSSで日本語ドキュメントが充実している事などが魅力です。 下記の記事もご参考になさってくださ…

Payara Micro公式ドキュメントの在り処

自分のためにメモ。 公式ドキュメント Payara Micro (Payara 4.1.153) · payara/Payara Wiki · GitHub Javadoc fish.payara.micro (Payara Micro Edition Core 4.1.154-SNAPSHOT API)

MVC 1.0 EDR2リリース&変更点解説!

公式資料 MVC 1.0のアーリードラフト第2版がリリースされました! JSR 371はこちら JSR-000371 Model-View-Controller Early Draft Review 2 Ozark(MVC 1.0の参照実装)のソースコードはこちら spericas/ozark · GitHub 僕の解説資料 スライド資料 それに伴っ…

CDI/JTAを使うなら読んでおきたいリンクまとめ

日本語書籍 「わかりやすいJava EE」「Java EE 7徹底入門」です。 金魚本およびEE 5本には記載がありません。 Amazon CAPTCHA Amazon CAPTCHA まず概要を掴む CDIに関しては、まずは下記の上妻さんの記事をご確認ください。バージョンが上がるごとに注意点を…

多分どこよりも早いJSON-B解説(Java EE 8・Java API for JSON Binding)

JSON-Bって何? Java EE 8で追加される予定の、JavaオブジェクトとJSONの相互変換を行う機能です。例えば、下記のようなJAX-RSコードがあるとします。 public class Employee { private int id; private String name; private java.time.LocalDate joinedDat…

JSFを使うなら読んでおきたいリンクまとめ

この記事について タイトルの通りですが、JSFを使う上で確認しておきたい情報のリンクをまとめました。 まずはコレ! 菊田さんのJava Day Tokyo 2015の発表資料です。 JSFの全体像や、JSFで何ができるかなどが綺麗にまとまっています。 PDF(直リンク) http…

【修正しました】NetBeansでtarget/generated-sources配下のソースがエディタ上で認識できない場合の対処法

NetBeans+MavenでJPA(EclipseLink or Hibernate)やってると、エンティティのメタモデルクラスが自動生成されます。 これらのソースはプロジェクトルート/target/generated-sources/annotationsフォルダに生成されます。 にも関わらず、NetBeansのエディタ…

【20160806更新】Mac版Eclipse 4.5 Mars/4.6 Neonをpleiadesで日本語化する方法

tar.gz版のダウンロード Eclipse公式サイトのトップからだと、インストーラーを実行してインストールする版になります。 従来通りの解凍するだけで完了するtar.gzファイルは、下記のページからダウンロードできます。 http://www.eclipse.org/downloads/pack…

MacでJava開発環境を整える

セキュリティソフト カスペルスキーの1台3年版を使っています。特に重くなく快適に使えています。 参考URL カスペルスキー 2015 マルチプラットフォーム セキュリティ 製品情報|カスペルスキー キーボードの謎の記号 ネットでいろいろとMacの情報を調べて…

JJUGのReactive Streams勉強会に行ってきました!

最近ちょこちょこ話題になっている「Reactive Streams」についての勉強会に行ってきました! 僕の事前知識は「『React.js』とか『RxJava』っつーのがあるらしい」という程度です。 実際に触ったことはない・・・(^^; 事前にちょっとネットで調べはしたんです…

jBatch(Java EE 7)をNetBeans+GlassFish+Mavenではじめました

jBatchとは? Java EE 7から新たに加わった、バッチ処理用フレームワークの仕様です。 EE 6までは、Java EE標準仕様にバッチは入っていなかったのですが、EE 7から加わりました。 正式名称は「Batch Application for the Java Platform」で、公式?の略称が…

IntelliJ IDEAでJAX-RSが捗る!

小ネタです。 IntelliJ IDEA 14.1.1 Ultimate Editionを前提としています。最近は、意識してIntelliJ IDEA+GradleでJava EEやってます。 いつもはNetBeans+Mavenを使うことが多くて、これが一番手軽なんですが、IDEAは補完がとにかく強力で、「ここも補完…

もう1つのGlassFish「Payara」を使ってみた

「Payara」とは? GlassFishをベースとした、オープンソースのAPサーバーです。Payara Homeドメインが「.co.uk」ということで、イギリスの企業みたいですね。 上記の公式Webサイトによると、「24時間365日サポートしてまっせ!」「GlassFishをバグ修正したり…

JSR 371(MVC 1.0) Early Draft version 1.0 の日本語訳(後編)

この記事について Java EE 8の新機能であるMVC 1.0のJSR 371 Early Draft Release 1 を、英語の勉強がてら日本語訳してみました。 今回は後編として、第5章~第6章(最後まで)を訳します。前編(第1章~第2章)はコチラ↓ JSR 371(MVC 1.0) Early Draft vers…

JSR 371(MVC 1.0) Early Draft version 1.0 の日本語訳(中編)

この記事について Java EE 8の新機能であるMVC 1.0のJSR 371 Early Draft Release 1 を、英語の勉強がてら日本語訳してみました。 今回は中編として、第3章~第4章を訳します。第5章~第6章は、後編とします。 前編(第1章~第2章)はコチラ↓ JSR 371(MVC 1.…

JSR 371(MVC 1.0) Early Draft version 1.0 の日本語訳(前編)

この記事について Java EE 8の新機能であるMVC 1.0のJSR 371 Early Draft Release 1 を、英語の勉強がてら日本語訳してみました。 僕はあまり英語が得意ではないので、正確な内容を知りたいという方は、下記の英語原文をお読みください。 https://jcp.org/en…