Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

577
Visualizações
Spring WS/boot: ¿Cómo configurar la propiedad WebServiceTemplate en el interceptor del cliente?

Mi aplicación es tanto servidor SOAP como Cliente, es decir, actúa como un servidor proxy entre los clientes y el proveedor de servicios web. Así que recibo diferentes solicitudes de clientes y haré la validación y las enrutaré al servicio SOAP de destino configurando las configuraciones SSL/TS apropiadas. Estoy usando Spring WS para hacer una llamada de servicio web SOAP. El siguiente código funciona bien:

 try { webServiceTemplate.setMessageSender(certManager.setKeystores()); // perform the transaction SOAPResponse = (JAXBElement<Response>) webServiceTemplate .marshalSendAndReceive(SoapRequest); } catch(Exception e) { // catching a broad exception here because many things can go wrong, //but any exception means total failure throw new ServiceException(e); }

Pero estoy probando un enfoque diferente en el que configuro la configuración SSL en el interceptor del cliente:

 public class AppClientInterceptor implements ClientInterceptor{ private static final Logger LOGGER = LoggerFactory .getLogger(AppClientInterceptor.class); @Autowired WebServiceTemplate webServiceTemplate; @Autowired CertManager certManager; @Override public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException { // pull out the request from the current thread try { LOGGER.info("before setting message sender"); if(webServiceTemplate!=null) webServiceTemplate.setMessageSender(certManager.setKeystores()); else System.out.println("web service tempate is null"); return false; } catch (GeneralSecurityException | IOException e) { // TODO Auto-generated catch block LOGGER.info("In catch block unable to set keystores"); e.printStackTrace(); } return false; }

El interceptor del cliente se invoca cuando realizo la llamada al servicio web, pero falla porque la plantilla del servicio web es nula. Conecté la plantilla del servicio web, pero no puedo entender por qué es nula. La plantilla de servicio web que utilicé es la siguiente:

 @Bean public WebServiceTemplate webServiceTemplate() { WebServiceTemplate webServiceTemplate = new WebServiceTemplate(); webServiceTemplate.setMarshaller(jaxb2Marshaller()); webServiceTemplate.setUnmarshaller(jaxb2Marshaller()); ClientInterceptor[] interceptors = {new AppClientInterceptor()}; webServiceTemplate.setInterceptors(interceptors); webServiceTemplate.setDefaultUri( "https://destinationserver.com:10072"); return webServiceTemplate; }

¿Puedo establecer la configuración SSL en mi interceptor de la manera anterior? ¿Es un enfoque correcto?

Gracias por adelantado

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

¿Probó la anotación @Configurable antes de la definición de clase?

 @Configurable public class AppClientInterceptor implements ClientInterceptor{ ... }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda