【问题标题】:Deploy war through netbeans onto glassfish v3 beta通过 netbeans 将战争部署到 glassfish v3 beta
【发布时间】:2009-10-24 06:33:02
【问题描述】:

同样的 .war 文件可以很好地部署到 Glassfish v2.1。我不知道我上次尝试 v3 是什么时候,但我想检查一下热部署功能,因为有传言说它可以在 netbeans 6.8 和 glassfish v3 中工作。所以,我像往常一样部署,我收到以下错误:

SEVERE: Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
....
SEVERE: Exception while loading the app
java.lang.RuntimeException: Unable to load EJB module.  DeploymentContext does not contain any EJB  Check archive to ensure correct packaging for c:\src\svn\trunk\gui\target\WEBAPP
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:134)
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:64)
    at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:153)
    at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:220)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:314)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:169)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1159)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1218)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1207)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:362)
    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:201)
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:241)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:789)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:697)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:951)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:166)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.FixedThreadPool$BasicWorker.doWork(FixedThreadPool.java:431)
    at com.sun.grizzly.util.FixedThreadPool$BasicWorker.run(FixedThreadPool.java:410)
    at java.lang.Thread.run(Thread.java:619)

我不明白为什么它抱怨任何与 EJB 相关的东西,因为这是一个 .war 文件。有什么想法吗?

更新:我向 glassfish 提交了一个错误:https://glassfish.dev.java.net/issues/show_bug.cgi?id=10592。这是 glassfish 中的一个错误,或者至少错误消息对跟踪问题没有帮助。

【问题讨论】:

    标签: java netbeans glassfish


    【解决方案1】:

    https://glassfish.dev.java.net/issues/show_bug.cgi?id=10592

    来自错误:

    好的,找到原因了(非常感谢提供测试用例!):

    1. 扫描存档后检索到 EjbSniffer:一个(或多个) 归档中打包的库 jar 包含带有组件注释的 EJB。 所以要求ejb容器稍后加载模块。

    2. ejb 容器无法找到相应的元数据,因为 web.xml 是 2.4 版本,因此元数据处理跳过了注释 处理(我们只处理 Java EE 5+ 模式版本的注释)。

    在我将 web.xml 更改为引用 2.5 架构之后(您也可以使用 3.0 架构): http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    应用部署成功。

    请试一试,如果它适合你,请告诉我。

    【讨论】:

    • 昨晚一个@dpb救了我的命!
    【解决方案2】:

    我有 3_0 架构,但我仍然收到错误。更有趣的是我有两场战争,一场是来自焊接原型的示例项目,另一场是它的定制。自定义战争不起作用。

    我并排检查过,除了更多的模型类和persistence.xml中的更多属性之外,它是相同的

    【讨论】:

      【解决方案3】:

      ManagedBeans 中使用@Stateless 注释的人在java.net Forums 上报告了类似的问题。

      我不知道这是否适用于您,但给定的解决方法是:

      进入管理控制台,进入更新中心,安装 EJB。

      我自己没有测试过,所以我无法确认这会有所帮助。

      【讨论】:

      • 感谢 Pascal,当我去更新工具时,我确实添加了 glassfish ejb 容器和 glassfish ejb lite 容器。我可以理解项目中可能有一些东西使 glassfish 认为项目中有 EJB,但是据我所知,ejb 支持已安装。
      • 这更像是一个猜测,而不是一个严肃的线索。实际上,这对我来说真的像一个错误。如果您在 NetBeans 的问题跟踪器中报告它,也许您会更幸运。
      • 好主意,我提交了一个错误:glassfish.dev.java.net/issues/show_bug.cgi?id=10592
      【解决方案4】:

      只要我的 0.02 美元...

      将 JaxMe 库(版本 0.5.2)添加到我的应用程序后,我遇到了同样的错误。这导致我的一个战争模块部署失败——这让我很困惑,因为我没有对该模块进行任何更改。删除 JaxMe 解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多