2

嗨,我在 glassfish 中遇到以下错误

警告:调用 EJB FileUpload 时发生系统异常,方法:public java.lang.String com.sahvidya.ejb.entityoperations.FileUpload.personalFileUploadFromSystem(com.sahvidya.entity.entitysystem.PersonalDirectory,org.primefaces.model.UploadedFile ,java.lang.String) 抛出 java.io.IOException


警告:javax.ejb.TransactionRolledbackLocalException:从 bean 抛出的异常:java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectMapper.enable([Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson /数据绑定/对象映射器;

通过查看各种博客,我了解到 glassfish 4.1 版有较旧的杰克逊库(2.4),它没有这种方法,需要升级 Jakcson 版本(2.8)。我想升级我的 glassfish,但遇到了其他问题。保持相同的 glassfish 版本将是升级杰克逊版本的方法。只需添加更新的杰克逊 jar 文件项目就可以解决目的吗?项目中可用的两个jackson版本会不会出现版本冲突问题。一个来自 Netbeans,另一个是我手动添加的。

4

1 回答 1

2

glassfish 4.1.1 确实捆绑在一些杰克逊罐子中:

./glassfish/modules/jackson-jaxrs-base.jar
./glassfish/modules/jackson-annotations.jar
./glassfish/modules/jersey-media-json-jackson.jar
./glassfish/modules/jackson-databind.jar
./glassfish/modules/jackson-jaxrs-json-provider.jar
./glassfish/modules/jackson-core.jar

jackson-core.jar 的版本是 2.3.2,所以这就是我们的 glassfish 部署的应用程序出现问题的原因。

覆盖很容易。将 WEB-INF/glassfish-web.xml 添加到您的 web 应用程序中,稍后包含以下内容的杰克逊依赖项:

<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD 
GlassFish Application Server 3.1 Servlet 3.0//EN" 
"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
   <class-loader delegate="false"/>
</glassfish-web-app>

尽管在 DOCTYPE 中引用了 3.1,但它在 4.1.1 中运行良好。

于 2017-05-27T06:48:27.337 回答