Spring Boot-CXF Soap Web服务-如何在运行时停止serviceName和nameSpace验证

时间:2018-08-09 09:16:24

标签: spring-boot soap wsdl cxf cxf-codegen-plugin

我有一个合同第一的Web服务应用程序,使用wsdl通过cxd插件生成类。

<plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${project.basedir}/src/main/resources/wsdl/hub.wsdl</wsdl>
                                <wsdlLocation>classpath:wsdl/hub.wsdl</wsdlLocation>
                                <validate>false</validate>
                                <validateWsdl>false</validateWsdl>
                            </wsdlOption>   
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我的理解是,wsdl将被打包到jars中的classes / wsdl文件夹下,因此在运行时可在类路径上使用,因此不会从远程位置下载它。

我的问题是,我需要调用的服务是用相同的协定构建的,但是对服务名称和名称空间的定义不同,但是本质上是相同的协定。我不一定能知道它们将在哪个serviceName和nameSpace上发布,我只会知道它们将在其上发布的url。

当调用serviceName和nameSpace不匹配的服务时,代码将引发以下异常:-

javax.xml.ws.WebServiceException: Could not find service named xxxx in wsdl <url>   at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:173) ~[cxf-rt-frontend-jaxws-3.1.6.jar:3.1.6]
at org.apache.cxf.jaxws.ServiceImpl.initialize(ServiceImpl.java:161) ~[cxf-rt-frontend-jaxws-3.1.6.jar:3.1.6]
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:129) ~[cxf-rt-frontend-jaxws-3.1.6.jar:3.1.6]
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:82) ~[cxf-rt-frontend-jaxws-3.1.6.jar:3.1.6]
at javax.xml.ws.Service.<init>(Service.java:77) ~[na:1.8.0_144]

是否有一种简单的方法可以打开对serviceName和nameSpace的运行时验证?

提前谢谢...。

0 个答案:

没有答案