Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

315
Vistas
Propiedad SOAP WS-Addressing con Wss4jSecurityInterceptor con Java

Hola, creo un código para consumir el servicio SOAP,

Para el encabezado de autenticación, utilicé Wss4jSecurityInterceptor para establecer la información del encabezado.

Recibo una respuesta fallida como la siguiente

 Exception in thread "main" org.springframework.ws.soap.client.SoapFaultClientException: Required element {http://www.w3.org/2005/08/addressing}Action is missing

Mi código de configuración como se muestra a continuación

 @Configuration public class SoapClientConfig { @Bean public Jaxb2Marshaller marshaller() { Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setContextPath("com.xyz.client"); marshaller.setCheckForXmlRootElement(false); return marshaller; } @Bean public MyClient myClient(Jaxb2Marshaller marshaller) throws Exception { MyClient client = new MyClient(); client.setDefaultUri("https://localhost:8080/ws/service"); client.setMarshaller(marshaller); client.setUnmarshaller(marshaller); ClientInterceptor[] interceptors = new ClientInterceptor[] {securityInterceptor()}; client.setInterceptors(interceptors); return client; } @Bean public Wss4jSecurityInterceptor securityInterceptor() { Wss4jSecurityInterceptor wss4jSecurityInterceptor = new Wss4jSecurityInterceptor(); wss4jSecurityInterceptor.setSecurementActions("UsernameToken"); wss4jSecurityInterceptor.setSecurementMustUnderstand(true); wss4jSecurityInterceptor.setSecurementPasswordType("PasswordText"); wss4jSecurityInterceptor.setSecurementUsername("XXXXXXXXXXX"); wss4jSecurityInterceptor.setSecurementPassword("XXXXXXXX"); return wss4jSecurityInterceptor; } }

¿Alguien puede sugerirme lo que me estoy perdiendo?

Si lo intento desde SOAPUI, funciona bien. Si configuro WS-Addressing=false desde SOAPUI y también me da el mismo error, entonces emita con la propiedad WS-Addressing establecida con el código anterior. ¿Cómo puedo?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Utiliza WebServiceTemplate para enviar la solicitud? Si es así, puedes hacer algo como:

 ActionCallback callback = new ActionCallback( new URI("action uri"));

Aquí debe proporcionar la ubicación de acción de uri real en lugar de "uri de acción". Entonces hazlo

 getWebServiceTemplate().marshalSendAndReceive(request, callback)
about 4 years ago · Santiago Trujillo Denunciar

0

Mucho tiempo antes trabajé en llenar el encabezado SOAP con valor dinámico, para eso necesita trabajar en la construcción de los nodos xml usando el objeto de devolución de llamada ... WebServiceMessageCallback

http://docs.spring.io/spring-ws/site/reference/html/client.html#d5e1848

En mi escenario, necesito construir el nodo usando QName (Java) Node by Node.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda