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

由于计划要求,我们被迫迁移到glassfish . 我们正在使用glassfish 4.1.2的"web profile"版本并遇到了一些问题 . 我们只能通过将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

其他帖子建议通过用最新版本替换glassfish / modules目录中的jar来“升级”Jackson . 但是,如果我们这样做,启动/停止域的命令会抛出异常 . 例如,运行“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

有没有办法使用我们想要的 Jackson 和/或 Jersey 的版本,或者我们被迫使用与glassfish捆绑的任何版本?另外,我们是否被迫通过复制缺失的 Jackson 注释 jar 来“修补”玻璃鱼?