Basta ya de indagar por todo internet ya que llegaste al sitio justo, poseemos la respuesta que buscas sin complicarte.
Solución:
A través de conjeturas y mirando artefactos en maven central, pude encontrar una solución.
Resulta que para comprender y evaluar realmente la política en este wsdl, se debe proporcionar una dependencia de tiempo de ejecución faltante. Para mí fue org.apache.cxf/cxf-rt-frontend-jaxws. No pude encontrar esto documentado en ninguna parte. Esto atrae una serie de otras dependencias de cxf y no sé si un conjunto más mínimo de ellas está bien.
Una vez que incluyo esta dependencia, ya no recibo una advertencia cuando instancia el objeto del cliente. (¡Además, la creación de instancias lleva mucho más tiempo!)
Sin embargo, cuando trato de usar el servicio obtengo una excepción:
javax.xml.ws.soap.SOAPFaultException: None of the policy alternatives can be satisfied.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:159)
...
Lo más probable es que esto se deba a la razón que señaló la respuesta de Willie Wheeler: la política requiere un cifrado de 256 bits en el transporte, pero el SSL de este servicio utiliza un cifrado de 128 bits. Sin embargo, usando un wsdl con Base128
en cambio, no resuelve esta excepción y no investigué más.
Por lo tanto, es muy posible que todos los que usan este servicio reciban esta advertencia o algo similar, y es imposible usar este servicio si la política de seguridad está realmente verificada. Supongo que viviré con la advertencia en su lugar.
Puedo reproducir este problema con el servicio de etiquetas Express-1:
2014-09-10 22:15:29.601 WARN 6564 --- [ main] c.s.x.i.w.w.EffectiveAlternativeSelector : WSP0075: Policy assertion "http://schemas.xmlsoap.org/ws/2005/07/securitypolicyTransportBinding" was evaluated as "UNKNOWN".
2014-09-10 22:15:29.602 WARN 6564 --- [ main] c.s.x.i.w.w.EffectiveAlternativeSelector : WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN".
Creo que el problema es que la política que ingresó anteriormente requiere el cifrado de mensajes Basic256, pero el cifrado SSL del servicio es más débil.
Por ejemplo, consulte este WSDL:
https://service.express1.com/Services/EwsLabelService.svc?wsdl
En la parte superior, verá una política idéntica a la que proporcionó. Pero luego, si observa el certificado SSL del sitio, está usando AES_128_CBC, que es solo un cifrado de 128 bits.
Consulte http://specs.xmlsoap.org/ws/2005/07/securitypolicy/ws-securitypolicy.pdf, secciones 7.1, 8.1 y 8.3 para obtener información sobre las políticas de TransportBinding y los conjuntos de algoritmos. Creo que la advertencia dice que la política requiere un cifrado de 256 bits, pero debido a que el servicio no lo admite, el cliente elige un algoritmo de cifrado más débil en su lugar.
Como se trata de un problema del lado del servicio, probablemente la mejor manera de solucionarlo es notificar el problema a la parte responsable del servicio.
Descubrí que estos errores se registran ANTES de que se envíe la solicitud SOAP.
Las advertencias no aparecieron en Java 6. Sí aparecen en Java 7 y Java 8. Mi corazonada es que estas advertencias están relacionadas con el jaxrpc.jar heredado en mi código fuente.
Mi “truco” alternativo fue descargar una copia del archivo WSDL y modificar la sección de políticas. Luego apunte la clase principal en mi servicio web a este archivo WSDL modificado.
//Modified tags in my main class. Change the wsdlLocation to point to a file in my source code (instead of a URL)
@WebServiceClient(name = "Service1", targetNamespace = "https://example.org/", wsdlLocation = "WebService.wsdl")
public class Service1
...
Archivo WebService.wsdl modificado: