【问题标题】:Can't deploy web app having EJB component injected无法部署注入了 EJB 组件的 Web 应用程序
【发布时间】:2013-05-22 07:24:22
【问题描述】:

使用的软件: 1- 玻璃鱼 3.1.2 2- JDK 6.0 3- Eclipse Juno 服务版本 1

每当我尝试将我的动态 Web 应用程序添加到 GlassFish 时,都会在弹出窗口中出现此异常:

SEVERE: Exception while loading the app : java.lang.IllegalStateException:           
ContainerBase.addChild: start: org.apache.catalina.LifecycleException:
java.lang.RuntimeException: java.lang.NoClassDefFoundError:
Lcoreservlets/bean/NumberService;

我也尝试过使用 InitailContext + JNDI 查找 EJB 组件但徒劳无功,即使它是从一个普通的 java 项目中工作的。

我尝试了 GlassFish 3.1.1 以及最后的手段,但什么也没做。

请您查看我的源代码并告诉我哪里出了问题:

对于初学者来说,我的 POJI :

package coreservlets.bean;
import javax.ejb.*;
@Remote
public interface NumberService {
public double getNumber(double range);
}

其次是 EJB POJO:

package coreservlets.bean;
import javax.ejb.*;
@Stateless(mappedName="NumberCreator")
public class NumberServiceBean implements NumberService {
public double getNumber(double range) {
return(Math.random() * range);
}
}

最后托管的 Bean:

package beans;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import coreservlets.bean.NumberService;
@ManagedBean
@RequestScoped
public class MyBean {

@EJB private NumberService service;
private Double luckyNumber;
public Double getLuckyNumber() {
    luckyNumber = service.getNumber(Math.random() * 100);
    return luckyNumber;
}   
}

请帮忙整理一下这个乱七八糟的东西,到目前为止我一直在努力解决这个问题,非常感谢。

【问题讨论】:

  • 仔细查看异常消息。问题不在于MyBean 类。问题是NumberService 类。 NoClassDefFoundError 基本上意味着找不到它的.class 文件,或者至少是Class#forName() 无法加载该类。可能的原因现在应该变得非常明显:编译错误,或者没有放在类路径中,或者它在某些static 字段/初始化程序中引发了异常。您需要编辑和改进您的问题以发布有关您的 NumberService 课程的详细信息,而不是您的 MyBean
  • 我注意到有关 NumberService 的问题,先生,但我知道为什么会发生这种情况,但是我已经将 EJB 项目添加到我的动态 Web 项目类路径中。
  • @BalusC 请您在这里稍等片刻,我按照您的建议用更多代码支持了我的问题,谢谢。

标签: jsf-2 deployment ejb-3.1 managed-bean


【解决方案1】:

我认为问题与 Eclipse 错误或类似问题无关,当您将包含 EJB 项目的 Web 项目部署到 glassfish 时,请执行以下操作:

  1. 创建您的 EJB 项目
  2. 创建您的动态 Web 项目(JSF 项目)
  3. 将 EJB 项目添加到构建路径中的 JSF 项目中
  4. 创建一个 EAR 来联合您的两个项目

如果您想了解有关此操作的完整教程,请参阅此(http://jsfspotlight.blogspot.com/2013/05/ejbjsf-master-detail-web-application-in_25.html)

【讨论】:

    【解决方案2】:

    好吧,我从头开始创建了 EJb 项目和 web 动态项目,并选中了“将项目添加到 EAR”,现在一切都已解决。 所以大家正好看到我的问题,建议大家按照我的回答,因为异常与代码无关,可能是eclipse相关的bug左右。

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2020-08-23
      • 2020-05-03
      相关资源
      最近更新 更多