1 /**********************************************************************
2 * EJServerRegistry.java
3 * created on 18.05.2007 by netseeker
4 * $Id: EJServerRegistry.java,v 1.2 2007/05/28 12:42:38 netseeker Exp $
5 * $Log: EJServerRegistry.java,v $
6 * Revision 1.2 2007/05/28 12:42:38 netseeker
7 * *** empty log message ***
8 *
9 * Revision 1.1 2007/05/27 22:13:09 netseeker
10 * *** empty log message ***
11 *
12 * Revision 1.1 2007/05/22 22:50:46 netseeker
13 * added In-JVM processing mode, fixed a minor bug within the serverside detection of ADAPTER_STRATEGY_DIRECT.
14 *
15 *
16 * ====================================================================
17 *
18 * Copyright 2005-2006 netseeker aka Michael Manske
19 *
20 * Licensed under the Apache License, Version 2.0 (the "License");
21 * you may not use this file except in compliance with the License.
22 * You may obtain a copy of the License at
23 *
24 * http://www.apache.org/licenses/LICENSE-2.0
25 *
26 * Unless required by applicable law or agreed to in writing, software
27 * distributed under the License is distributed on an "AS IS" BASIS,
28 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29 * See the License for the specific language governing permissions and
30 * limitations under the License.
31 * ====================================================================
32 *
33 * This file is part of the EJOE framework.
34 * For more information on the author, please see
35 * <http://www.manskes.de/>.
36 *
37 *********************************************************************/
38 package de.netseeker.ejoe.core;
39
40 import java.util.Collections;
41 import java.util.HashMap;
42 import java.util.Iterator;
43 import java.util.Map;
44
45 import de.netseeker.ejoe.EJServer;
46 import de.netseeker.ejoe.IServerInfo;
47
48 /***
49 * A simple registry wherein all known local EJServers are registered, so that clients lookup an EJServer within the
50 * same JVM.
51 *
52 * @author netseeker
53 * @since 0.3.9.3
54 */
55 public class EJServerRegistry
56 {
57 private static EJServerRegistry instance = new EJServerRegistry();
58
59 private Map registry = Collections.synchronizedMap( new HashMap() );
60
61 private EJServerRegistry()
62 {
63 }
64
65 /***
66 * @return
67 */
68 public static EJServerRegistry getInstance()
69 {
70 return instance;
71 }
72
73
74
75
76
77
78 public EJServer lookup( String connectionInfo )
79 {
80 return (EJServer) registry.get( connectionInfo );
81 }
82
83
84
85
86
87
88 public synchronized EJServer lookup()
89 {
90 EJServer server = null;
91
92 if ( registry.size() > 0 )
93 {
94 Iterator it = registry.values().iterator();
95
96 while ( it.hasNext() )
97 {
98 server = (EJServer) registry.values().iterator().next();
99 if ( server.isRunning() )
100 {
101 return server;
102 }
103 else
104 {
105 deRegister( server );
106 }
107 }
108 }
109
110 return server;
111 }
112
113
114
115
116
117
118 public void register( EJServer ejserver )
119 {
120 IServerInfo serverInfo = ejserver.getServerInfo();
121 if ( ejserver.isRunning() )
122 {
123 registry.put( serverInfo.getInterface() + ":" + serverInfo.getPort(), ejserver );
124 }
125 }
126
127
128
129
130
131
132 public void deRegister( EJServer ejserver )
133 {
134 IServerInfo serverInfo = ejserver.getServerInfo();
135 registry.remove( serverInfo.getInterface() + ":" + serverInfo.getPort() );
136 }
137
138 }