Web Services SOAP客户端配置未注册封送程序

0ve6wy6x  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(155)

我尝试使用spring Boot 和Kotlin使用SOAP服务,但我的应用程序无法识别服务(客户端)中的编组器。
项目编译并运行,但当我向端点“/get”发出请求时,我遇到了错误:

java.lang.IllegalStateException: No marshaller registered. Check configuration of WebServiceTemplate.

字符串
我做了这个客户:

class ExtraccionCatalogosService: WebServiceGatewaySupport() {

    fun extraer(){
        println("Iniciando extracción de catálogos")
        val request = VehiculoMarca()
        request.proveedor = "XXXXX"
        request.password = "XXXX"
        request.usuario = "AH"
        request.token = "00000000000"
        request.tipoVehiculo = "01"
        request.negocio = ""
        val response = WebServiceTemplate().marshalSendAndReceive("https://pruebas.seguros.com/webservices/cot?wsdl", request, SoapActionCallback("http://ws.units.seguros.com/")) as VehiculoMarcaResponse
        println(response)
    }
}


添加了这个配置后,我已经在src/main/Kotlin包中的路径“com.ws.seguros.models.wsdl”中生成了模型。

@Configuration
class ExtraccionMarshaller {

    @Bean
    fun getMarshaller(): Jaxb2Marshaller{
        println("configurando marshaller")
        val jaxb2Marshaller = Jaxb2Marshaller()
        jaxb2Marshaller.contextPath = "com.ws.seguros.models.wsdl"
        return jaxb2Marshaller
    }

    @Bean
    fun getExtraccionCatalogos(jaxb2Marshaller: Jaxb2Marshaller): ExtraccionCatalogosService{
        println("configuracndo extraccion service")
        val extraccionCatalogosService = ExtraccionCatalogosService()
        extraccionCatalogosService.defaultUri = "https://pruebas.seguros.com/webservices/cot?wsdl"
        extraccionCatalogosService.marshaller = jaxb2Marshaller
        extraccionCatalogosService.unmarshaller = jaxb2Marshaller
        return extraccionCatalogosService
    }
}


最后,我有这个控制器:

@RestController
class ExtraccionCatalogosController {

    @Autowired
    lateinit var extraccionCatalogosService: ExtraccionCatalogosService

    @GetMapping("/get")
    fun extraer(){
        val resp = extraccionCatalogosService.extraer()
        println(resp)

    }
}

vsdwdz23

vsdwdz231#

我找到了答案。当我使用Kotlin时,IDE建议在服务(客户端)中使用WebServiceTemplate(),但这会影响Bean中已经创建的WebServiceTemplate()。当我将其更改为getWebServiceTemplate()时,它开始工作。

相关问题