Java EE 7 検証環境をつくる JUnit の設定と方針変更
- Java EE 7 を試すために CentOS に GlassFish をインストール
- Ubuntu に GlassFish v4 による Java EE 7 検証環境をつくる
- Ubuntu に Spring Tool Suite を入れて Java EE 7 検証環境をつくる
- Java EE 7 検証環境をつくる REST Webサービス
- Java EE 7 検証環境をつくる EJB編
- Java EE 7 検証環境をつくる MySQL へのjdbc接続をGlassFish v4 に作成
- Java EE 7 検証環境をつくる Maven を使って Jar を集めてロギングする
と、Java EE 7 の環境(全部込み込みの)をGlassFish + Eclipse 作ろうと少しずつ進めてきた。
上記に引き続いて、JUnit の環境を作ろうとしたのだが、
java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
とか言う例外が発生。
http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
Some of your dependencies are likely signed jarfiles. When you combine them all into one big jarfile, the corresponding signatures are no longer valid so the runtime halts.
どうも署名付きjarファイルを別のjarにまとめると発生するようだ。
このあたりのセキュリティが理由か。
http://jehy.ru/articles/2013/12/13/invalid-signature-file-digest-for-manifest-main-attributes/
ただ、META-INF ディレクトリを削除すると回避出来る。(META-INF_) にリネームして実行してみたところテスト成功。
とはいえ、、、この状態はきついな。EARでjarを共有しなきゃいいのか?
うーん。
面倒くさすぎる。。。
あとやっぱり、Java EE 標準構成でいこうとしているなかで、Spring MVCを 残すとコンセプトが混在してしまうのでしっくりこない。Springでいくなら全部Springでいく方が潔い。
しかしながら、今回はJava EE 標準の検証をしたいので、すべてJava EE標準構成でいきたいところ。
ということで、ググってみると、以下の構成がよい感じみたいだ。
http://howtojboss.com/2012/04/17/article-series-migrating-spring-applications-to-java-ee-6-part-1/
Capability | Spring | JavaEE |
Dependency Injection | Spring Container | CDI |
Transactions | AOP / annotations | EJB |
Web framework | Spring Web MVC | JSF |
AOP | AspectJ (limited to Spring beans) | Interceptors |
Messaging | JMS | JMS / CDI |
Data Access | JDBC templates / other ORM / JPA | JPA |
RESTful Web Services | Spring Web MVC (3.0) | JAX-RS |
Integration testing | Spring Test framework | Arquillian * |
* Not part of the Java EE specification
Arquillian は Java EE 標準じゃないが、JUnit から、アプリケーションサーバなど、コンテナ操作ができるフレームワークのようだ。
また、Spring の JDBC template は便利だが、Spring のコアに依存しておらず、単独で使えるようなので、
いざとなったら、使えそう。
ということで、Java EE 標準でいこうにも、いろいろライブラリを集めたり使えるようにするのが面倒くさい(Net Beansを使えばそうでもないが、Eclipseだと面倒)ことが、わかった。他言語からみるとこのあたりがJavaの面倒くささなんだろうなぁと思いながら、Java の フルスタックフレームワークとしての JBossに期待して、Eclipse + JBoss Tools + WildFly という構成で検証環境を構築する方向に方針転換しよーっと。