gpt4 book ai didi

java - 网络逻辑 12c : Prefer-web-inf-classes and prefer-application-packages for Jersey

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:48 27 4
gpt4 key购买 nike

我必须使用 weblogic.xml< 的 prefer-web-inf-classesprefer-application-packages 这两个(奇怪的是..)属性/em> 在 Weblogic 12c 服务器 (12.2.1) 上

它是基于 Jersey 1.9 的 REST 应用程序。 (Jersey 1.x JAX-RS RI)和 Guice。

<强>1。为什么使用 :prefer-web-inf-classes

如果你有多个 WAR,你必须在 war/lib 级别放置 guice-jersey/guice 的库,否则你会得到一个 Multibindings Error .

还必须将 prefer-web-inf-classes 指定为 true

这样就可以正常工作了!

我尝试以同样的方式使用 prefer-application-package 和包 (com.sun.jersey.guice.spi.container.servlet, com.google.inject.servlet 等...)但没办法。

注意:无法在 EAR 级别排除此库。

<强>2。为什么使用 :prefer-application-packages

要在 Weblogic 12c (12.2.1) 上使用 Jersey 1.x JAX-RS RI,所以我必须指出以下包(Weblogic 使用 Jersey 2 的其他方式,以及不同版本的 Jackson 库等。 )

如果它是 indicated this way.,它在 Jersey 1.X 上完美运行.我已经分别探测了两场 war ,并且工作正常......但是,记住我的 friend 我有两场 war ......所以......

总结

我不能同时使用这两个属性(在 weblogic.xml 上使用这两个属性的部署错误..),但它是必需的:

  1. 对于Guice Filter的问题,需要将prefer-web-inf-classes设置为true才能使用guice-servlet.jar/jersey-guice.jarwar-lib 级别
  2. 要使用 Jersey 1.x,需要使用 ..... prefer-application-package

问题:如何将两者结合使用其中之一??

最佳答案

毕竟

  1. 仅将 prefer-web-inf-classes 设为 true
  2. 如果你使用这个,你不需要使用 prefer-application-packages ....但确保你有正确的库在 war /耳朵级别.

    问题是:

该项目与 Jersey 2 有依赖关系(基于 Jersey 2.X 的 Swagger ...)因此,通过 Swagger 依赖关系 (swagger-jersey2-jaxrs),Jersey 2 库被打包在 ear/war 上...所以 prefer-web-inf-classes 没有效果!

删除依赖后一切都解决了!

在同一级别(classpath 或 ear lib,或 war lib)不应存在同一库的不同版本。

关于java - 网络逻辑 12c : Prefer-web-inf-classes and prefer-application-packages for Jersey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292980/

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