Rest Can';t升级在glassfish上运行的webapp使用的Jackson罐子

Rest Can';t升级在glassfish上运行的webapp使用的Jackson罐子,rest,jackson,jersey,glassfish,glassfish-4.1,Rest,Jackson,Jersey,Glassfish,Glassfish 4.1,我们有一个基于REST的web应用程序,它使用相对较新的Jersey(2.25.1)和Jackson(2.8.10)版本在Tomcat上运行。这些库被捆绑在war的WEB-INF/lib文件夹中,并且运行良好 由于项目要求,我们被迫迁移到glassfish。我们正在使用glassfish 4.1.2的“web配置文件”版本,并且遇到了一些问题。我们只能通过将Jersey和Jackson降级到与glassfish 4.1.2(Jersey 2.21和Jackson 2.5.1)相匹配的版本来让we

我们有一个基于REST的web应用程序,它使用相对较新的Jersey(2.25.1)和Jackson(2.8.10)版本在Tomcat上运行。这些库被捆绑在war的WEB-INF/lib文件夹中,并且运行良好

由于项目要求,我们被迫迁移到glassfish。我们正在使用glassfish 4.1.2的“web配置文件”版本,并且遇到了一些问题。我们只能通过将Jersey和Jackson降级到与glassfish 4.1.2(Jersey 2.21和Jackson 2.5.1)相匹配的版本来让webapp正常工作。此外,我们还必须向glassfish/modules目录添加一个缺失的Jackson-jar,即Jackson-module-jaxb-annotations-2.5.1.jar

其他帖子建议“升级”Jackson,用最新版本替换glassfish/modules目录中的jar。但是,如果我们这样做,启动/停止域的命令会抛出异常。例如,运行“startserv.bat”会产生以下结果:

Exception in thread "Thread-1" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactory
        at com.sun.enterprise.admin.remote.reader.ProgressStatusDTOJsonProprietaryReader.<clinit>(ProgressStatusDTOJsonProprietaryReader.java:57)
        at com.sun.enterprise.admin.remote.reader.ProprietaryReaderFactory.<clinit>(ProprietaryReaderFactory.java:60)
        at com.sun.enterprise.admin.cli.AdminMain$2.run(AdminMain.java:272)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonFactory
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 4 more
线程“thread-1”java.lang.NoClassDefFoundError中的异常:com/fasterxml/jackson/core/JsonFactory 位于com.sun.enterprise.admin.remote.reader.ProgressStatusDTOJsonProprietaryReader。(ProgressStatusDTOJsonProprietaryReader.java:57) 位于com.sun.enterprise.admin.remote.reader.ProprietaryReaderFactory.(ProprietaryReaderFactory.java:60) 位于com.sun.enterprise.admin.cli.AdminMain$2.run(AdminMain.java:272) 位于java.lang.Thread.run(未知源) 原因:java.lang.ClassNotFoundException:com.fasterxml.jackson.core.JsonFactory 位于java.net.URLClassLoader.findClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) 位于sun.misc.Launcher$AppClassLoader.loadClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) ... 4更多
有没有办法使用我们想要的Jackson和/或Jersey版本,或者我们被迫使用glassfish附带的任何版本?另外,我们是否被迫通过复制丢失的Jackson注释罐来“修补”glassfish?

您说您被迫迁移到glassfish-您考虑过Payara服务器吗?(免责声明:am employee)它源自(因此完全兼容)GlassFish和最新的4.1.2.173版本。它是完全开源的,并且可以免费使用,所以你应该可以把它放到GlassFish中,然后继续正常使用。谢谢,我会调查的!我不确定这是否是我们项目的一个选项,但出于本线程的目的,让我们假设它是不允许的。