IRS.jws Sample
This topic inludes the source code for the IRS.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 * IRS.jws is a very simple service for use by the CreditReport.jws sample
05 * service. IRS 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/IRS"
11 */
12
13 public class IRS implements com.bea.jws.WebService
14 {
15
16 /**
17 * <p>A Timer Control is used to simulate an operation that takes some time.</p>
18 *
19 * @jc:timer timeout="10 seconds"
20 * @common:control
21 */
22 private com.bea.control.TimerControl timer;
23
24 /*
25 * Store the customer ID number that is passed in so we can use it in the
26 * asynchronous response.
27 */
28 private String ssn;
29
30 public Callback callback;
31
32 public interface Callback
33 {
34 /*
35 * onDeliverTaxReport is a callback delivered to the client when
36 * processing is complete.
37 */
38 /**
39 * @jws:conversation phase="finish"
40 */
41 public void onDeliverTaxReport(String result);
42 }
43
44
45
46 /**
47 * <p>Starts the asynchronous tax report operation. When it is complete
48 * the onDeliverTaxReport callback will be called. If cancelReport is
49 * invoked before the results are delivered, results will never be delivered.</p>
50 *
51 * @common:operation
52 * @jws:conversation phase="start"
53 */
54 public void requestTaxReport(String ssn)
55 {
56 /* store the customer ID for later use */
57 this.ssn = ssn;
58
59 /*
60 * start the timer, which simulates starting the long-running procedure
61 */
62 timer.start();
63 }
64
65 /*
66 * Handler for onTimeout events from the "timer" Timer Control.
67 * onTimeout simulates the long-running procedure reaching completion,
68 * so a result is sent to the client via the onDeliverAnalysis callback.
69 */
70 private void timer_onTimeout(long timeout)
71 {
72 /*
73 * Use a completely arbitrary scheme to decide who's approved and
74 * who's not. Some people think real banks work this way.
75 */
76 if ((ssn.length() > 4) && (ssn.charAt(3) <= '5'))
77 {
78 callback.onDeliverTaxReport("Taxes Delinquent");
79 }
80 else
81 {
82 callback.onDeliverTaxReport("Taxes Current");
83 }
84 }
85
86 /**
87 * <p>Cancels the request. The onDeliverTaxReport callback
88 * will not be called and the conversation is finished.</p>
89 *
90 * @common:operation
91 * @jws:conversation phase="finish"
92 */
93 public void cancelReport()
94 {
95 timer.stop();
96 }
97
98
99 }
|