me parece que tengo un pequeño problema cuando uso @Autowired en un interceptor cxf personalizado. Mi caso de uso es que quiero registrar mensajes de jabón y enviarlos usando AMQP a otro sistema. Este proceso funciona para servicios normales, etc. Pero haga lo que haga, las propiedades necesarias no se autoconectan y permanecen nulas.Cómo usar Spring Autowired en un interceptor cxf personalizado?
he comprobado el registro DI primavera y el contexto se escanea y se pickedup, así que lo que me falta?
Es esto posible en interceptores CXF?
@Component
public class LogInInterceptor extends AbstractSoapInterceptor {
private @Value("#{rabbitMQProperties['rabbitmq.binding.log.soap']}")
String binding;
@Autowired
AmqpTemplate amqpTemplate;
public LogInInterceptor() {
super(Phase.RECEIVE);
}
@Override
public void handleMessage(SoapMessage soapMessage) throws Fault {
logIt(soapMessage);
}
private void logIt(SoapMessage message) throws Fault {
// rest of the code omitted...!!!
amqpTemplate.convertAndSend(binding, buffer.toString());
}
}
Por "recogido" quiere decir que su LogInInterceptor está siendo encontrado y es elegible para inyección desde el contenedor de primavera? ¿Ha reportado algún otro problema con la inyección (como fallar en el parámetro @Value)? –
¿Puede compartir la configuración de este interceptor con CXF también? La razón de este problema puede ser que el interceptor puede haber creado una instancia de CXF y una instancia separada autowired puede haber sido creado por la primavera. –
He implementado el interceptor como antes y se añadió a mi servicio web a través de los org.apache.cxf.interceptor.InInterceptors @ (interceptores = { "mypackagenames.ws.interceptor.LogInInterceptor "org.apache.cxf.interceptor.LoggingInInterceptor" "}) No realicé ninguna configuración adicional. – Marco