gpt4 book ai didi

java - 无法将 .war 应用程序部署到 GlassFish 3.1.2

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:50 25 4
gpt4 key购买 nike

我有一个 .war 应用程序模块,无需任何特殊更改和服务器调整即可成功部署。但是,我无法将此应用程序部署到 GF 3.1.2:服务器抛出以下异常:

java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchFieldError: theInstance

我做错了什么?有人建议我什么吗?我应该执行任何其他设置才能成功部署 .war 模块吗?

非常感谢。

UPD

更精确的日志条目:

javax.xml.bind.JAXBException: Provider com.sun.xml.bind.ContextFactory_1_0_1 could not be instantiated: javax.xml.bind.JAXBException - with linked exception: [java.lang.NoSuchFieldError: theInstance]
- with linked exception: [javax.xml.bind.JAXBException - with linked exception: [java.lang.NoSuchFieldError: theInstance]]

最佳答案

Sounds like a class loader issue.

您需要在 GlassFish JAXB jar 之前使用 WEB-INF/lib JAXB jar 。或者更改您的应用程序以使用 GlassFish 3.1.2 捆绑的版本。

Servlet 规范规定 Web 应用程序在委托(delegate)给父级之前应该使用本地类加载器。我认为 GlassFish 默认委托(delegate)给 Web 应用程序的父类加载器。使用 <class-loader delegate="false"/>在 web.xml 或 glassfish-web.xml 中。

请注意,如果这不起作用,可能还有其他方法可以修改 GlassFish 中的类加载器。

这种类型的问题在部署到许多应用程序服务器时很常见。在过去 5 年多的时间里,我每天都在使用 GlassFish,并且时常看到它。最近在 CloudBees 上部署到 JBoss 时看到了类似的问题,并相应地修改了部署描述符。

Googling "glassfish prefer web-inf/lib jars".

回复下面的 psed 评论EJB 接口(interface)必须驻留在 Web 模块和 EJB 模块共享的类路径层次结构中。如果您在 WEB-INF/lib 中有一个 EJB 接口(interface) jar 并且在 EJB 模块类路径中有另一个 EJB 接口(interface) jar 副本,那么在您的 Web 应用程序中注入(inject)/定位 EJB 时,您将得到一个 ClassCastException。我假设 WebServices 有同样的问题。通过 EAR 共享 EJB 接口(interface) jar 应该可以解决这个问题。注意可能还有其他我不知道的问题

关于java - 无法将 .war 应用程序部署到 GlassFish 3.1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13950388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com