|
Apache CXF example source code file (OneWayDecoupledFaultHandler.java)
The Apache CXF OneWayDecoupledFaultHandler.java source code/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.cxf.ws.addressing.soap; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor; import org.apache.cxf.message.Exchange; import org.apache.cxf.message.Message; import org.apache.cxf.phase.Phase; import org.apache.cxf.transport.Destination; import org.apache.cxf.ws.addressing.AddressingPropertiesImpl; import org.apache.cxf.ws.addressing.ContextUtils; import org.apache.cxf.ws.addressing.EndpointReferenceType; /** * Utility interceptor for dealing with faults occurred during processing * the one way requests with WSA FaultTo EPR pointing to a decoupled destination. * * Note that this interceptor is not currently installed by default. * It can be installed using @InInterceptors and @OutInterceptors * annotations or explicitly added to the list of interceptors. */ public class OneWayDecoupledFaultHandler extends AbstractSoapInterceptor { public OneWayDecoupledFaultHandler() { super(Phase.PRE_PROTOCOL); addBefore(MAPCodec.class.getName()); } public void handleMessage(SoapMessage message) { // complete } // Ideally, this code will instead be executed as part of the Fault chain // but at the moment PhaseInterceptorChain needs to be tricked that this is // a two way request for a fault chain be invoked public void handleFault(SoapMessage message) { if (message.getExchange().isOneWay() && !ContextUtils.isRequestor(message)) { Exchange exchange = message.getExchange(); Message inMessage = exchange.getInMessage(); final AddressingPropertiesImpl maps = ContextUtils.retrieveMAPs(inMessage, false, false, true); if (maps != null && !ContextUtils.isGenericAddress(maps.getFaultTo())) { exchange.setOneWay(false); exchange.setOutMessage(message); Destination destination = createDecoupledDestination( exchange, maps.getFaultTo()); exchange.setDestination(destination); } } } protected Destination createDecoupledDestination(Exchange exchange, EndpointReferenceType epr) { return ContextUtils.createDecoupledDestination(exchange, epr); } } Other Apache CXF examples (source code examples)Here is a short list of links related to this Apache CXF OneWayDecoupledFaultHandler.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.