理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

java

MyFacesでのステートレスビューとCSRF対策の問題(解決済)

JSF において、ポストバックに対する CSRF 対策が実装されているというエントリを書きました。 ここでは、CSRF 対策トークンの値が javax.faces.ViewState という hidden 値に埋め込まれ、それを改竄した場合は ViewExpiredException が発生するという内容を…

JSFにおけるCSRF対策

CSRF については、一般に正規利用者の意図したリクエストであることを確認することが対策になります。いわゆる徳丸本で紹介されている、具体的な方法としては以下のとおりです。 秘密情報(トークン)の埋め込み パスワード再入力 Referer のチェック 体系的に…

JSFにおけるPostback、そしてライフサイクル

JSF における Postback とは何なのか、っていうのはなかなか本を見てもわかりませんでした。 かといって、こういう概念は実装してもよくわかんなかったりするので、こういうのはやっぱり公式ドキュメントを読んで理解した方が良いだろうと、そこで学んだこと…

WAS Liberty Profileとは

WAS? 使ったことなかったんですけど、アプリケーションサーバですよね、みたいなかんじだったんですけど、さらに、 なに?WAS の Liberty Profile?なにそれ、全然知らんけどおいしいの?というくらいの状況でしたので、なんかよくわからなすぎました。 WAS …

WAS Libery ProfileにおけるJVMオプションの設定方法

WAS Liberty Profile において、WAS のランタイムに JVM オプションを指定する方法を探し回っておりました。 この手の JVM オプションは、アプリケーションサーバを立ち上げるスクリプトさえ発見できればすぐなんですけど、今回は Eclipse 上で WebSphere Ap…

スタックトレースの出力が省略されてると思ったそのときに

よくあったんですよ、手元で例外が発生して原因を辿るためにスタックトレースを辿ってたら、おやおや、「… 3 more」とか出てて、原因が辿れねーぞっていうケース。 HighLevelException: MidLevelException: LowLevelException at Junk.a(Junk.java:13) at Ju…

CDIにおけるProducerメソッド

JavaEE 良くわかっていないのですが、それでもプロジェクトが JavaEE 標準だーウオーという状況っぽいので、ちょっと勉強をしはじめております。 ぼくが Java に対して得意意識を持てないのは、こういうところの知識がないのもあるので、そのへんを払拭して…

スレッドダンプを解析する地獄とFastThreadというWebサービス

スレッドダンプというと、JVM 言語に関する運用でマジで困ったときの頼みの綱みたいなイメージある。マジで困ったとき、じゃなくて、カジュアルに見れば良いんだけど、スレッドダンプのフォーマットが異常すぎてつらくなる。 そもそもなんなんだこのゴミみた…

Socket

最近ソケット通信実装のサポートに入っていたので、ちょっとまとめてみたいと思います。 Socket からのデータ読込 Java に関しては不勉強なところが多いんですが、Socket クラスは「ソケット」を抽象化したものであり、「ソケット」は TCP におけるコネクシ…

JavaでのQRコード生成

QR コード あまり知られていませんが、QR コードは日本発の規格になります。 スマートフォンで打ち込むのが面倒なデータをカメラ読込のみで入力できることから世界的にも普及しておりまして、先日は iOS の Chrome に QR コードをスキャンする機能も追加され…

HTTPS双方向認証の環境を作る

以下のエントリで HTTPS 通信を試してみましたが、このような試験環境を作るのはわりとメンドい。 メンドいことを何度もやりたくないので、実施した内容をエントリに残しておきます。 クライアント認証を含めた HTTPS の双方向認証を行うためには、以下が必…

JavaのJSSEでクライアント証明書を自由に選択できるようにする

HTTPS で API を呼び出すっていうシーンは頻繁にあって、その API を使うには、通常何らかの認証が求められます。 認証にも色々あるんだけど、そのうちの一つが HTTPS のクライアント認証です。 普通に HTTPS 通信をしたいだけだと意識しないことも多いので…

Stubby4JにおけるJSONでの正規表現、あるいはリクエスト中の特定のフィールドでレスポンスを変更する

Stubby4J を使用したテストにおいて、API リクエストとして送る JSON の中の値によって、レスポンスを切り替えたい場合がある。 もうちょっと具体的にいうと、 リクエストの JSON の中の特定のフィールドの値によってのみ、レスポンスを切り替える 他のフィ…

Maven Assembly Plugin でできるファイル名がクソダサかった話

Maven Assembly Plugin でできるファイル名がクソださかったのでなんとかしたかった話。 descriptorRef 要素で jar-with-dependency 指定してたら、hoge-0.0.1-SNAPSHOT-jar-with-dependencies.jar とかいうフザけた名前になってて、あまりの衝撃に手足が震…

Maven Assembly Pluginで実行可能jarをつくる

maven assembly plugin maven 力も Java 力も貧弱なのだけれど、依存性を 1 つにまとめた実行可能 jar を作る必要性に駆られたので、ちょっと調べてた。 maven の plugin で実行可能 jar を作ろうとすると、以下の 2 つがメジャー。 Maven Assembly Plugin M…

Stubby4JをJUnitから利用する

Stubby4J を Junit で起動できればだいたいの HTTP 要求に関するテストはできる。 だいたいこんな感じでテストを書きたい。 public class Stubby4jTest { @ClassRule public static Stubby4jServer server = Stubby4jServer.fromResource("com/kiririmode/bl…

RestEasyとHttpComponents、そしてConnectionManager

RestEasy client を使用した HTTP 要求を行うと、TCP コネクションが長時間にわたり残存する問題が発生することがあります。 RestEasy の公式ドキュメントを読めば「HTTP コネクションは適切に release し、適切に close しなければならない」ということは分…

パスワード等の秘匿情報をKeyStoreで保持する

DB 接続用のパスワードだったり、Basic/Digest 認証のときに使うパスワードだったり、世の中にはパスワードが溢れていて、もうパスワードを個別にして記憶しておくとか絶対にムリ、ムリムリムリムリかたつむりであるから、みんなどの Web サービスのアカウン…

コマンドラインで簡単にAES暗号化、または Java での AES 暗号化

Java で AES 暗号化とかやってて、コマンドラインで簡単に試せれば良いのになぁとか思ってたら、openssl 使ったら余裕で暗号化できることに気付いた。 例えば、AES/CBC の 128 bit 鍵長で暗号化したい場合は、以下のようにすれば良い。 -e は暗号化、-d は復…

Javaアプリから共有ライブラリが読み込めない問題(java.library.path と LD_LIBRARY_PATH)

なんか良くわからないエラー (no [ライブラリ名] in java.library.path みたいなヤツ) が出てきたのだけれど、解決方法が java.library.path の設定ではなく、LD_LIBRARY_PATH の設定だったりした。この手のエラーに苦しめられ続けており、そのあたり、ちょ…

maven と git-flow を使用したリリースフロー

ぼく自身、git-flow を利用するのは始めてで、Maven 力も低い。 そういう人間がリリース時にどうしようかとか考えても仕方がないので、先人に頼るかーと思っていたら、ちょうどいいエントリがあった。 Why I Never Use the Maven Release Plugin - DZone Jav…

Java に関する最後の雑誌?Java Magazine の購読

最近はもっぱらジャバジャバしているので、Java の雑誌でも読んで動向をウォッチしとかないとなぁなどと思っていた。 が、JAVA PRESS が死に、JavaWorld が廃刊になったこのご時世、雑誌としてはどうやってウォッチすれば良いのかなぁと思ったら Oracle が J…

Maven力の低い自分に送るMaven良い感じドキュメント

Maven 力が低くて、会社の人に迷惑かけている感じある。 Maven、基本的に 公式ドキュメント 読みにくいし全体像つかみにくいし、本読んでもなかなか詳細が分からないし何とかならんものかと思ってた。 Apache Maven 3 クックブック - 理系学生日記 思って探…

JBossでJCA(Java Cryptography Architecture)のプロバイダが使えない問題

JBoss で JCA のプロバイダの jar が見えない!! JBoss 上で Java Cryptgraphy Architecture (JCA) を利用したアプリケーションを書いていたのだけれど、いざデプロイして稼動確認してみるかといった段で例外を吐いて死ぬ惨状となった。 状況としては、こちら…

JBossにおけるVFSとは何であるのか

JBoss における VFS VFS というと Virtual File System の略であって、Google 検索するとおそらく Linux だとかの仮想ファイルシステムの話が上位にくるんだと思いますが、JBoss にも同様の仮想ファイルシステムたる VFS が存在しています。 最近この JBoss …

テスト前提が満たされている場合にのみJUnitのテストケースを実行したい

Java で JUnit のテストコードを書く場合、テスト実行環境がこういう前提を満たした場合にのみ、このテストを実行させるようにしたい、というようなケースが多々あります。 例えば、 テスト実行環境の OS に依存する テスト実行環境における特別なソフトウェ…

JCAとは何であるのか

Java SDK というのは、膨大な機能セットを提供してくれていますが、その中には暗号化に関するものがあり、このうち、暗号化に関する機能についてのフレームワークセットを JCA (Java Cryptography Architecture) と呼びます。 ちょっとこういう機能セットを…

Java プログラマーなら習得しておきたい Java SE 8 実践プログラミング

Java プログラマーなら習得しておきたい Java SE 8 実践プログラミングを読みました。タイトル長いな。Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング作者: Cay S. Horstmann,柴田芳樹出版社/メーカー: インプレス発売日: 2014/09/22メ…

Loggerはstatic 変数にすべきか、インスタンス変数にすべきか

Logger は static 変数にすべきか、インスタンス変数にすべきかという話があります。 static 変数 public class Foo { private static Log log = LogFactory.getLog(Foo.class); .... } インスタンス変数 public class Foo { private Log log = LogFactory.g…

SLF4Jとはなにか

SLF4J とは何か。これ、わりと分かりづらい人もいるかと思います。SLF4J の FAQ にそのものズバリな回答があるんですけど、 What is SLF4J? SLF4J is a simple facade for logging systems allowing the end-user to plug-in the desired logging system at …