サービスへのSOAP呼び出しを行うためにSpring WebserviceTemplateを使用しています。パフォーマンステストを実行して、負荷の下での動作を確認しました。私はまた、私の呼び出しているサービスに私の着信要求からヘッダーパラメーターをコピーするためのインターセプターを持っています。私は、パフォーマンス・テストを実行したときJAXB.marshalブロッキングWebサービスコール
@Component
public class HeaderPropagationInterceptor implements ClientInterceptor {
@Override
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
SoapMessage request = (SoapMessage) messageContext.getRequest();
Result result = request.getSoapHeader().getResult();
JAXB.marshal(getRequestHeader(), result);
return true;
}
、私はこれがブロックされる可能性があります理由があり、以下の文は4-5秒
JAXB.marshal(getRequestHeader(), result);
ブロッキング参照してください?
クラス['JAXB'](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXB.html)のjavadocがありますか? "*一般的に言えば、パフォーマンスは必ずしも最適ではありません パフォーマンスクリティカルなコード を書く必要がある人は、残りのJAXB APIを直接使用することが期待されます*" –
ありがとうございます。 100ミリ秒。この問題は、テストを読み込もうとしたときにのみ表示されます。この遅れの原因となる機会があれば同期しますか?クラスを開いたとき、メソッドは静的だが同期していないことがわかった –
'JAXB.marshal'はどこから来たのですか?これはサードパーティのAPIですか? – kolossus