通过NetBeans将战争部署到glassfish v3 beta上 [英] Deploy war through netbeans onto glassfish v3 beta

查看:74
本文介绍了通过NetBeans将战争部署到glassfish v3 beta上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

同样的.war文件部署到Glassfish v2.1上。我不知道最后一次尝试v3,但我希望查看热部署功能,因为据传它在使用glassfish v3的NetBeans 6.8中工作。所以,我像往常一样进行部署,出现以下错误:

  SEVERE:调用类org.glassfish.ejb时发生异常。 startup.EjbDeployer加载方法
....
SEVERE:加载应用程序时出现异常
java.lang.RuntimeException:无法加载EJB模块。 DeploymentContext不包含任何EJB Check存档,以确保在org.glassfish.ejb.startup.EjbDeployer.load处正确打包c:\ src \svn\trunk\gui\target\WEBAPP
( EjbDeployer.java:134)
在org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:64)
在org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:
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)
在com.sun.enterprise.v3.admin.Command RunnerImpl.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.gr izzly.http.ProcessorTask.process(ProcessorTask.java:951)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:166)
at com.sun.grizzly.DefaultProtocolChain。 (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 。这是玻璃鱼的错误,或者至少错误信息对追踪问题没有帮助。

解决方案

< a href =https://glassfish.dev.java.net/issues/show_bug.cgi?id=10592 =nofollow noreferrer> https://glassfish.dev.java.net/issues/show_bug.cgi ?

好的,找到原因(多谢了) ):


  1. 在扫描存档后,EjbSniffer被检索出来:一个(或多个)$ b存档中打包的$ b库jars包含具有组件注释的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>



成功部署应用程序。



请试试看并让我知道它是否适用于您。


The same .war file deploys fine onto Glassfish v2.1. I don't know the last time I tried v3, but I was wanting to check out hot-deploy functionality as it's rumored to be working in netbeans 6.8 with glassfish v3. So, I deploy just like usual and I get the following error:

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)

I don't understand why it's complaining about anything EJB related since this is a .war file. Any ideas?

UPDATE: I filed a bug with glassfish: https://glassfish.dev.java.net/issues/show_bug.cgi?id=10592. Either this is a bug in glassfish or at the very least the error message is not helpful in tracking the problem down.

解决方案

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

From the bug:

Ok, found the cause (thanks much for providing the test case!):

  1. EjbSniffer was retrieved after scanning the archive: one (or more) of the library jars packaged in the archive contains EJBs with component annotations. So the ejb container was asked to load the module later.

  2. The ejb container was not able to find the corresponding metadata because the web.xml is 2.4 version so the meta-data processing skipped the annotation processing (we only process annotations for Java EE 5+ schema versions).

After I changed the web.xml to reference 2.5 schema (you can do 3.0 schema as well): http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

The app deployed successfully.

Please give it a try and let me know if it works for you.

这篇关于通过NetBeans将战争部署到glassfish v3 beta上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆