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&lt;String, Object&gt; headersMap = new
> > HashMap&lt;String, Object&gt;();
> >
> >                 /** 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&lt;String, Object&gt; loadHeader = new
> > HashMap&lt;String, Object&gt;();
> >                         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.
>

Reply via email to