# SlowService.jws Sample

This topic inludes the source code for the SlowService.jws Sample.

## Sample Location

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

BEA_HOME/weblogic81/samples/workshop/SamplesApp/WebServices/controlFactory/

## Sample Source Code

`01 package controlFactory; 02 03 /** 04 * <p>A dummy service that represents a back end service 05 * that takes an psuedo-random amount of time to do its 06 * work.</p> 07 * @common:target-namespace namespace="http://workshop.bea.com/SlowService" 08 */ 09 10 public class SlowService implements com.bea.jws.WebService 11 { 12 /** 13 * @jc:timer timeout="5 seconds" 14 * @common:control 15 */ 16 private com.bea.control.TimerControl delayTimer; 17 18 String m_sName; 19 20 public Callback callback; 21 22 public interface Callback 23 { 24 /** 25 * Callback that is sent to the client when this 26 * service is done doing its work. 27 * 28 * @jws:conversation phase="finish" 29 */ 30 public void infoReady(String name); 31 } 32 33 34 /** 35 * <p>The request from the client to do some work. After some 36 * amount of time, the infoReady callback will be sent to the 37 * client.</p> 38 * 39 * @common:operation 40 * @jws:conversation phase="start" 41 */ 42 public long requestInfo(String name) 43 { 44 m_sName = name; 45 46 // compute a random delay between 5 and 15 seconds 47 long delay = 5 + (long)(Math.random() * 10.0); 48 49 // set the timeout on the timer control. 50 // this overrides the value set with the @jc:timer tag. 51 delayTimer.setTimeout(delay); 52 53 // start the timer 54 delayTimer.start(); 55 56 // return the time it will take for this service to do its work 57 return delay; 58 } 59 60 /** 61 * Callback handler for the timer control's onTimeout 62 * callback. This indicates that the work this service 63 * does is complete and the client should be notified 64 * via the infoReady callback. 65 */ 66 private void delayTimer_onTimeout(long time) 67 { 68 // send the infoReady callback to the client 69 callback.infoReady(m_sName); 70 } 71 72 }`