我正尝试在我正在研究的web项目(Goncalves petstore-ee6)中使用Jackson2注释。我需要将依赖resteasy-jackson2-provider部署为一个模块,并排除JBoss默认提供的版本(Jackson 1.9)。
我跟随this recommendations就是为了实现这一点,但我不能让它工作。
在项目的pom.xml中,我添加了:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.1.Final</version>
</dependency>在WEB-INF目录中,我创建了一个包含以下内容的jboss-deployment-structure.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
</exclusions>
<dependencies>
<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
</dependencies>
</deployment>
</jboss-deployment-structure>依赖项包含在WAR-file/WEB-INF/lib中,但在尝试部署时出现以下异常:
14:23:56,165 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.module.service."deployment.applicationPetstore.war".main: org.jboss.msc.service.StartException in service jboss.module.service."deployment.applicationPetstore.war".main: Failed to load module: deployment.applicationPetstore.war:main
at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:91) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_75]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_75]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_75]
Caused by: org.jboss.modules.ModuleNotFoundException: Module org.jboss.resteasy.resteasy-jackson2-provider:main is not found in local module loader @e902fd (roots: D:\dev\ide\jboss-as-7.1.1.Final\modules)
at org.jboss.modules.LocalModuleLoader.findModule(LocalModuleLoader.java:126)
at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:275)
at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:222)
at org.jboss.modules.LocalModuleLoader.preloadModule(LocalModuleLoader.java:94)
at org.jboss.modules.ModuleLoader.preloadExportedModule(ModuleLoader.java:233)
at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:246)
at org.jboss.as.server.moduleservice.ServiceModuleLoader.preloadModule(ServiceModuleLoader.java:160) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.modules.Module.addPaths(Module.java:841)
at org.jboss.modules.Module.link(Module.java:1181)
at org.jboss.modules.Module.relinkIfNecessary(Module.java:1207)
at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:208)
at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 5 more我看了几篇关于使用JBoss已经提供的依赖项部署项目的帖子,但没有找到适合我的东西……
我遗漏了什么或者理解错了什么?
要在JBoss中使用Jackson2,我应该怎么做?
如果可能,我希望避免使用静态模块,因为我不应该有访问JBOSS_HOME的权限。
附加信息:我使用的是JBoss 7.1.1最终版。
我希望这是有意义的,英语不是我的母语。
发布于 2017-07-20 00:22:57
它对你有效吗?
我在JBOSS_HOME中添加了org.jboss.resteasy.resteasy-jackson-provider模块,服务器启动正常。
我在我的代码中使用了下面的依赖项。
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.2.Final</version>尽管如此,当我拨打电话时,它仍在使用codehaus jackson。
1:18:35,227 INFO [stdout] (http-/127.0.0.1:8016-1) at org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:673)
11:18:35,227 INFO [stdout] (http-/127.0.0.1:8016-1) at org.codehaus.jackson.map.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:659)
11:18:35,227 INFO [stdout] (http-/127.0.0.1:8016-1) at org.codehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:1365)
11:18:35,227 INFO [stdout] (http-/127.0.0.1:8016-1) at org.codehaus.jackson.map.deser.BeanDeserializer._handleUnknown(BeanDeserializer.java:725)
11:18:35,227 INFO [stdout] (http-/127.0.0.1:8016-1) at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:703)
11:18:35,227 INFO [stdout] (http-/127.0.0.1:8016-1) at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580发布于 2019-01-24 20:13:11
您的配置是正确的,但是您还需要在JBoss中安装您正在使用的模块。
JBoss模块是从模块文件夹中加载的,它是包含在项目依赖项中还是包含在war中并不重要。
https://stackoverflow.com/questions/30102364
复制相似问题