[jboss-svn-commits] JBL Code SVN: r25350 - labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 19 13:10:48 EST 2009
Author: tfennelly
Date: 2009-02-19 13:10:48 -0500 (Thu, 19 Feb 2009)
New Revision: 25350
Modified:
labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java
labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpServerDelegate.java
Log:
https://jira.jboss.org/jira/browse/JBESB-2377
Modified: labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java 2009-02-19 15:08:07 UTC (rev 25349)
+++ labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java 2009-02-19 18:10:48 UTC (rev 25350)
@@ -76,7 +76,7 @@
* <p>This class uses the {@link org.jboss.soa.esb.listeners.gateway.HttpMessageComposer}
* by default.
* @see org.jboss.soa.esb.listeners.gateway.HttpMessageComposer
- * @see Torg.jboss.soa.esb.listeners.gateway.HttpDispatchServlet
+ * @see org.jboss.soa.esb.listeners.gateway.HttpDispatchServlet
* @author <a href="mailto:ema at redhat.com">Jim Ma</a>
*/
public class HttpGatewayListener extends AbstractManagedLifecycle {
Modified: labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpServerDelegate.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpServerDelegate.java 2009-02-19 15:08:07 UTC (rev 25349)
+++ labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpServerDelegate.java 2009-02-19 18:10:48 UTC (rev 25350)
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import javax.management.Attribute;
import javax.management.InstanceNotFoundException;
@@ -51,10 +52,10 @@
public static final String defaultVHost = "localhost";
/**Record the count that the same host name is referenced by other Tomcat listener instance */
- public static Map<String, Integer> hostReference= new java.util.HashMap<String, Integer>();
+ public static Map<String, ReferenceCounter> hostReference= new ConcurrentHashMap<String, ReferenceCounter>();
/**Record the count that the same connector/port is referenced by other Tomcat listener instance */
- public static Map<String, Integer> connectorReference= new java.util.HashMap<String, Integer>();
+ public static Map<String, ReferenceCounter> connectorReference= new ConcurrentHashMap<String, ReferenceCounter>();
/**JMX domain name for http listener*/
@@ -71,15 +72,15 @@
}
public static HttpServerDelegate getInstance() {
- if (instance != null) {
- return instance;
- }
-
- synchronized(HttpServerDelegate.class) {
- mbeanServer = MBeanServerLocator.locateJBoss();
- instance = new HttpServerDelegate();
- instance.createEngine();
- }
+ if (instance == null) {
+ synchronized(HttpServerDelegate.class) {
+ if (instance == null) {
+ mbeanServer = MBeanServerLocator.locateJBoss();
+ instance = new HttpServerDelegate();
+ instance.createEngine();
+ }
+ }
+ }
return instance;
}
@@ -139,7 +140,7 @@
* @throws Exception If there is error occured
*/
@SuppressWarnings("unchecked")
- public void createHost(String host) throws Exception {
+ public synchronized void createHost(String host) throws Exception {
ObjectName hostName = new ObjectName(DOMAIN_NAME + ":host=" + host + ",type=Host");
ObjectName stardardEngineName = new ObjectName(DOMAIN_NAME + ":type=Engine");
@@ -149,12 +150,10 @@
StandardHost newHost = new StandardHost();
newHost.setName(host);
mbeanServer.invoke(stardardEngineName, "addChild", new Object[] { newHost }, new String[] { Container.class .getName() });
- synchronized (hostReference) {
- hostReference.put(host, 1);
- }
+ hostReference.put(host, new ReferenceCounter());
} else {
- updateReference(hostReference, host, 1);
+ updateReferenceCount(hostReference, host, 1);
}
}
@@ -167,7 +166,7 @@
* @throws Exception when error is occured
*/
@SuppressWarnings("unchecked")
- public void createConnector(String address, String port, List<KeyValuePair> properties) throws Exception {
+ public synchronized void createConnector(String address, String port, List<KeyValuePair> properties) throws Exception {
ObjectName standardServiceName = new ObjectName(DOMAIN_NAME + ":type=Service");
Set connectors = queryObjects(DOMAIN_NAME + ":address=" + URLEncoder.encode("/" + address).toString() +",port="
+ port + ",type=Connector,*");
@@ -185,14 +184,12 @@
connector.setAttribute("address", address);
mbeanServer.invoke(standardServiceName, "addConnector",
- new Object[] { connector }, new String[] { Connector.class
- .getName() });
- synchronized (connectorReference) {
- connectorReference.put(port, 1);
- }
+ new Object[] { connector }, new String[] { Connector.class.getName() });
+
+ connectorReference.put(port, new ReferenceCounter());
} else {
- updateReference(connectorReference, port, 1);
+ updateReferenceCount(connectorReference, port, 1);
}
}
@@ -239,8 +236,8 @@
new String[] {});
// Decrese the host and connector reference
- updateReference(hostReference, host, -1);
- updateReference(connectorReference, port, -1);
+ updateReferenceCount(hostReference, host, -1);
+ updateReferenceCount(connectorReference, port, -1);
Object obj = hostReference.get(host);
@@ -288,17 +285,21 @@
* @param increment Update value
*/
@SuppressWarnings("unchecked")
- public void updateReference(Map refrenceMap, String key , int increment) {
- synchronized (refrenceMap) {
- if (refrenceMap.get(key) != null) {
- int count = (Integer) refrenceMap.get(key);
- if (count == 0) {
- return;
- }
- refrenceMap.put(key, count + increment);
- }
- }
+ public void updateReferenceCount(Map<String, ReferenceCounter> refrenceMap, String key , int increment) {
+ ReferenceCounter counter = refrenceMap.get(key);
+
+ if (counter != null) {
+ synchronized (counter) {
+ if (counter.count == 0) {
+ return;
+ }
+ counter.count += increment;
+ }
+ }
}
+
+ private class ReferenceCounter {
+ private volatile int count = 1;
+ }
}
-
More information about the jboss-svn-commits
mailing list