Java EE 7 検証環境をつくる JUnit の設定と方針変更

  1. Java EE 7 を試すために CentOS に GlassFish をインストール
  2. Ubuntu に GlassFish v4 による Java EE 7 検証環境をつくる
  3. Ubuntu に Spring Tool Suite を入れて Java EE 7 検証環境をつくる
  4. Java EE 7 検証環境をつくる REST Webサービス
  5. Java EE 7 検証環境をつくる EJB編
  6. Java EE 7 検証環境をつくる MySQL へのjdbc接続をGlassFish v4 に作成
  7. Java EE 7 検証環境をつくる Maven を使って Jar を集めてロギングする

と、Java EE 7 の環境(全部込み込みの)をGlassFish + Eclipse 作ろうと少しずつ進めてきた。

上記に引き続いて、JUnit の環境を作ろうとしたのだが、

java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

とか言う例外が発生。

junit_jar_exception

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_) にリネームして実行してみたところテスト成功。

without_meta_inf_ejb_junit_success

とはいえ、、、この状態はきついな。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 という構成で検証環境を構築する方向に方針転換しよーっと。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です