Java EE Application Client
Java EEでは.earファイル、.warファイル、.jarファイルなどのアーカイブがあります。マイナーどころでは.rarというのもあります。今日紹介するのはそのなかでも抜群にマイナーであろう.carファイル、Java EE Application Clientです。
Java EE Application Clientを利用するとリモートクライアントからのEJB呼び出しとかJMS呼び出しとかJNDI呼び出しが簡単にできるようになります。
昨日のJavaFX勉強会でApplication Clientを使うというネタをよっしーがやってたっぽいので、JBoss AS7でもやってみます。JavaFXは抜きです。しかしApplication Client見かけるの久しぶりすぎる。
利用したEARはGitHubに置いてあります。
まずは普通にStateless Session Beanを作ります。インターフェース定義とかは掲載省略。リモートクライアントからのアクセスなので@Remoteで。
@Remote @Stateless public class HelloSLSB implements Hello { public String hello() { System.out.println("Hello World!"); } }
クライアントを作ります。インジェクションするだけ。
public class HelloClient { @EJB static Hello hello; public static void main(String[] args) throws Exception { hello.hello(); } }
EARは$JBOSS_HOME/standalone/deployments/にデプロイしてJBoss AS7を起動しておきます。
アプリケーションクライアントの起動はこんな感じ。実行するとJBoss AS7側、つまりサーバ側にHello Worldが出力されているはずです。
$ sh $JBOSS_HOME/bin/appclient.sh $JBOSS_HOME/standalone/deployments/as7-ear.ear#as7-ear-appclient-1.0.jar
ホスト名とかのオプションのデフォルトは--host remote://localhost:4447なので、別ホストとかの場合はこのオプションを渡せば良いです。
クライアント側にJava EEコンテナのランタイムが必要になること、EAR本体が必要になることの2点が少々ファットな感じではありますが楽ちんに使えます。
ちなみにApplication Clientアーカイブは現在は.carじゃなくて普通の.jarなので.carという拡張子は飲み屋でしか使えないどうでもいいネタ知識です。