【发布时间】:2012-04-11 23:35:54
【问题描述】:
我有一个包含两个模块的应用程序(“CC”):CC-ejb 和 CC-war。 CC-ejb 包含 CC-war 使用的 JPA 实体和外观。此应用程序正常工作。现在我用两个模块创建另一个(“CINT”):CINT-ejb 和 CINT-war。在 web 模块中,我需要访问 CC-ejb 提供的对象。我使用 NetBeans 7.1 进行开发,使用 Glassfish 3.1.1 进行部署。
在 CC-ejb 中,我有一个界面:
/* ... */
import javax.ejb.Local;
@Local
public interface CallDetailsFacadeLocal {
/* ... */
和一个实现类:
/* ... */
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;
/* ... */
在 CINT-war 中,我在我的一个 bean 中引用它:
/* ... */
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 已启动并运行)我收到以下消息:
部署期间发生错误:加载应用程序时出现异常:java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Ltp/coma/数据/beans/CallDetailsFacadeLocal;java.lang.IllegalStateException:ContainerBase.addChild:开始:org.apache.catalina.LifecycleException:java.lang.RuntimeException:java.lang.NoClassDefFoundError:Ltp/coma/data/beans/CallDetailsFacadeLocal;。有关详细信息,请参阅 server.log。
在服务器日志中我可以看到:
[#|2012-03-28T12:42:42.236+0200|SEVERE|glassfish3.1.1|global|_ThreadID=22;_ThreadName=Thread-2;|Class [ Ltp/coma/data/beans/CallDetailsFacadeLocal; ] 未找到。加载 [ 类 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; ] 未找到。加载 [ class tp.coma.cint.jsf.BookingController ]|#]
时出错
还有一些(八)异常堆栈跟踪。
我做错了什么??
【问题讨论】:
-
好像你没有在第二个应用程序中包含
CallDetailsFacadeLocal类。 -
CC-ejb 项目添加到“项目属性”中的 CINT-war 库中,并设置为不包含在包中。
-
@ManielQ,至少必须包含接口。
标签: jakarta-ee glassfish ejb