【问题标题】:Cannot deploy Enterprise Application to glassfish无法将企业应用程序部署到 glassfish
【发布时间】:2010-11-03 16:44:24
【问题描述】:

我一直在开发在 Netbeans 6.9.1 上创建的 Web 应用程序,一切正常,我能够毫无问题地部署它。今天,我创建了一个企业应用程序,并将企业应用程序 web 模块上的“web”和“src”文件夹的内容替换为原始 web 应用程序中的文件夹。 一切似乎都很好,它编译没有问题,并在我运行“清理并构建”时生成 ear 文件。但是当我尝试部署企业应用程序时,我不断收到以下错误:org.glassfish.deployment.common.DeploymentException: by java.lang.NoClassDefFoundError: project/dao/MerchantDao

我查看了生成的 ear 的结构,它具有预期的 META-INF 和 war 文件。耳朵里面的war文件也ok,我试过单独部署,效果很好。

我不确定我还能尝试什么,我担心这可能是一个玻璃鱼虫,我只是在浪费时间。

有人可以帮我解决这个问题吗?

亲切的问候,

卡洛斯·豪尔赫·费雷拉

【问题讨论】:

  • 我执行了更多测试并意识到如果我删除所有 EJB 注释,应用程序将正确部署。我是否缺少某种配置?

标签: jakarta-ee jsf-2 glassfish-3 ear netbeans-6.9


【解决方案1】:

我认为您提供的信息不足以回答您当前的问题(例如 EAR 结构)。

无论如何,如果您没有强烈的模块化需求,我的建议是使用the WAR packaging(对于Java EE 6,使用EAR 不是强制性的,您可以将EJB 打包在WEB-INF/classesWEB-INF/lib 下如果您将它们捆绑为 EJB-JAR)。

哦,顺便说一句,我在 GlassFish 上部署了一个 Java EE 6 EAR,它就可以工作。

【讨论】:

  • 嗨帕斯卡,感谢您的回复。我用ejbs尝试过其他ear文件,我成功地将它们部署到glassfish。我只是在一个项目上遇到问题。如果我将所有 EJB 放在一个 EJB 模块中,一切正常,但只要我使用 @Stateless 注释从 WEB 模块注释一个类,我就会开始收到错误。
  • @Carlos 我不确定我是否在关注一切。您是仅使用 WAR 还是使用 EAR?在前一种情况下,请仔细检查 webapp 的部署描述符的版本。后一种情况,为什么要在web模块中添加EJB注解?
  • @Pascal,我正在使用 EAR。我不认为这是为什么我在 WEB 模块中使用 EJB 注释的问题,真正的问题是:为什么我不能?我从 netbeans 网站(NewsAppEE6 应用程序)中查看了一个示例,他们在 Web 模块(@Singleton 和 @LocalBean)上使用 EJB 注释。如果我在我的一个类中使用相同的注释,我将无法再部署应用程序。我不必使用 EAR,我可以轻松使用 WAR,但我只是想了解导致此错误的原因。 (顺便说一句,部署描述符使用的是 3.0 版)
  • @Carlos 绝对是! NetBeans 网站上的示例很可能使用了 WAR 包装。但是使用 EAR 打包时,我认为您不能将 EJB 打包到您的 WAR 中。为什么?因为这不是指定事物的方式。因此,虽然您可能会浪费时间试图理解为什么容器没有实现不属于规范的内容,但我的建议是遵守规则。将您的 EJB 打包在 WAR 中并使用 WAR 打包,或者如果您使用 EAR 打包,则将它们放入 EJB-JAR。
  • @Pascal 我正在谈论的示例是使用 EAR 打包(事实上,我寻找的是使用企业应用程序项目而不是 Web 应用程序的示例)。我部署它没有问题,它在 Web 模块中有 EJB 注释。我只是想知道为什么该项目正常工作而我的项目却没有,但是,就像您提到的那样,我只是在浪费时间。不过感谢您的帮助。
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2016-10-29
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多