1 /*
2  * Copyright (c) 2003, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 // RMI Activation Functional Test
25 
26 import java.rmi.*;
27 import java.rmi.server.*;
28 import java.rmi.activation.*;
29 import java.util.*;
30 
31 // CountServerImpl
32 
33 public class CountServerImpl
34     extends Activatable
35     implements CountInterface {
36 
37     private static final String PROG_NAME       = "CountServerImpl";
38     private static final String SERVER_OBJECT   = "CountServer";
39     private static final String CLASS_NAME      = "activation.CountServerImpl";
40 
41     private static final String POLICY_FILE   = "policy_file";
42 
43     private static final String USER_DIR      =
44                         System.getProperty("user.dir").replace('\\', '/');
45 
46     private static final String CODE_LOCATION = "file:"+USER_DIR+"/";
47 
48     private static final MarshalledObject DATA = null;
49     private static ActivationDesc ACTIVATION_DESC = null;
50 
51     // Class variable
52     private static int classCount = 0;
53 
54     // Instance variable
55     private int instanceCount;
56     private TestInterface ref;
57 
CountServerImpl(ActivationID id, MarshalledObject data)58     public CountServerImpl(ActivationID id, MarshalledObject data)
59         throws RemoteException {
60         super(id, 0);
61         instanceCount = 0;
62         classCount++;
63         if (data != null) {
64             try {
65                 ref = (TestInterface)data.get();
66                 ref.ping(SERVER_OBJECT);
67             }
68             catch (Exception e) {
69                 System.err.println("Exception: " + e);
70             }
71         }
72     }
73 
ping()74     public void ping() throws RemoteException {}
75 
getCount()76     public int getCount() throws RemoteException {
77         return instanceCount;
78     }
79 
incrementCount()80     public int incrementCount() throws RemoteException {
81         return ++instanceCount;
82     }
83 
decrementCount()84     public int decrementCount() throws RemoteException {
85         return --instanceCount;
86     }
87 
getClassCount()88     public int getClassCount() throws RemoteException {
89         return classCount;
90     }
91 
getProperty(String s)92     public String getProperty(String s) throws RemoteException {
93         return System.getProperty(s);
94     }
95 
exit()96     public void exit() throws RemoteException {
97         System.exit(0);
98     }
99 
unexportObject(boolean force)100     public boolean unexportObject(boolean force) {
101         boolean succeeded = false;
102         try {
103             succeeded = Activatable.unexportObject(this, force);
104         }
105         catch (Exception e) {
106             System.err.println("Exception: " + e);
107             e.printStackTrace();
108         }
109         return succeeded;
110     }
111 
getActivationID()112     public ActivationID getActivationID() throws RemoteException {
113         return super.getID();
114     }
115 
inactive()116     public void inactive()
117         throws RemoteException, ActivationException, UnknownObjectException {
118 
119         //ShutDown s = new ShutDown(super.getID(),this,ShutDown.NORMAL_SHUTDOWN);
120     }
121 
unregister()122     public void unregister()
123         throws RemoteException, ActivationException, UnknownObjectException {
124         unregister(super.getID());
125     }
126 
register()127     public void register()
128         throws RemoteException, ActivationException, UnknownObjectException {
129         register(ACTIVATION_DESC);
130     }
131 
getCurrentGroupID()132     public ActivationGroupID getCurrentGroupID() throws RemoteException {
133         return ActivationGroup.currentGroupID();
134     }
135 
setup()136     private static void setup() {
137 
138         try {
139 
140           CountInterface rsi;   // Remote server interface
141 
142           System.setSecurityManager(new RMISecurityManager());
143 
144           rsi = (CountInterface)Activatable.register(ACTIVATION_DESC);
145           System.out.println("Got stub for "+SERVER_OBJECT+" implementation");
146 
147           Naming.rebind(SERVER_OBJECT, rsi);
148           System.out.println("Exported "+SERVER_OBJECT+" implementation");
149 
150         } catch (Exception e) {
151             System.err.println("Exception: " + e);
152             e.printStackTrace();
153         }
154     }
155 
main(String[] args)156     public static void main(String[] args) {
157 
158         try {
159             Properties props = new Properties();
160             props.setProperty("java.security.policy", POLICY_FILE);
161 
162             ActivationGroupDesc agd = new ActivationGroupDesc(props, null);
163 
164             ActivationGroupID agid = ActivationGroup.getSystem().registerGroup(agd);
165 
166             ACTIVATION_DESC = new ActivationDesc(agid,
167                         CLASS_NAME, CODE_LOCATION, DATA, false);
168         }
169         catch (Exception e) {
170             System.err.println("Exception: " + e);
171             e.printStackTrace();
172         }
173 
174         setup();
175     }
176 }
177