我有一个非常基本的问题。如果我的webapp为2.5或更高,CXF何时以及如何启动。我正在运行的weblogic 10.3获取了我的web-app中定义的WS注释。
到目前为止,我的网络应用版本为2.3。当我在webapp XML中将其升级到2.5时,我注意到我的拦截器没有被踢,因为现在weblogic能够处理注释并且CXF不在图片中(基于堆栈跟踪分析)。
我的观察是否正确,还是我完全错了?我刚刚改变:
<DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
到
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
答案 0 :(得分:0)
你是对的,将Servlet版本更改为2.5会触发使用@WebService注释注释的类的自动发现。
要防止这种情况,您必须调整类加载策略。在Apache CXF站点上有一个很好的描述:Apache CXF - WebLogic
根据本网站,您有两种选择:
我更喜欢使用基于weblogic-application.xml的解决方案,因为它更具可移植性。
但是它不能立即对我起作用,我不得不向EAR / WAR添加额外的库 - geronimo-ws-metadata_2.0_spec-1.1.1.jar。
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
<version>1.1.1</version>
</dependency>
如果您还没有EAR存档,则必须创建一个。假设你正在使用maven:
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=ear-jee5
将WAR项目添加到依赖项中。
答案 1 :(得分:0)
我不想弄乱WL,因为我们在WL上运行了多个应用程序。所以简单的解决方案就是使用处理程序。见这里:handlers_introduction。