我正在进行java从java8到java11的迁移工作,在java11上排除的包中,有web服务使用的javax.xml.ws。jaxws-rt(2.3.3-b01)
作为pom文件的依赖.构建是OK的.部署是KO的,因为jaxws-rt在jvm com.sun.xml.internal.ws.spi.ProviderImpl上搜索ProviderImpl,没有找到。java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
之后,我添加了两个罐子(jaxws-api-2.3.1.jar
和 jaxws-rt-2.3.3-b01.jar
)上的目录 apache-karaf-4.2.7/lib/boot/
拟装在 杠铃. 我还添加了以下一行。
wrapper.java.additional.13=-Djavax.xml.ws.spi.Provider=com.sun.xml.ws.spi.ProviderImpl。
在 karaf-wrapper.conf 文件来定义新的 供应商实例 而不是在Java 11上删除的旧版本。
但是当我启动WS时,仍然有这个阻塞错误。
Caused by: java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: com.sun.xml.ws.spi.ProviderImpl not a subtype
at java.util.ServiceLoader.fail(ServiceLoader.java:588) ~[?:?]
at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1236) ~[?:?]
at java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264) ~[?:?]
at java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299) ~[?:?]
at java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384) ~[?:?]
at javax.xml.ws.spi.ServiceLoaderUtil.firstByServiceLoader(ServiceLoaderUtil.java:63) ~[jaxws-api-2.3.1.jar:?]
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:89) ~[jaxws-api-2.3.1.jar:?]
at javax.xml.ws.spi.Provider.provider(Provider.java:96) ~[jaxws-api-2.3.1.jar:?]
at javax.xml.ws.Service.<init>(Service.java:112) ~[jaxws-api-2.3.1.jar:?]
at fr.asipsante.psig.service.signalement.PSIGSignalement.<init>(PSIGSignalement.java:39) ~[?:?]
at fr.gouv.sante.sivss.psig.service.PsigSignalementWebService.createPSIGSignalementWebService(PsigSignalementWebService.java:70) ~[?:?]
at fr.gouv.sante.sivss.psig.service.PsigSignalementWebService.init(PsigSignalementWebService.java:48) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:337) ~[!/:1.10.2]
at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:835) ~[!/:1.10.2]
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:591) ~[!/:1.10.2]
... 55 more
我尝试了不同的解决方案,但还是不明白少了什么... ... ??
NB: 如果有人想查看解决方案实现的信息,我可以提供更多的细节。阿纳斯
你不应该把这些jars添加到karaf lib文件夹中。最好添加Apache CXF特性,然后安装cxf-jaxws特性。这将安装CXF和基础SOAP捆绑包。