Yeah, I thought the same... Best, Christian
Sent from a mobile device Am 03.06.2013 19:56 schrieb "boday" <ben.o...@initekconsulting.com>: > on a side note, you should reuse the ProducerTemplate in your processors > across subsequent requests... > > minimize calls to "context.createProducerTemplate()" by using a > static/class > level variable to hold this reference, should help performance... > > > > WPk wrote > > public class ScanningServicesProcessor implements Processor { > > > > private static GlobalLogger log = > > GlobalLogger.getLogger(ScanningServicesProcessor.class.getName()); > > private LoadServicesHandler loadServicesHandler ; > > > > @Autowired > > public ScanningServicesProcessor (LoadServicesHandler > loadHandler) > > { > > this.loadServicesHandler = loadHandler; > > } > > /** > > * > > * This method overrides the org.apache.camel.Processor.process > > method. > > * Consumes the HTTP based requests coming from the Captiva > Service > > and > > * start processing in the method. > > * > > * @param loadExchange > > * - The Exchange object. Returns 200 - OK - When the > > processing > > * is completed with no errors. Returns 444 - No > Content > > - When > > * the Freight Management - Load Details returns 404. > > Returns 500 > > * - Internal Server Error - When any internal > exception > > is > > * encountered. Returns 400 - Bad Request if the input > > loadId is > > * bad (Null, Empty or non-integer value). > > */ > > @Override > > public void process(Exchange loadExchange) { > > > > final CamelContext context = loadExchange.getContext(); > > final ProducerTemplate template = > > context.createProducerTemplate(); > > int freightResponseCode = 0; > > Message loadMsgOut = null; > > final String loadId = (String) > > loadExchange.getIn().getHeader("loadId"); > > Map<String, Object> headersMap = new > > HashMap<String, Object>(); > > > > /** Start processing for a valid loadId **/ > > if (null != loadId && !"".equals(loadId) && > > loadId.matches("[0-9]+")) { > > FetchLoadStopResponse fetchLoadStopResponse = > > null; > > > > log.debug("Started invoking the Load Details > > Service in the Freight Management Module for the Load Id: " > > + loadId); > > Map<String, Object> loadHeader = new > > HashMap<String, Object>(); > > loadHeader.put(Exchange.HTTP_PATH, loadId); > > Exchange exchange = ScanningServicesUtils > > .invokeCamelHTTPService( > > template, > > > > ScanningServicesCommonConstants.FREIGHT_LOAD_SVCS_URL_PROPERTY, > > loadHeader, > null); > > loadMsgOut = (null != exchange) ? > > exchange.getOut() : null; > > InputSource loadMsgSource = null != loadMsgOut ? > > loadMsgOut > > .getBody(InputSource.class) : > > null; > > freightResponseCode = (null != loadMsgOut && null > > != loadMsgSource) ? (loadMsgOut > > > > .getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class)) : 0; > > log.debug("Load Details Service in the Freight > > Management Module for the Load Id: " > > + loadId > > + " returned a response code " > > + freightResponseCode); > > > > /** Process the Load Details if the response code > > is 200 **/ > > try { > > if (freightResponseCode == > > ScanningServicesCommonConstants.HTTP_STATUS_SUCCESS) { > > log.debug("Load Details Service > in > > the Freight Management Module for the Load Id: " > > + loadId + " > > returned" + loadMsgSource.toString()); > > fetchLoadStopResponse = > > loadServicesHandler > > > > .processPickUpStops(context, loadMsgSource); > > > > } > > /** > > * Set the Message Out Body from the > > Scanning Services Web > > * Service > > **/ > > if (null != fetchLoadStopResponse > > && > > fetchLoadStopResponse.getLoadStops().size() > 0) { > > headersMap > > > > .put(Exchange.HTTP_RESPONSE_CODE, > > > > ScanningServicesCommonConstants.HTTP_STATUS_SUCCESS); > > > > ScanningServicesUtils.setExchangeBodyAndHeaders( > > loadExchange, > > ScanningServicesUtils.marshal( > > > > fetchLoadStopResponse, > > > > FetchLoadStopResponse.class), headersMap); > > > > } else if (null == fetchLoadStopResponse > > && (freightResponseCode > == > > ScanningServicesCommonConstants.HTTP_STATUS_PAGE_NOT_FOUND > > || > > freightResponseCode == 0 || freightResponseCode == > > ScanningServicesCommonConstants.HTTP_STATUS_INTERNAL_SERVER_ERROR)) { > > String error = (null != exchange > > && null != exchange > > .getException()) > ? > > exchange.getException() > > .getMessage() : > > ""; > > log.error("Invoke of the service > > returned a response code." > > + > > freightResponseCode); > > log.error("Invoke of the service > > failed." + error); > > headersMap > > > > .put(Exchange.HTTP_RESPONSE_CODE, > > > > ScanningServicesCommonConstants.HTTP_STATUS_PAGE_NOT_FOUND); > > ScanningServicesUtils > > > > .setExchangeBodyAndHeaders( > > > > loadExchange, > > > > ScanningServicesCommonConstants.HTTP_RESPONSE_PAGE_NOT_FOUND, > > > > headersMap); > > } else { > > String error = (null != exchange > > && null != exchange > > .getException()) > ? > > exchange.getException() > > .getMessage() : > > ""; > > log.debug("Invoke of the service > > returned a response code." > > + > > freightResponseCode); > > if("" != error) { > > log.error("Invoke of the > > service returned" + error); > > } > > headersMap > > > > .put(Exchange.HTTP_RESPONSE_CODE, > > > > ScanningServicesCommonConstants.HTTP_STATUS_NO_RESPONSE); > > ScanningServicesUtils > > > > .setExchangeBodyAndHeaders( > > > > loadExchange, > > > > ScanningServicesCommonConstants.HTTP_RESPONSE_NO_RESPONSE, > > > > headersMap); > > > > } > > > > } catch (Exception e) { > > headersMap > > > > .put(Exchange.HTTP_RESPONSE_CODE, > > > > ScanningServicesCommonConstants.HTTP_STATUS_INTERNAL_SERVER_ERROR); > > ScanningServicesUtils > > > > .setExchangeBodyAndHeaders( > > > > loadExchange, > > > > ScanningServicesCommonConstants.HTTP_RESPONSE_INTERNAL_SERVER_ERROR, > > > > headersMap); > > log.error("Exception occured while > > fetching the details for the load" > > + e.getMessage()); > > } > > > > } else { > > log.error("The request to Scanning Services could > > not be fulfilled due to bad" > > + " request."); > > headersMap.put(Exchange.HTTP_RESPONSE_CODE, > > > > ScanningServicesCommonConstants.HTTP_STATUS_BAD_REQUEST); > > > > ScanningServicesUtils.setExchangeBodyAndHeaders(loadExchange, > > > > ScanningServicesCommonConstants.HTTP_RESPONSE_BAD_REQUEST, > > headersMap); > > > > } > > > > log.debug("Exit the ScanningServicesProcessor"); > > } > > } > > > > > > ----- > Ben O'Day > IT Consultant -http://consulting-notes.com > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Camel-Jetty-Performance-Issue-tp5733133p5733737.html > Sent from the Camel - Users mailing list archive at Nabble.com. >