サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
kokuzawa.github.io
JPAで作ったデータアクセスクラスのテストをJUnitで作る際に、EntityManagerの扱いが問題になってきます。 プロダクトコードだと、PersistenceUnitのtransactionTypeをJTAとするため、 この設定のままユニットテストを実行には、APサーバが起動している必要があります。 この状態だとJenkinsに食わせたりするときに色々大変だし、 そもそもテスト用にはデータベースを別にしたいので、設定をテスト時だけ書き直す必要が出てきて面倒です。 そこでプロダクトコードとテストコードで参照するPersistenceUnitを変更するようにしてみました。 ファイル構成 ファイルは下記のように、プロダクトコードとテストコード用にそれぞれpersistence.xmlを用意します。 root └ src ├ main │ ├ java │ │ ├ Account.java
JavaでWebアプリを作る場合、Mavenのmaven-archetype-webappテンプレートを利用しています。 非常に便利なのですが、Servlet 3.1が出ている今、 生成されたwe.xmlがServlet 2.3の記述になっていてちょっと古すぎます。 そのため、毎回テンプレートから生成したあとにweb.xmlを書き換えなければなりません。 このちょっと面倒な作業を楽にするためにバージョン毎の宣言方法をメモしておきます。
この記事は JavaFX Advent Calendar 2014 の6日目です。 昨日はsoutokuさんのJavaFX:WYSIWYGエディタを作るでした。 明日は@backpaper0さんです。 JavaFX 楽しいですよね。 JavaFXには標準でWebページを表示するためのWebViewクラスがあり、これを使えばいろいろなことができます。 今回はこのWebViewクラスを使ってMarkdownエディタを作ってみることにします。 MarkdownといえばGitHubとかでも利用している人が多いかと思いますが、文書を記述するための軽量マークアップ言語です。 Markdownでテキストを入力し、それをパースしてWebViewに表示するという簡単な動作をするアプリケーションです。 環境 OS: Mac OSX Yosemite 10.10 メモリ: 4GB Java: Java SE R
この記事はJava Advent Calendar 2014の25日目です。 昨日は@smogamiさんの「LombokとLombok-pg: Javaコードを減量する魔法のスパイス」でした。 今年も様々な面白い記事がアップされました。 そんな楽しかった25日間も今日で最終日です。 最終日なのですが、ちょっと地味にJava7で追加されたjava.util.Objectsについて書きたいと思います。 java.util.Objectsクラスでは今までありそうでなかった便利なユーティリティメソッドが用意されています。 Java7の時点では下記のメソッドが定義されています。 static int compare(T a, T b, Comparator<? super T> c) static boolean deepEquals(Object a, Object b) static boole
だいぶ前にリリースされたJSF 2.2ではCSRF対策の機能が追加されました。 そこで、JSFをどのように利用している場合にCSRFの脆弱性が発生するのかと、 JSF 2.2で追加されたCSRF対策を実施すると、この問題をどのように防げるのかを確認してみます。 環境 OS: Mac OSX 10.9.4 Java: Java(TM) SE Runtime Environment (build 1.8.0-b132) メモリ: 4GB WildFly 8.0.0.Final アプリを作る CSRFの脆弱性がある、といわれても具体例がないとなかなかイメージするのが難しいかもしれません。 そこで、ここでは実際に攻撃を受けるアプリを作り、脆弱性を露呈されてみたいと思います。 コードの構成は下記のようになります。 JSFCSRFSample +- src | +- main | | +- java
Java EE Advent Calendar 2014の20日の記事です。 昨日は@yoshioteradaさんの「Java EE 8 の新機能概要のご紹介」でした。 明日は@suke_masaさんです。 Jersey-1.8を使ったアプリを最新の2.14に置き換えようと思ったところが始まりです。 サーバーがWildFlyだからRESTEasyが含まれているので、JerseyではなくRESTEasyを使えば良いのだけれども、 アプリ内でJersey MultiPartを使っているのでひとまずバージョンアップを試みたのですが、 いろいろ問題があって結局RESTEasyに置き換えました。 実際の運用はTomcatを使っているので、Tomcatでも動作する設定を考慮しています。 なので、WildFlyオンリーで考えた場合は不要な設定があるかもしれません。 環境 OS: Mac OSX Yose
だんだんと暑くなってきた先週、Java7 を導入できることになって大喜びして IntelliJ IDEA の Inspect Code を使って Java7 に対応するコードに一括変換をした月曜日、 今年は良い夏を迎えられそうだと思っていたら、OS が Java7 をサポートしてなくてコードを Java6 にダウングレードするという、モチベーションがだだ下がりな作業したところです。 ただ Java6 にダウングレードするというものやってられないので、 Eclipse の Web アプリ構成のプロジェクトを Maven 構成のプロジェクトに置き換えようと考えました。 Maven 構成に変えるのはフォルダの位置を変更するだけなのでとても簡単で、 かつ、ライブラリはビルド時に取得してくれるから、今までのように VCS に jar ファイルも一緒にコミットする必要がなくなり、 アプリのリソース自体
Javaで簡単に全文検索を体験するには Apache Solr (ソーラー)が便利です。 今回は現時点での最新バージョンである 4.10.0 を利用して全文検索を体験したいと思います。 環境 OS: Mac OSX 10.9.4 Java: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM (1.8.0 25.0-b70) メモリ: 4GB Apache Solr-4.10.0 Solrを起動する SolrはWebアプリケーションの形になっています。 ZIPファイルをダウンロードして解凍すると、distフォルダにWARファイルが入っているので、 これをアプリケーションサーバにデプロイすれば良さそうですが、 今回はexampleフォルダにあるstart.jarを単独起動させます。 java -jar start.jar 起動するとログが
久しぶりにSpringのサイトを見に行ったら、Spring Framework一式がZIPでダウンロードできなくなってた。 サイトは今風になって素敵なんだけど。 MavenとかGradleを使って取得するのが正しい方法として挙げられているけれども、一式を取得する方法は特に記載がない。 Mavenを利用したことがなくて一式欲しいという需要があるようなので、ここで一つの方法を書いてみようと思う。 Gradleの方が記述が簡単そうだけど、ちゃんと使ったことがないので今回はMavenを利用する。 Mavenでは maven-asembly-plugin がこの要望を満たしてくれる。 maven-assembly-plugin は pom.xml とは別に個別の設定ファイルが必要なので、それを用意する。 distribution.xml: <?xml version="1.0"?> <assembl
bootstrap-3.0.2のRemote Modalの書き方がやっと分かった。 今までは.modal-bodyだけが書き変わっていたのに、バージョン3以降は中身が全部書き変わるみたい。 つまり呼び出し元はこれだけでいい。 <a href="inner.html" data-toggle="modal" data-target="myModal">Click</a> <div class="modal fade" id="myModal"></div> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</butt
この記事はJava Advent Calendar 2013の22日目の記事です。 昨日は@nagaseyasuhitoさんの「mvn siteのtips三連発」でした。 明日は monzou さんです。 ファイルアップロードを実現するために何を使っていますか? 私はもっぱらJAX-RSを使っています。 ファイルアップロードはAX-RSの仕様には含まれていないのですが、ほとんどの実装でサポートされているようです。 その実装の中から、今回はJerseyを使った複数ファイルのアップロードについて紹介しようかと思います。 今回利用したJerseyはGlassFish4に含まれているものを利用します。 ライブラリとしては以下のjarになります。 <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey
この記事は、Java EE Advent Calendar 2013の18日目の記事です。 昨日は @yumix_h さんの私がJava EE開発の現場から学んだことでした。 明日は誕生日の @aoetk さんです。 みなさんJSF使ってますか? JSFってちょっと取っ付きにくいところがありますよね。でもそんなJSFもバージョンが2.2になって、 ちょっと良い感じになってきたので使ってみませんか、 ということでJSFのマークアップについて書いてみたいと思います。 デザイナーとプログラマの作業の分担 JSFはデザイナーとプログラマで作業が分担できるということを良く聞きます。 デザイナーを雇うほど大きなプロジェクトでJSFを使ったことがないし、 分担しているということもあまり見聞きしませんが、実際この分担というのはどういうことなんでしょう? デザイナーはHTMLは分かりますがJSFはわか
JPAはJavaSE上でも動作するので、DBアクセスをする場合、最近はもっぱらJDBCではなくJPAを利用している。 サーバサイドを利用しない、クライアントアプリでDBアクセスをするのは、主にデータ移行ツールとかが多く、 ひとつのトランザクション内で処理されるレコード数が数万レコードになる事が多い。 数万レコードを移行する為に、JPAを利用した移行ツールを作り、実データでテストをしたところ、 想定外のパフォーマンス劣化が発生し、その解決に幾分か時間が掛かってしまった。 そのため、パフォーマンスが劣化する状況とその解決方法を簡易に示す為の簡易なコードを作成、備忘録として残しておく。 アプリ構成 JavaはJDK7、JPAの実装はEclipseLink-2.3.2を利用。DBはDerby。 コード 検証に利用するコードは下記の通り。 Bookエンティティを1万レコード永続化する。この際、永続化
ブランチがこんな感じにある場合を想定します。 $ git branch TEST-001 TEST-002 master TEST-001とTEST-002の作業は終わったので、ブランチを削除したい。 ただ、ブランチ削除のコマンドを2回実行するのは面倒。 そんなときは次のコマンドを実行すると一括で削除可能です。 $ git branch | grep TEST | xargs git branch -d ブランチを削除する場合、ブランチ名にワイルドカードが使えません。 なので、コマンドをパイプでつなげて一括削除を実現します。 便利ですね :)
<dependency> <groupId>org.glassfish.mq</groupId> <artifactId>imq</artifactId> <version>4.5.2</version> </dependency> JMSを利用する為には、メッセージプロバイダが必要になります。プロバイダにはOpenMQ, MQSeries, SonicMQなどがありますが、 今回は導入が簡単なOpenMQを利用します。OpenMQはGlassFishに付属してインストールされます。インストール時に特に何かを意識する必要はありません。 また、OpenMQにアクセスする為に2つのライブラリが必要になります。jms-apiとimqです。Mavenリポジトリに登録されているので、 こちらも容易に入手可能です。 事前準備 GlassFishを起動しておく必要があります。ポートとして7676を利用す
Java Advent Calendar 2012の11日目のエントリーです。 昨日は@cero_tさんです。 明日は@snuffkinさんです。 クリスマスだから楽しいことをしよう ということで、WiiUも発売したことだし、今更ながら、WiiRemoteJを取り上げてみたいと思います。 WiiRemoteJはBluetoothを利用して、WiiリモコンでJavaのアプリを操作するためのライブラリです。 最新版はv1.6というのがあるようなのですが、見つけることができなかったため、v1.4を使ってみたいと思います。 OSX 10.8.7 Mountain Lionで動かす 今回やりたいことは、Macbook Pro上にWiiリモコンのレシーバーとなるアプリを起動し、 Wiiリモコンを使ってそのアプリを操作する、ということです。 レシーバーアプリは下記2つのライブラリが必要になります。 Bl
このページを最初にブックマークしてみませんか?
『kokuzawa.github.io』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く