カスタムのcxfインターセプタに@Autowiredを使用すると、小さな問題に遭遇するようです。 私は、SOAPメッセージをログに記録し、AMQPを使って別のシステムに送信したいと考えています。このプロセスは通常のサービスなどのために機能します。 私が何をしても、必要なプロパティはautowiredにならず、nullのままです。Spring Autowiredをカスタムcxfインターセプタで使用する方法は?
私はSpring DIログをチェックして、コンテキストをスキャンして取得しました。何が欠けていますか?
これは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());
}
}
スプリングコンテナからの注射?注入に関する他の問題(@Valueパラメータでの失敗など)が報告されましたか? –
このインターセプターの構成をCXFでも共有できますか?この問題の原因は、インターセプタがCXFによってインスタンス化され、別の自動インスタンスがSpringによって作成された可能性があるためです。 –
私は上記のようにインターセプタを実装し、@ org.apache.cxf.interceptor.InInterceptors(インターセプタ= {"org.apache.cxf.interceptor.LoggingInInterceptor"、 "mypackagenames.ws.interceptor.LogInInterceptor "})私は追加の設定を全く行っていませんでした。 – Marco