有没有办法强制在WAR中使用org.apache。*的WAR中的com.sun.jersey。*?或者这是根据订单自动完成的吗?
<prefer-application-packages>
<package-name>com.sun.jersey.*</package-name>
<package-name>org.apache.*</package-name>
<package-name>antlr.*</package-name>
<package-name>javax.ws.rs.*</package-name>
</prefer-application-packages>
答案 0 :(得分:1)
这个问题并没有告诉我们你究竟想做什么。但是,我猜你正在尝试/希望让Weblogic在一个包树(泽西岛)中使用类作为另一个树(apache)中类的替换。
那不会奏效。假设您的源代码引用了org.apache.*
类,则类加载器将查找具有源代码指定的完全限定类名的类。它不会在一个包树中对不同包树中的类进行动态替换。如果以反射方式加载类,则同样适用...除非您的应用程序本身重写限定类名称字符串。
prefer-application-packages
元素正在解决另一个问题。它正在做的是在不同的地方寻找课程。 JAR文件可以在容器级别或Web应用程序中部署。默认情况下,如果您具有已在容器级别和Web应用程序级别JAR中部署的程序包,则将加载容器级别版本。此元素列出了应该加载webapp级别版本的包。
如果您尝试使用Jersey堆栈替换Apache堆栈,那么您(可能)需要以某种方式更改您的Web应用程序:
此外,尝试在Jersey容器中运行Apache特定代码会遇到麻烦。