2010-12-01 13 views
0

別々のJSFアプリケーションからデプロイされたEJBアプリケーションを使用するにはどうすればよいですか?別個のJSFアプリケーションとEJBアプリケーション

私は2つのアプリケーションを分離して、リモートインタフェースを通じてEJBにアクセスしようとしています。これを行うには、2つのEclipseプロジェクトがあります.1つはEJBと永続性ロジックが含まれ、独立してテストされ、動作します。私はEJBプロジェクトを参照するJSFプロジェクトを作成しました(リモート・インタフェースへのアクセス権を得るため)。しかし、EJBインスタンスを挿入するか、JNDI名を検索しようとすると失敗します。これは私のJSFバッキングBeanに含まれているものです。

@EJB(lookup = "java:global/LocEJB/LocalityEJB!com.ame.business.LocalityEJBRemote") private LocalityEJBRemote locality;

これはGlassfishにあり、私はEJBプロジェクトを参照しており、JSFプロジェクトにはパッケージ化していません。後者を実行すると、JSFプロジェクトでEJBコンテナの問題を初期化する際にエラーが発生します。では、リモートEJBにどのようにアクセスすればよいのでしょうか?

ありがとうございます!

答えて

1

JSFアプリケーションは、EJBインタフェースについて知っていなければなりません(少なくともEJB 2.0上で行ったことがあります)。 Proxyパターンを使用して、これがJSFクライアントからのリモートコンポーネントであるという事実を隠しています。

+0

これは、JSFをデプロイして、インターフェースに対してコンパイルして、コンテナがインジェクションを管理できるようにするにはどうすればよいのでしょうか?EJBとJSFを一緒にパッケージ化/デプロイする必要はありません。 – MilkJug

+0

両方で共有コードを共有する必要があります。共有するJARである可能性があります。 – duffymo

+0

ありがとう、私はそれを試してみましょう。 – MilkJug

0

まず、コンテナの外にアクセスしようとするとローカルインタフェースを使用できません。リモートインターフェイスを使用する必要があります。

リモートインタフェースは、Beanのsun-web.xmlまたはEJBインジェクションで定義できます。

日-web.xmlのコード:

<ejb-ref> 
    <ejb-ref-name>com.xxx.session.UserRemote</ejb-ref-name> 
    <jndi-name>corbaname:iiop:127.0.0.xxx:3700#com.xxx.session.UserRemote</jndi-name> 
    </ejb-ref> 

もう一つは、あなたのクラスパスにリモートインタフェースを持っている必要があります。

関連する問題