2012-03-28 19 views
2

CC-ejbとCC-warという2つのモジュールを含むアプリケーション(「CC」)があります。 CC-ejbには、CC-warが使用するJPAエンティティとファサードが含まれています。このアプリケーションは正しく動作します。今度は、CINT-ejbとCINT-warの2つのモジュールを備えた別のモジュール(「CINT」)を作成します。 Webモジュールでは、CC-ejbが提供するオブジェクトにアクセスする必要があります。開発にはNetBeans 7.1を、配備にはGlassfish 3.1.1を使用します。 他のEJBモジュールを参照するJava EEアプリケーションをデプロイできません

/* ... */ 
import javax.ejb.Local; 

@Local 
public interface CallDetailsFacadeLocal { 
     /* ... */ 

および実装するクラス::私は1つにそれを参照CINT-戦争で

/* ... */ 
import javax.ejb.Stateless; 
import javax.persistence.EntityManager; 
/* ... */ 
import tp.coma.data.entities.CallDetails; 

@Stateless 
public class CallDetailsFacade 
      extends AbstractFacade<CallDetails> 
      implements CallDetailsFacadeLocal { 
    @PersistenceContext(unitName = "CC-ejbPU") 
    private EntityManager em; 
    /* ... */ 

私はインターフェイスを持つCC-EJBで


私の豆の:

/* ... */ 
import javax.ejb.EJB; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import tp.coma.data.beans.CallDetailsFacadeLocal; 
/* ... */ 

@ManagedBean(name = "bookingController") 
@SessionScoped 
public class BookingController implements Serializable { 
    /* ... */ 
    @EJB 
    private CallDetailsFacadeLocal cdrFacade; 
    /* ... */ 

CINTを展開(CCがすでに稼働している)私は、次のメッセージが出ます:サーバーログで

Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Ltp/coma/data/beans/CallDetailsFacadeLocal;java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Ltp/coma/data/beans/CallDetailsFacadeLocal;. Please see server.log for more details.

を私は見ることができます:

[#|2012-03-28T12:42:42.236+0200|SEVERE|glassfish3.1.1|global|_ThreadID=22;_ThreadName=Thread-2;|Class [ Ltp/coma/data/beans/CallDetailsFacadeLocal; ] not found. Error while loading [ class tp.coma.cint.jsf.BookingController ]|#] [#|2012-03-28T12:42:42.252+0200|SEVERE|glassfish3.1.1|global|_ThreadID=22;_ThreadName=Thread-2;|Class [ Ltp/coma/data/beans/CallDetailsFacadeLocal; ] not found. Error while loading [ class tp.coma.cint.jsf.BookingController ]|#]

と(数を8つの例外スタックトレース。

私は何が間違っていますか?

+0

2番目のアプリケーションに 'CallDetailsFacadeLocal'クラスが含まれていないようです。 – Osw

+0

CC-ejbプロジェクトは、「プロジェクトプロパティ」のCINT-warライブラリに追加され、パッケージに含まれないように設定されています。 – ManieQ

+0

@ ManielQ、少なくともインターフェイスが含まれている必要があります。 – Osw

答えて

1

mavenでビルドを行っている場合は、ejb jarと一緒にクライアントjarを生成する方法をお読みください。 http://maven.apache.org/plugins/maven-ejb-plugin/examples/ejb-client-dependency.html

antビルドを行っている場合は、クライアントのjarファイルを生成するタスクを作成してください。**/* Local.jarを含めるか、プロジェクトに適したパターンに変更してください。

* $ 1.classファイルについて忘れないでください。後であなたを噛むことがあります。たとえば、Enumでスイッチを行うと、javaは匿名クラスを生成し、XYZ $ 1.classになります。そのクラスに応じて、除外またはインクルードする必要があります。私の場合、mavenにはセッションBeanの実装から生成された$ 1.classが含まれていました。その後、異なるクラスローダーは、この匿名クラスのコピーが2つあることに気をつけました。 (IllegalAccessError)

関連する問題