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 /* @test
25 * @bug 4155894
26 *
27 * @summary remote references can't be downloaded
28 * @author Ann Wollrath
29 *
30 * test currently needs RMISecurityManager because of
31 * 4180392
32 *
33 * @library ../../testlibrary
34 * @build UseCustomRef
35 * @build Ping
36 * @build UseCustomRef_Stub
37 * @build UseCustomRef_Skel
38 * @run main/othervm/policy=security.policy/secure=java.rmi.RMISecurityManager/timeout=120 UseCustomRef
39 *
40 * This test was failing to run because the synthetic access
41 * control context used by the application class loader to find and define
42 * CustomServerRef does not have accessClassInPackage.sun.rmi.server runtime
43 * permission necessary to load its superclass sun.rmi.server.UnicastServerRef,
44 * even though this test's code is granted that permission in its policy file.
45 * That bug number is 4256530
46 */
47
48 import java.io.*;
49 import java.rmi.*;
50 import java.rmi.server.*;
51 import java.rmi.registry.*;
52 import sun.rmi.transport.LiveRef;
53
54 public class UseCustomRef
55 extends RemoteServer
56 implements Ping
57 {
67
68 public RemoteRef getRef() { return ref; }
69
70 public void ping() {}
71
72 public void receiveAndPing(Ping p) throws RemoteException {
73 p.ping();
74 }
75
76 public static void main(String[] args) {
77 Ping obj = null;
78 Registry registry = null;
79
80 try {
81 /*
82 * create registry
83 */
84 TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager");
85
86 System.err.println("creating Registry...");
87 registry = LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT);
88
89 /*
90 * create object with custom ref and bind in registry
91 */
92 System.err.println("creating UseCustomRef...");
93 UseCustomRef cr = new UseCustomRef();
94 RemoteRef ref = cr.getRef();
95 if (!(ref instanceof CustomServerRef)) {
96 TestLibrary.bomb("test failed: reference not " +
97 "instanceof CustomServerRef");
98 }
99
100 String name = "//:" + TestLibrary.REGISTRY_PORT + "/UseCustomRef";
101 // String name = "UseCustomRef";
102 System.err.println("binding object in registry...");
103 Naming.rebind(name, cr);
104
105 /*
106 * look up object and invoke its ping method
107 */
108 System.err.println("ping object...");
109 obj = (Ping) Naming.lookup(name);
110 obj.ping();
111
112 /*
113 * pass object with custom ref in remote call
114 */
115 System.err.println("pass object in remote call...");
116 obj.receiveAndPing(cr);
117
118 /*
119 * write remote object with custom ref to output stream
120 */
|
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 /* @test
25 * @bug 4155894
26 *
27 * @summary remote references can't be downloaded
28 * @author Ann Wollrath
29 *
30 * test currently needs RMISecurityManager because of
31 * 4180392
32 *
33 * @library ../../testlibrary
34 * @build UseCustomRef
35 * @build Ping
36 * @build UseCustomRef_Stub
37 * @build UseCustomRef_Skel
38 * @build TestLibrary
39 * @run main/othervm/policy=security.policy/secure=java.rmi.RMISecurityManager/timeout=120 UseCustomRef
40 *
41 * This test was failing to run because the synthetic access
42 * control context used by the application class loader to find and define
43 * CustomServerRef does not have accessClassInPackage.sun.rmi.server runtime
44 * permission necessary to load its superclass sun.rmi.server.UnicastServerRef,
45 * even though this test's code is granted that permission in its policy file.
46 * That bug number is 4256530
47 */
48
49 import java.io.*;
50 import java.rmi.*;
51 import java.rmi.server.*;
52 import java.rmi.registry.*;
53 import sun.rmi.transport.LiveRef;
54
55 public class UseCustomRef
56 extends RemoteServer
57 implements Ping
58 {
68
69 public RemoteRef getRef() { return ref; }
70
71 public void ping() {}
72
73 public void receiveAndPing(Ping p) throws RemoteException {
74 p.ping();
75 }
76
77 public static void main(String[] args) {
78 Ping obj = null;
79 Registry registry = null;
80
81 try {
82 /*
83 * create registry
84 */
85 TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager");
86
87 System.err.println("creating Registry...");
88
89 registry = TestLibrary.createRegistryOnUnusedPort();
90 int port = TestLibrary.getRegistryPort(registry);
91 /*
92 * create object with custom ref and bind in registry
93 */
94 System.err.println("creating UseCustomRef...");
95 UseCustomRef cr = new UseCustomRef();
96 RemoteRef ref = cr.getRef();
97 if (!(ref instanceof CustomServerRef)) {
98 TestLibrary.bomb("test failed: reference not " +
99 "instanceof CustomServerRef");
100 }
101
102 String name = "//:" + port + "/UseCustomRef";
103 // String name = "UseCustomRef";
104 System.err.println("binding object in registry...");
105 Naming.rebind(name, cr);
106
107 /*
108 * look up object and invoke its ping method
109 */
110 System.err.println("ping object...");
111 obj = (Ping) Naming.lookup(name);
112 obj.ping();
113
114 /*
115 * pass object with custom ref in remote call
116 */
117 System.err.println("pass object in remote call...");
118 obj.receiveAndPing(cr);
119
120 /*
121 * write remote object with custom ref to output stream
122 */
|