Bank.jws Sample
This topic inludes the source code for the Bank.jws Sample.
Sample Location
This sample is located in the following directory in your WebLogic Workshop installation:
BEA_HOME/weblogic81/samples/workshop/SamplesApp/WebServices/creditReport/
Sample Source Code
01 package creditReport;
02
03 /**
04 * Bank.jws is a very simple service for use by the CreditReport.jws sample
05 * service. Bank simulates a "long-running" procedure by using a timer
06 * to delay its asynchronous response.
07 *
08 * Note that Bank.jws and IRS.jws are identical except for method names
09 * and the default duration of the timer timeout.
10 * @common:target-namespace namespace="http://workshop.bea.com/Bank"
11 */
12 public class Bank implements com.bea.jws.WebService
13 {
14 /**
15 * @jc:timer timeout="10 seconds"
16 * @common:control
17 */
18 private com.bea.control.TimerControl timer;
19
20 /*
21 * Store the customer ID number that is passed in so we can use it in the
22 * asynchronous response.
23 */
24 private String ssn;
25
26 public Callback callback;
27
28 public interface Callback
29 {
30 /**
31 * <p>onDeliverAnalysis is a callback delivered to the client when
32 * processing is complete.</p>
33 *
34 * @jws:conversation phase="finish"
35 */
36 public void onDeliverAnalysis(String result);
37 }
38
39 /**
40 * <p>Starts the asynchronous analysis operation. When analysis is complete
41 * the onDeliverAnalysis callback will be called. If cancelAnalysis is
42 * invoked before the results are delivered, results will never be delivered.</p>
43 *
44 * @common:operation
45 * @jws:conversation phase="start"
46 */
47 public void startCustomerAnalysis(String ssn)
48 {
49 /* store the customer ID for later use */
50 this.ssn = ssn;
51
52 /*
53 * start the timer, which simulates starting the long-running analysis procedure
54 */
55 timer.start();
56 }
57
58 /*
59 * Handler for onTimeout events from the "timer" Timer Control.
60 * onTimeout simulates the long-running procedure reaching completion,
61 * so a result is sent to the client via the onDeliverAnalysis callback.
62 */
63 private void timer_onTimeout(long timeout)
64 {
65 /*
66 * Use a completely arbitrary scheme to decide who's approved and
67 * who's not. Some people think real banks work this way.
68 */
69 if ((ssn.length() > 2) && (ssn.charAt(2) <= '5'))
70 {
71 callback.onDeliverAnalysis("Approved");
72 }
73 else
74 {
75 callback.onDeliverAnalysis("Denied");
76 }
77 }
78
79 /**
80 * <p>Cancels the analysis. The onDeliverAnalysis callback
81 * will not be called and the conversation is finished.</p>
82 *
83 * @common:operation
84 * @jws:conversation phase="finish"
85 */
86 public void cancelAnalysis()
87 {
88 timer.stop();
89 }
90
91
92 }
|