Weblogic 12c : Prefer-web-inf-classes and prefer-application-packages for Jersey

给你一囗甜甜゛ 提交于 2019-12-01 15:53:03

问题


I have to use both (oddly enough ..) prefer-web-inf-classes and prefer-application-packages properties of weblogic.xml on a Weblogic 12c Server (12.2.1)

It is REST application based on Jersey 1.9. ( Jersey 1.x JAX-RS RI) and Guice.

1. Why use :prefer-web-inf-classes

If you have more than one WAR you have to place at the level of war/lib the libraries for guice-jersey / guice , other way you get an Multibindings Error.

It must be indicated also the prefer-web-inf-classes to true.

This way it works properly!

I have tried to work in the same way using prefer-application-packages with packages (com.sun.jersey.guice.spi.container.servlet, com.google.inject.servlet, etc...) but no way.

Note: It is not possible to exclude this libraries at EAR level.

2. Why use :prefer-application-packages

To use Jersey 1.x JAX-RS RI on Weblogic 12c (12.2.1) so I have to indicate the following packages (other way Weblogic uses Jersey 2, and different version of Jackson libraries, etc. )

It works perfectly on Jersey 1.X if it is indicated this way. . I have probed two war separately, and works fine... but, remember my friend I have two war..so....

Summary

I can not use both properties (deploying error for using both properties on the weblogic.xml..), but it's needed :

  1. For the problem with Guice Filter, need to put prefer-web-inf-classes to trueto use guice-servlet.jar / jersey-guice.jar at war-lib level.
  2. To work with Jersey 1.x, need to use ..... prefer-application-package

Question: How to combine both to use one of them??


回答1:


After all

  1. Use just prefer-web-inf-classes to true.
  2. If you use this, you don't need to use prefer-application-packages ....BUT ENSURE that you have the correct libraries at war /ear level.

    The problem was:

The Project had a dependency with Jersey 2 (based on Swagger for Jersey 2.X ...) So via Swagger dependencies (swagger-jersey2-jaxrs), Jersey 2 libraries was packaged on ear/war... and so prefer-web-inf-classes HAS NO EFFECT!

After removing the dependency all was resolved!

At same the level (classpath or ear lib, or war lib) should not exist different versions of the same library.




回答2:


  • Hello, world! Hi, There are two way to resolve this problem.

    1. You can used to combine both file in to one file and call it based on choose tag as requirements.

    2. You can just write tags to merge or import/ include your xml file in to one. Example shown. Hint: Do google how to merge and call xml file based on condition.



来源:https://stackoverflow.com/questions/36292980/weblogic-12c-prefer-web-inf-classes-and-prefer-application-packages-for-jersey

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!