spring boot 2.0 整合cxf遇到的坑

CXF环境搭建网上的帖子大致相同,参考:
https://blog.csdn.net/maple_fix/article/details/79884320

遇到的问题,启动项目报以下错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Method servletEndpointRegistrar in org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration required a bean of type 'org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPathProvider' that could not be found.
	- Bean method 'mainDispatcherServletPathProvider' not loaded because Default DispatcherServlet found non dispatcher servlet bean dispatcherServlet


Action:

Consider revisiting the conditions above or defining a bean of type 'org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPathProvider' in your configuration.

经查阅资料找到 解决办法,参考博客https://blog.csdn.net/qq_37394874/article/details/86523678:
将spring boot 版本换成 2.0.1RELEASE

	<!-- spring boot 基础依赖包 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!-- <version>2.0.3.RELEASE</version> 使用此版本,集成webservice时启动报错,所以改为使用2.0.1版本-->
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

cxf jar包使用以下两个版本都可以:

		<!-- cxf依赖  3.1.12 START-->
		<!-- <dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxws</artifactId>
			<version>3.1.12</version>
		</dependency>
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-transports-http</artifactId>
			<version>3.1.12</version>
		</dependency> 
		<!-- cxf依赖  3.1.12   END-->
		-->
		<!-- CXF 3.2.4   START-->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
            <version>3.2.4</version>
        </dependency>
		<!-- CXF 3.2.4   END-->

至此,问题解决了:
访问如下地址也能正确看到wsdl
http://localhost:8081/dc/webservice/user?wsdl
在这里插入图片描述

2019-10-21:

FS项目集成webservice时启动再次遇到问题,百度到其他博客的解决办法:
application.properties中添加如下配置

cxf.path=/webservice

SpringBoot版本和cxf版本:

<!-- spring boot 基础依赖包 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<!-- CXF webservice -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
    <version>3.2.4</version>
</dependency>

在这里插入图片描述

使用postman测试webservice接口:

Header中的Content-Type设置为text/xml
Body中的参数值
body中的参数值:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pm="http://service.fs.gohealth.com/">
<soapenv:Header></soapenv:Header>
    <soapenv:Body>
        <pm:HIPMessageServer>
            <action>ProviderDetailsQuery</action>
            <message><![CDATA[<PRPM_IN306010UV01 xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ITSVersion="XML_1.0"  xsi:schemaLocation="urn:hl7-org:v3 ../multicacheschemas/PRPM_IN306010UV01.xsd"><id root="1ee83ff1-08ab-4fe7-b573-ea777e9bad51" extension="9D73520B-D489-4B70-8F4B-7B5C2D7961B5"/><creationTime value="20080625141610"/><versionCode code="V3-2007-05"/><interactionId extension="PRPM_IN306010UV01" root="2.16.840.1.113883.1.6" displayable="true"/><profileId root="2.16.124.113635.1.1.100.0.2.2"/><processingCode code="P"/><processingModeCode code="T"/><acceptAckCode code="AL"/><receiver typeCode="RCV"><telecom></telecom><device classCode="DEV" determinerCode="INSTANCE"><id root="1.2.840.114350.1.13.999.567"/></device></receiver><sender typeCode="SND"><telecom></telecom><device classCode="DEV" determinerCode="INSTANCE"><id root="1.2.840.114350.1.13.999.234"/></device></sender><controlActProcess classCode="CACT" moodCode="EVN"><code code="PRPM_TE306010UV01" codeSystem="2.16.840.1.113883.1.6"/><queryByParameterPayload><statusCode code="new"/><administrativeGender><value code="1" codeSystem="2.16.156.10011.2.3.3.4" displayName="男性"/><semanticsText>PrincipalPerson.administrativeGenderCode</semanticsText></administrativeGender><dOB><value value="20010101"/><semanticsText>PrincipalPerson.birthDate</semanticsText></dOB><providerID><value root="2.16.156.10011.1.4" extension="120109197706015518"/><semanticsText>HealthCareProvider.id</semanticsText></providerID><providerName><value>李医生</value><semanticsText>PrincipalPerson.name</semanticsText></providerName></queryByParameterPayload></controlActProcess></PRPM_IN306010UV01>]]></message>
        </pm:HIPMessageServer>
    </soapenv:Body>
</soapenv:Envelope>

body中的参数格式:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pm="http://service.fs.gohealth.com/">
<soapenv:Header></soapenv:Header>
    <soapenv:Body>
        <pm:HIPMessageServer>
            <action>ProviderDetailsQuery</action>
            <message><![CDATA[xxxxxxml]]></message>
        </pm:HIPMessageServer>
    </soapenv:Body>
</soapenv:Envelope>
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CXF是一个开源的、用于构建和开发Web服务的框架,它提供了一套简单的API和工具,能够帮助开发人员创建和部署高性能和可扩展的Web服务。Spring Boot是一个开发框架,可以帮助开发者快速创建和配置独立的、生产级别的Spring应用程序。 CXFSpring Boot可以很好地结合使用来进行Web服务的开发和测试。 要进行CXF Spring Boot的测试,可以按照以下步骤进行: 1. 首先,在你的项目中添加CXFSpring Boot依赖。可以在maven或者gradle的配置文件中添加相应的依赖。 2. 创建一个CXF的服务类,使用注解将其声明为一个Web服务。可以在类上添加`@WebService`注解,同时可以使用`@WebMethod`注解来声明Web服务中的方法。在方法上添加其他注解以定义方法的特性和行为。 3. 创建一个Spring Boot应用程序的主类,用来启动应用程序。可以在类上添加`@SpringBootApplication`等注解来进行配置。在主类中,可以将CXF的服务类通过`@Bean`注解进行注册。 4. 在CXF服务类中,可以添加一些业务逻辑来处理请求和响应。可以使用CXF提供的一些工具类来操作和处理数据。 5. 运行Spring Boot应用程序,可以使用Spring Boot内置的Tomcat服务器来启动应用程序。 6. 使用工具或浏览器来测试CXF的Web服务。可以使用SOAPUI或Postman等工具来发送请求和接收响应。在请求中可以包含方法名、参数和其他必要的信息。 7. 分析和检查返回的响应,确保Web服务按照预期工作。 通过上述步骤,就可以完成CXF Spring Boot的测试。可以通过模拟请求和检查响应来验证Web服务的正确性和性能。同时,可以使用其他测试工具和框架来进一步优化和完善测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值