webapp文件夹中是否应同时存在cxf-rt-frontend-jaxws-3.1.12.jar和neethi-3.0.3.jar?

时间:2019-06-10 05:45:40

标签: java tomcat cxf

对于使用cxf实现的Soap服务,我将与cxf相关的jar放在import github.com/mongodb/mongo-go-driver/options findOptions := options.Find() // build a `findOptions` findOptions.SetSort(map[string]int{"when": -1}) // reverse order by `when` findOptions.SetSkip(0) // skip whatever you want, like `offset` clause in mysql findOptions.SetLimit(10) // like `limit` clause in mysql // apply findOptions cur, err := collection.Find(context.TODO(), bson.D{}, findOptions) // resolve err for cur.Next(context.TODO()) { // call cur.Decode() } 文件夹下。 lib文件夹的清单如下:

webapp/WEB-INF/lib

我正在使用tomcat,并将所有这些jar放在cxf-core-3.1.12.jar cxf-rt-databinding-jaxb-3.1.12.jar cxf-rt-frontend-simple-3.1.12.jar cxf-rt-ws-addr-3.1.12.jar neethi-3.0.3.jar cxf-rt-bindings-soap-3.1.12.jar cxf-rt-frontend-jaxrs-3.1.12.jar cxf-rt-rs-client-3.1.12.jar cxf-rt-ws-policy-3.1.12.jar wsdl4j-1.6.3.jar cxf-rt-bindings-xml-3.1.12.jar cxf-rt-frontend-jaxws-3.1.12.jar cxf-rt-transports-http-3.1.12.jar cxf-rt-wsdl-3.1.12.jar xmlschema-core-2.2.2.jar 文件夹中

app/lib

在catalina.properties中的tomcat common.loader引用的lib文件夹下。

我真的很想将所有cxf jar和geronimo jars放在app / lib下,这样一来,一旦我们有了更多soap服务,每个webapp都不会在其webapp文件夹下复制所有cxf jars。我在测试时发现,如果将所有cxf jar放在app / lib下,则不会出现不同的错误。

某些错误与app / lib文件夹中的neethi旧版本有关, xmlschema较旧版本的jar已存在于app / lib下,类似的wsdl4j jar也已存在。目前,我可能无法将neethi 2.x的版本升级到3.x。

我的问题是,如果我仅将与cxf相关的jars放在app / lib下,并将neethi,xmlschema,wsdl4j jars保留在webapp文件夹下,则会出现

这样的异常
geronimo-activation_1.1_spec-1.0.2.jar
geronimo-javamail_1.4_spec-1.6.jar
geronimo-servlet_3.0_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar

我真的不明白为什么这行不通。我以为webappclass加载程序将从webapp文件夹位置加载neethi和其他2个jar,因此它应该可以工作。关于它为什么不起作用的任何建议以及我可以尝试的任何替代方法。

我尝试了各种组合,发现将所有这些罐子放在一起只会起作用:

Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.

0 个答案:

没有答案