# BufferJCImpl.jcs Sample

This topic inludes the source code for the BufferJCImpl.jcs Sample.

## Sample Location

This sample is located in the following directory in your WebLogic Workshop installation:

BEA_HOME/weblogic81/samples/workshop/SamplesApp/WebServices/localControls/asynch/

## Sample Source Code

`01 package localControls.asynch; 02 03 /** 04 * This Java control illustrates how you can add message buffering to 05 * control operations to handle heavy loads. With a buffered method, 06 * requests to the method are queued and processed as the control has 07 * resources available. 08 * 09 * @jcs:jc-jar 10 * label="Buffered Java Control" 11 * palette-priority="3" 12 * group-name="SampleControls" 13 * version="1.0" 14 * description="A control whose methods are buffered for asynchronous use." 15 * @editor-info:code-gen control-interface="true" 16 */ 17 public class BufferJCImpl implements BufferJC, com.bea.control.ControlSource 18 { 19 /** 20 * @common:control 21 * @jc:timer timeout="5 seconds" 22 */ 23 private com.bea.control.TimerControl delayTimer; 24 25 public Callback callback; 26 27 /** 28 * The startRequest method starts a timer. When the timer's 29 * onTimeout callback executes, this control's onResultsReady 30 * callback executes, notifying the client that the results 31 * are ready. 32 * 33 * @common:operation 34 * @common:message-buffer enable="true" 35 */ 36 public void startRequest() 37 { 38 delayTimer.start(); 39 } 40 41 /** 42 * This onTimeout callback handler receive the delayTimer control's 43 * callback five seconds after the control's start method was called. 44 * This code invokes the BufferJC control's onResultsReady callback, 45 * which is in turn received by its client. 46 */ 47 public void delayTimer_onTimeout(long arg0) 48 { 49 delayTimer.stop(); 50 callback.onResultsReady("Results are ready!"); 51 } 52 }`