KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > javax > management > remote > rmi > RMIJRMPConnectorTest


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package test.javax.management.remote.rmi;
10
11 import java.io.IOException JavaDoc;
12 import java.io.Serializable JavaDoc;
13 import java.net.MalformedURLException JavaDoc;
14 import java.net.ServerSocket JavaDoc;
15 import java.net.Socket JavaDoc;
16 import java.rmi.server.RMIClientSocketFactory JavaDoc;
17 import java.rmi.server.RMIServerSocketFactory JavaDoc;
18 import java.util.HashMap JavaDoc;
19 import java.util.Map JavaDoc;
20 import javax.management.remote.JMXConnector JavaDoc;
21 import javax.management.remote.JMXConnectorFactory JavaDoc;
22 import javax.management.remote.JMXConnectorServer JavaDoc;
23 import javax.management.remote.JMXConnectorServerFactory JavaDoc;
24 import javax.management.remote.JMXServiceURL JavaDoc;
25 import javax.management.remote.rmi.RMIConnectorServer JavaDoc;
26 import javax.naming.Context JavaDoc;
27
28 import mx4j.tools.naming.NamingService;
29 import test.MutableBoolean;
30
31 /**
32  * @version $Revision: 1.9 $
33  */

34 public class RMIJRMPConnectorTest extends RMIConnectorTestCase
35 {
36    private NamingService naming;
37
38    public RMIJRMPConnectorTest(String JavaDoc s)
39    {
40       super(s);
41    }
42
43    public JMXServiceURL JavaDoc createJMXConnectorServerAddress() throws MalformedURLException JavaDoc
44    {
45       return new JMXServiceURL JavaDoc("rmi", "localhost", 0);
46    }
47
48    public void startNaming() throws Exception JavaDoc
49    {
50       naming = new NamingService(getNamingPort());
51       naming.start();
52    }
53
54    public void stopNaming() throws Exception JavaDoc
55    {
56       naming.stop();
57       naming = null;
58       Thread.sleep(5000);
59    }
60
61    public int getNamingPort()
62    {
63       return 1099;
64    }
65
66    public Map JavaDoc getEnvironment()
67    {
68       HashMap JavaDoc env = new HashMap JavaDoc();
69       env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");
70       env.put(Context.PROVIDER_URL, "rmi://localhost:" + getNamingPort());
71       return env;
72    }
73
74    public void testRMIConnectorWithCustomSocketFactories() throws Exception JavaDoc
75    {
76       RMIClientSocketFactory JavaDoc client = new RMICSF();
77
78       final MutableBoolean serverCheck = new MutableBoolean(false);
79       RMIServerSocketFactory JavaDoc server = new RMISSF(serverCheck);
80
81       JMXServiceURL JavaDoc url = createJMXConnectorServerAddress();
82       Map JavaDoc env = getEnvironment();
83       env.put(RMIConnectorServer.RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE, client);
84       env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, server);
85
86       JMXConnectorServer JavaDoc cntorServer = null;
87       JMXConnector JavaDoc cntor = null;
88
89       try
90       {
91          cntorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, env, newMBeanServer());
92          cntorServer.start();
93
94          cntor = JMXConnectorFactory.connect(cntorServer.getAddress(), getEnvironment());
95          assertTrue(serverCheck.get());
96       }
97       finally
98       {
99          if (cntor != null) cntor.close();
100          if (cntorServer != null) cntorServer.stop();
101       }
102    }
103
104    public static class RMICSF implements RMIClientSocketFactory JavaDoc, Serializable JavaDoc
105    {
106       public Socket JavaDoc createSocket(String JavaDoc host, int port) throws IOException JavaDoc
107       {
108          return new Socket JavaDoc(host, port);
109       }
110    }
111
112    public static class RMISSF implements RMIServerSocketFactory JavaDoc
113    {
114       private MutableBoolean check;
115
116       public RMISSF(MutableBoolean check)
117       {
118          this.check = check;
119       }
120
121       public ServerSocket JavaDoc createServerSocket(int port) throws IOException JavaDoc
122       {
123          check.set(true);
124          return new ServerSocket JavaDoc(port);
125       }
126    }
127 }
128
Popular Tags