public void setOutFaultObserver(MessageObserver arg0) { wrappedEndpoint.setOutFaultObserver(arg0); }
protected Server createServer() { CxfRsEndpoint endpoint = (CxfRsEndpoint) getEndpoint(); CxfRsInvoker cxfRsInvoker = new CxfRsInvoker(endpoint, this); JAXRSServerFactoryBean svrBean = endpoint.createJAXRSServerFactoryBean(); Bus bus = endpoint.getBus(); // We need to apply the bus setting from the CxfRsEndpoint which does not use the default bus if (bus != null) { svrBean.setBus(bus); } svrBean.setInvoker(cxfRsInvoker); // setup the UnitOfWorkCloserInterceptor for OneWayMessageProcessor svrBean.getInInterceptors().add(new UnitOfWorkCloserInterceptor(Phase.POST_INVOKE, true)); // close the UnitOfWork normally svrBean.getOutInterceptors().add(new UnitOfWorkCloserInterceptor()); Server server = svrBean.create(); final MessageObserver originalOutFaultObserver = server.getEndpoint().getOutFaultObserver(); //proxy OutFaultObserver so we can close org.apache.camel.spi.UnitOfWork in case of error server.getEndpoint().setOutFaultObserver(message -> { CxfUtils.closeCamelUnitOfWork(message); originalOutFaultObserver.onMessage(message); }); return server; }
protected Server createServer() throws Exception { ServerFactoryBean svrBean = cxfEndpoint.createServerFactoryBean(); svrBean.setInvoker(new CxfConsumerInvoker(cxfEndpoint)); Server server = svrBean.create(); // Apply the server configurer if it is possible if (cxfEndpoint.getCxfEndpointConfigurer() != null) { cxfEndpoint.getCxfEndpointConfigurer().configureServer(server); } server.getEndpoint().getEndpointInfo().setProperty("serviceClass", cxfEndpoint.getServiceClass()); if (ObjectHelper.isNotEmpty(cxfEndpoint.getPublishedEndpointUrl())) { server.getEndpoint().getEndpointInfo().setProperty("publishedEndpointUrl", cxfEndpoint.getPublishedEndpointUrl()); } final MessageObserver originalOutFaultObserver = server.getEndpoint().getOutFaultObserver(); server.getEndpoint().setOutFaultObserver(message -> { originalOutFaultObserver.onMessage(message); CxfUtils.closeCamelUnitOfWork(message); }); // setup the UnitOfWorkCloserInterceptor for OneWayMessageProcessor server.getEndpoint().getInInterceptors().add(new UnitOfWorkCloserInterceptor(Phase.POST_INVOKE, true)); // close the UnitOfWork normally server.getEndpoint().getOutInterceptors().add(new UnitOfWorkCloserInterceptor()); return server; }