将 JAXWS 应用程序从 Java 8 迁移到 Java 11 [英] Migration JAXWS application from Java 8 to Java 11

查看:50
本文介绍了将 JAXWS 应用程序从 Java 8 迁移到 Java 11的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找 org.apache.cxf:cxf-spring-boot-starter-jaxwsjaxws-api/jaxws-ri 的兼容组合 在 Java 10+ 上.

I am looking for compatible combination of org.apache.cxf:cxf-spring-boot-starter-jaxws with jaxws-api/jaxws-ri on Java 10+.

我们的应用程序在 Java 8 上运行良好.

Our application works fine on Java 8.

也在 Java 9 &10 与 --add-modules=java.se.ee.

Also on Java 9 & 10 with --add-modules=java.se.ee.

但是,当我删除此选项并添加以下依赖项时:

But, when i remove this option and add following dependecies:

compile group: 'javax.xml.ws', name: 'jaxws-api', version: '2.3.0'
compile group: 'com.sun.xml.ws', name: 'jaxws-ri', version: '2.3.0.2', ext: 'pom'
compile group: 'com.sun.xml.ws', name: 'jaxws-rt', version: '2.3.0.2', ext: 'pom'

常见依赖项(在 java 9/10 或 java 8 中有/没有 --add-modules):

common dependencies (with/without --add-modules in java 9/10, or java 8):

compile('org.apache.cxf:cxf-spring-boot-starter-jaxws:3.2.6')

我变成了:

Caused by: java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude()Z
    at org.apache.cxf.jaxws.support.JaxWsServiceConfiguration.isOperation(JaxWsServiceConfiguration.java:190)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.isValidMethod(ReflectionServiceFactoryBean.java:1962)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.createInterface(ReflectionServiceFactoryBean.java:999)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:461)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:695)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:530)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:263)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199)
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103)
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:168)
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:460)
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:338)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:255)
    at .....
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 44 more

推荐答案

注意 sprint boot,但为了让 JAXWS 在 Java 11 中工作,我使用了

Note sure about sprint boot, but to get JAXWS working in Java 11, I used

<profiles>
    <!-- add back the jaxws SOAP dependendies which were removed in JDK11 -->
    <profile>
        <id>jdk11</id>
        <activation>
            <jdk>[11,)</jdk>
        </activation>
        <!-- tested working with OpenJDK 11.0.8 -->
        <dependencies>
            <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-rt</artifactId>
                <version>2.3.3</version>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>rt</artifactId>
                <version>2.3.3</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

这篇关于将 JAXWS 应用程序从 Java 8 迁移到 Java 11的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆