blob: 39952ed5f2cd23c1cf3ccfddfaaefdb862c2beb2 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
23
24/*
25 *
26 */
27
28import java.rmi.Remote;
29import java.rmi.registry.LocateRegistry;
30import java.rmi.registry.Registry;
31import java.rmi.server.UnicastRemoteObject;
32
33public class ShutdownImpl implements Shutdown {
34
35 private static Remote impl; // rooted here to prevent GC
36
37 private final ShutdownMonitor monitor;
38
39 private ShutdownImpl(ShutdownMonitor monitor) {
40 this.monitor = monitor;
41 }
42
43 public void shutdown() {
44 try {
45 System.err.println(
46 "(ShutdownImpl.shutdown) shutdown method invoked:");
47
48 UnicastRemoteObject.unexportObject(this, true);
49 System.err.println(
50 "(ShutdownImpl.shutdown) shutdown object unexported");
51
52 Thread.sleep(500);
53 System.err.println("(ShutDownImpl.shutdown) FEE");
54 Thread.sleep(500);
55 System.err.println("(ShutDownImpl.shutdown) FIE");
56 Thread.sleep(500);
57 System.err.println("(ShutDownImpl.shutdown) FOE");
58 Thread.sleep(500);
59 System.err.println("(ShutDownImpl.shutdown) FOO");
60
61 monitor.declareStillAlive();
62 System.err.println("(ShutDownImpl.shutdown) still alive!");
63 } catch (Exception e) {
64 throw new RuntimeException(
65 "unexpected exception occurred in shutdown method", e);
66 }
67 }
68
69 public static void main(String[] args) {
70 try {
71 Registry registry =
72 LocateRegistry.getRegistry("", TestLibrary.REGISTRY_PORT);
73 ShutdownMonitor monitor = (ShutdownMonitor)
74 registry.lookup(KeepAliveDuringCall.BINDING);
75 System.err.println("(ShutdownImpl) retrieved shutdown monitor");
76
77 impl = new ShutdownImpl(monitor);
78 Shutdown stub = (Shutdown) UnicastRemoteObject.exportObject(impl);
79 System.err.println("(ShutdownImpl) exported shutdown object");
80
81 monitor.submitShutdown(stub);
82 System.err.println("(ShutdownImpl) submitted shutdown object");
83
84 } catch (Exception e) {
85 System.err.println("(ShutdownImpl) TEST SUBPROCESS FAILURE:");
86 e.printStackTrace();
87 }
88 }
89}