お仕事でEJBを利用する必要がありそうなので環境の構築を試みた。

次の記事を参考に同じことをやろうとして見た。
[Kohei Nozaki’s blog]
別プロセスからリモートEJBを呼び出してみる

自分用メモなので他の人が読むにはつらいかも。

eclipseをダウンロード。現時点での最新のLunaを落とした。Eclipse IDE for Java EE Developersなのでいろいろ最初っから入っててお手軽。
eclipse 環境構築メモ(プロクシ設定編)

なんだけど、filetransferがfiletransfer4になっている(LUNAから?)のでそこだけは注意が必要。

JBoss Toolsが入ったらServersからWildFlyを追加して起動できることを一旦確認。

ここまで進んだら記事の通り、remoteejbif/remoteejbwar/remoteejbclientを作っていく

EJBのプロジェクトを作成するため、Mavenプロジェクトを新規作成する。
archetypeで「javaee7-essentials」を選びたいのだが候補にない。
下記の手順を参考にしてCatalogの追加を試みるもうまくいかず…。
【PDF注意!】

行き詰ってたんだけど、
http://repo.maven.apache.org/maven2/archetype-catalog.xml
このファイル自体はブラウザで見ることが出来るので、こいつを「C:\Users\{User}\.m2」にダウンロードしてみたら急に動いた。

このあたりはうちの会社のオフィスのプロキシのせいだと思われるのであまり他の人の参考になるような情報ではないかも。

完成かと思いきやWildFlyにデプロイして起動させるとエラーが発生

18:25:33,076 WARN [org.jboss.modules] (MSC service thread 1-1) Failed to define class foo.HogeBeanImpl in Module “deployment.remoteejbwar.war:main” from Service Module Loader: java.lang.LinkageError: Failed to link foo/HogeBeanImpl (Module “deployment.remoteejbwar.war:main” from Service Module Loader)
Caused by: java.lang.NoClassDefFoundError: foo/HogeBean
Caused by: java.lang.ClassNotFoundException: foo.HogeBean from [Module “deployment.remoteejbwar.war:main” from Service Module Loader]

18:25:33,080 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.unit.”remoteejbwar.war”.POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit.”remoteejbwar.war”.POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of deployment “remoteejbwar.war”
Caused by: java.lang.LinkageError: Failed to link foo/HogeBeanImpl (Module “deployment.remoteejbwar.war:main” from Service Module Loader)
Caused by: java.lang.NoClassDefFoundError: foo/HogeBean
Caused by: java.lang.ClassNotFoundException: foo.HogeBean from [Module “deployment.remoteejbwar.war:main” from Service Module Loader]

どうもfoo.HogeBeanというinterfaceを認識できていないようだったのでデプロイ先のフォルダを確認してみた

${WILDFLY_HOME}\standalone\deployments\remoteejbwar.war\WEB-INF\classes\foo

確かにHogeBeanのInterfaceがいない
試しにHogeBeanの.classファイルをおいて起動させると無事起動。どうやらwarにinterfaceも含めるようにビルドしないといけない模様。

とりあえずこの状態でクライアントを動かすと動いた。

hoge from remote

remoteejbwarにremoteejbifを含めてビルドする方法はmavenの設定だと思うんだけど直ぐには調べがつかなかったのでまた今度。