You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2005/08/11 07:54:10 UTC

svn commit: r231404 - in /geronimo/trunk: modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/ plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/ plugins/maven-geronimo-plugin/src/java/org/apache/geronimo/deploym...

Author: djencks
Date: Wed Aug 10 22:54:05 2005
New Revision: 231404

URL: http://svn.apache.org/viewcvs?rev=231404&view=rev
Log:
GERONIMO-484.  Missed a couple proxy cleanups.  Make jmx connection logout when connection is closed.

Modified:
    geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java
    geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java
    geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java
    geronimo/trunk/plugins/maven-geronimo-plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java

Modified: geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java?rev=231404&r1=231403&r2=231404&view=diff
==============================================================================
--- geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java (original)
+++ geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java Wed Aug 10 22:54:05 2005
@@ -16,7 +16,13 @@
  */
 package org.apache.geronimo.jmxremoting;
 
+import java.util.Map;
+import java.util.Collections;
+import java.util.HashMap;
 import javax.management.remote.JMXAuthenticator;
+import javax.management.remote.JMXConnectionNotification;
+import javax.management.NotificationListener;
+import javax.management.Notification;
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 import javax.security.auth.login.LoginException;
@@ -26,9 +32,11 @@
  *
  * @version $Rev$ $Date$
  */
-public class Authenticator implements JMXAuthenticator {
+public class Authenticator implements JMXAuthenticator, NotificationListener {
     private final String configName;
     private final ClassLoader cl;
+    private ThreadLocal threadContext = new ThreadLocal();
+    private Map contextMap = Collections.synchronizedMap(new HashMap());
 
     /**
      * Constructor indicating which JAAS Application Configuration Entry to use.
@@ -55,6 +63,7 @@
             thread.setContextClassLoader(cl);
             LoginContext context = new LoginContext(configName, credentials);
             context.login();
+            threadContext.set(context);
             return context.getSubject();
         } catch (LoginException e) {
             // do not propogate cause - we don't know what information is may contain
@@ -62,6 +71,28 @@
         } finally {
             credentials.clear();
             thread.setContextClassLoader(oldCL);
+        }
+    }
+
+    public void handleNotification(Notification notification, Object o) {
+        if (notification instanceof JMXConnectionNotification) {
+            JMXConnectionNotification cxNotification = (JMXConnectionNotification) notification;
+            String type = cxNotification.getType();
+            String connectionId = cxNotification.getConnectionId();
+            if (JMXConnectionNotification.OPENED.equals(type)) {
+                LoginContext context = (LoginContext) threadContext.get();
+                threadContext.set(null);
+                contextMap.put(connectionId, context);
+            } else {
+                LoginContext context = (LoginContext) contextMap.remove(connectionId);
+                if (context != null) {
+                    try {
+                        context.logout();
+                    } catch (LoginException e) {
+                        //nothing we can do here...
+                    }
+                }
+            }
         }
     }
 }

Modified: geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java?rev=231404&r1=231403&r2=231404&view=diff
==============================================================================
--- geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java (original)
+++ geronimo/trunk/modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java Wed Aug 10 22:54:05 2005
@@ -21,7 +21,10 @@
 import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXConnectorServerFactory;
 import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnectionNotification;
 import javax.management.MBeanServer;
+import javax.management.NotificationFilter;
+import javax.management.NotificationFilterSupport;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -42,6 +45,7 @@
     private final ClassLoader classLoader;
     private String url;
     private String applicationConfigName;
+    private Authenticator authenticator;
 
     private JMXConnectorServer server;
 
@@ -103,12 +107,18 @@
         JMXServiceURL serviceURL = new JMXServiceURL(url);
         Map env = new HashMap();
         if (applicationConfigName != null) {
-            env.put(JMXConnectorServer.AUTHENTICATOR, new Authenticator(applicationConfigName, classLoader));
+            authenticator = new Authenticator(applicationConfigName, classLoader);
+            env.put(JMXConnectorServer.AUTHENTICATOR, authenticator);
         } else {
             log.warn("Starting unauthenticating JMXConnector for " + serviceURL);
         }
         MBeanServer mbeanServer = new MBeanServerDelegate(kernel);
         server = JMXConnectorServerFactory.newJMXConnectorServer(serviceURL, env, mbeanServer);
+        NotificationFilterSupport filter = new NotificationFilterSupport();
+        filter.enableType(JMXConnectionNotification.OPENED);
+        filter.enableType(JMXConnectionNotification.CLOSED);
+        filter.enableType(JMXConnectionNotification.FAILED);
+        server.addNotificationListener(authenticator, filter, null);
         server.start();
         log.info("Started JMXConnector " + server.getAddress());
     }

Modified: geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java?rev=231404&r1=231403&r2=231404&view=diff
==============================================================================
--- geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java (original)
+++ geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java Wed Aug 10 22:54:05 2005
@@ -193,13 +193,17 @@
         Kernel kernel = createKernel();
 
         // start the Configuration we're going to use for this deployment
-        ConfigurationManager configMgr = ConfigurationUtil.getConfigurationManager(kernel);
-        if (!configMgr.isLoaded(deploymentConfig)) {
-            List configs = configMgr.loadRecursive(deploymentConfig);
-            for (int i = 0; i < configs.size(); i++) {
-                ObjectName configName = (ObjectName) configs.get(i);
-                kernel.startRecursiveGBean(configName);
+        ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
+        try {
+            if (!configurationManager.isLoaded(deploymentConfig)) {
+                List configs = configurationManager.loadRecursive(deploymentConfig);
+                for (int i = 0; i < configs.size(); i++) {
+                    ObjectName configName = (ObjectName) configs.get(i);
+                    kernel.startRecursiveGBean(configName);
+                }
             }
+        } finally {
+            ConfigurationUtil.releaseConfigurationManager(kernel, configurationManager);
         }
 
         ObjectName deployer = locateDeployer(kernel);

Modified: geronimo/trunk/plugins/maven-geronimo-plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/plugins/maven-geronimo-plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java?rev=231404&r1=231403&r2=231404&view=diff
==============================================================================
--- geronimo/trunk/plugins/maven-geronimo-plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java (original)
+++ geronimo/trunk/plugins/maven-geronimo-plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java Wed Aug 10 22:54:05 2005
@@ -121,14 +121,18 @@
 
         // load the rest of the configuration listed on the command line
         ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
-        for (Iterator i = configList.iterator(); i.hasNext();) {
-            URI configID = (URI) i.next();
-            List list = configurationManager.loadRecursive(configID);
-            for (Iterator iterator = list.iterator(); iterator.hasNext();) {
-                ObjectName name = (ObjectName) iterator.next();
-                kernel.startRecursiveGBean(name);
-                System.out.println("started gbean: " + name);
+        try {
+            for (Iterator i = configList.iterator(); i.hasNext();) {
+                URI configID = (URI) i.next();
+                List list = configurationManager.loadRecursive(configID);
+                for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+                    ObjectName name = (ObjectName) iterator.next();
+                    kernel.startRecursiveGBean(name);
+                    System.out.println("started gbean: " + name);
+                }
             }
+        } finally {
+            ConfigurationUtil.releaseConfigurationManager(kernel, configurationManager);
         }
 
 



Re: svn commit: r231404 - in /geronimo/trunk: modules/jmx-remoting/src/java/org/apache/geronimo/jmxremoting/ plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/ plugins/maven-geronimo-plugin/src/java/org/apache/geronimo/deploym...

Posted by si...@insession.com.
I think this change has introduced the following build problem, probably 
because the plugin is using a version of the kernel that does not include 
your changes.

John

java:compile:
    [echo] Compiling to 
D:\Projects\J2EE\geronimo\plugins\geronimo-packaging-plugin/target/classes
    [javac] Compiling 5 source files to 
D:\Projects\J2EE\geronimo\plugins\geronimo-packaging-plugin\target\classes
D:\Projects\J2EE\geronimo\plugins\geronimo-packaging-plugin\src\java\org\apache\geronimo\plugin\packaging\PackageBuilder.java:206: 
c
annot resolve symbol
symbol  : method releaseConfigurationManager 
(org.apache.geronimo.kernel.Kernel,org.apache.geronimo.kernel.config.ConfigurationManag
er)
location: class org.apache.geronimo.kernel.config.ConfigurationUtil
            ConfigurationUtil.releaseConfigurationManager(kernel, 
configurationManager);
                             ^
1 error


This e-mail message and any attachments may contain confidential, 
proprietary or non-public information.  This information is intended 
solely for the designated recipient(s).  If an addressing or transmission 
error has misdirected this e-mail, please notify the sender immediately 
and destroy this e-mail.  Any review, dissemination, use or reliance upon 
this information by unintended recipients is prohibited.  Any opinions 
expressed in this e-mail are those of the author personally.

djencks@apache.org wrote on 11/08/2005 03:54:10 PM:

> Author: djencks
> Date: Wed Aug 10 22:54:05 2005
> New Revision: 231404
> 
> URL: http://svn.apache.org/viewcvs?rev=231404&view=rev
> Log:
> GERONIMO-484.  Missed a couple proxy cleanups.  Make jmx connection 
> logout when connection is closed.
> 
> Modified:
>     geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java
>     geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java
>     geronimo/trunk/plugins/geronimo-packaging-
> plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java
>     geronimo/trunk/plugins/maven-geronimo-
> 
plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java
> 
> Modified: geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java
> URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.
> java?rev=231404&r1=231403&r2=231404&view=diff
> 
==============================================================================
> --- geronimo/trunk/modules/jmx-
> 
remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java(original)
> +++ geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/Authenticator.java
> Wed Aug 10 22:54:05 2005
> @@ -16,7 +16,13 @@
>   */
>  package org.apache.geronimo.jmxremoting;
> 
> +import java.util.Map;
> +import java.util.Collections;
> +import java.util.HashMap;
>  import javax.management.remote.JMXAuthenticator;
> +import javax.management.remote.JMXConnectionNotification;
> +import javax.management.NotificationListener;
> +import javax.management.Notification;
>  import javax.security.auth.Subject;
>  import javax.security.auth.login.LoginContext;
>  import javax.security.auth.login.LoginException;
> @@ -26,9 +32,11 @@
>   *
>   * @version $Rev$ $Date$
>   */
> -public class Authenticator implements JMXAuthenticator {
> +public class Authenticator implements JMXAuthenticator, 
> NotificationListener {
>      private final String configName;
>      private final ClassLoader cl;
> +    private ThreadLocal threadContext = new ThreadLocal();
> +    private Map contextMap = Collections.synchronizedMap(new 
HashMap());
> 
>      /**
>       * Constructor indicating which JAAS Application Configuration 
> Entry to use.
> @@ -55,6 +63,7 @@
>              thread.setContextClassLoader(cl);
>              LoginContext context = new LoginContext(configName, 
credentials);
>              context.login();
> +            threadContext.set(context);
>              return context.getSubject();
>          } catch (LoginException e) {
>              // do not propogate cause - we don't know what 
> information is may contain
> @@ -62,6 +71,28 @@
>          } finally {
>              credentials.clear();
>              thread.setContextClassLoader(oldCL);
> +        }
> +    }
> +
> +    public void handleNotification(Notification notification, Object o) 
{
> +        if (notification instanceof JMXConnectionNotification) {
> +            JMXConnectionNotification cxNotification = 
> (JMXConnectionNotification) notification;
> +            String type = cxNotification.getType();
> +            String connectionId = cxNotification.getConnectionId();
> +            if (JMXConnectionNotification.OPENED.equals(type)) {
> +                LoginContext context = (LoginContext) 
threadContext.get();
> +                threadContext.set(null);
> +                contextMap.put(connectionId, context);
> +            } else {
> +                LoginContext context = (LoginContext) contextMap.
> remove(connectionId);
> +                if (context != null) {
> +                    try {
> +                        context.logout();
> +                    } catch (LoginException e) {
> +                        //nothing we can do here...
> +                    }
> +                }
> +            }
>          }
>      }
>  }
> 
> Modified: geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java
> URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java?
> rev=231404&r1=231403&r2=231404&view=diff
> 
==============================================================================
> --- geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java 
(original)
> +++ geronimo/trunk/modules/jmx-
> remoting/src/java/org/apache/geronimo/jmxremoting/JMXConnector.java 
> Wed Aug 10 22:54:05 2005
> @@ -21,7 +21,10 @@
>  import javax.management.remote.JMXConnectorServer;
>  import javax.management.remote.JMXConnectorServerFactory;
>  import javax.management.remote.JMXServiceURL;
> +import javax.management.remote.JMXConnectionNotification;
>  import javax.management.MBeanServer;
> +import javax.management.NotificationFilter;
> +import javax.management.NotificationFilterSupport;
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> @@ -42,6 +45,7 @@
>      private final ClassLoader classLoader;
>      private String url;
>      private String applicationConfigName;
> +    private Authenticator authenticator;
> 
>      private JMXConnectorServer server;
> 
> @@ -103,12 +107,18 @@
>          JMXServiceURL serviceURL = new JMXServiceURL(url);
>          Map env = new HashMap();
>          if (applicationConfigName != null) {
> -            env.put(JMXConnectorServer.AUTHENTICATOR, new 
> Authenticator(applicationConfigName, classLoader));
> +            authenticator = new 
> Authenticator(applicationConfigName, classLoader);
> +            env.put(JMXConnectorServer.AUTHENTICATOR, authenticator);
>          } else {
>              log.warn("Starting unauthenticating JMXConnector for " 
> + serviceURL);
>          }
>          MBeanServer mbeanServer = new MBeanServerDelegate(kernel);
>          server = JMXConnectorServerFactory.
> newJMXConnectorServer(serviceURL, env, mbeanServer);
> +        NotificationFilterSupport filter = new 
NotificationFilterSupport();
> +        filter.enableType(JMXConnectionNotification.OPENED);
> +        filter.enableType(JMXConnectionNotification.CLOSED);
> +        filter.enableType(JMXConnectionNotification.FAILED);
> +        server.addNotificationListener(authenticator, filter, null);
>          server.start();
>          log.info("Started JMXConnector " + server.getAddress());
>      }
> 
> Modified: geronimo/trunk/plugins/geronimo-packaging-
> plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java
> URL: http://svn.apache.org/viewcvs/geronimo/trunk/plugins/geronimo-
> packaging-
> plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.
> java?rev=231404&r1=231403&r2=231404&view=diff
> 
==============================================================================
> --- geronimo/trunk/plugins/geronimo-packaging-
> plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.
> java (original)
> +++ geronimo/trunk/plugins/geronimo-packaging-
> plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.
> java Wed Aug 10 22:54:05 2005
> @@ -193,13 +193,17 @@
>          Kernel kernel = createKernel();
> 
>          // start the Configuration we're going to use for this 
deployment
> -        ConfigurationManager configMgr = ConfigurationUtil.
> getConfigurationManager(kernel);
> -        if (!configMgr.isLoaded(deploymentConfig)) {
> -            List configs = configMgr.loadRecursive(deploymentConfig);
> -            for (int i = 0; i < configs.size(); i++) {
> -                ObjectName configName = (ObjectName) configs.get(i);
> -                kernel.startRecursiveGBean(configName);
> +        ConfigurationManager configurationManager = 
> ConfigurationUtil.getConfigurationManager(kernel);
> +        try {
> +            if (!configurationManager.isLoaded(deploymentConfig)) {
> +                List configs = configurationManager.
> loadRecursive(deploymentConfig);
> +                for (int i = 0; i < configs.size(); i++) {
> +                    ObjectName configName = (ObjectName) 
configs.get(i);
> +                    kernel.startRecursiveGBean(configName);
> +                }
>              }
> +        } finally {
> +            ConfigurationUtil.releaseConfigurationManager(kernel, 
> configurationManager);
>          }
> 
>          ObjectName deployer = locateDeployer(kernel);
> 
> Modified: geronimo/trunk/plugins/maven-geronimo-
> 
plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java
> URL: http://svn.apache.org/viewcvs/geronimo/trunk/plugins/maven-
> geronimo-
> plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.
> java?rev=231404&r1=231403&r2=231404&view=diff
> 
==============================================================================
> --- geronimo/trunk/plugins/maven-geronimo-
> plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.
> java (original)
> +++ geronimo/trunk/plugins/maven-geronimo-
> plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.
> java Wed Aug 10 22:54:05 2005
> @@ -121,14 +121,18 @@
> 
>          // load the rest of the configuration listed on the command 
line
>          ConfigurationManager configurationManager = 
> ConfigurationUtil.getConfigurationManager(kernel);
> -        for (Iterator i = configList.iterator(); i.hasNext();) {
> -            URI configID = (URI) i.next();
> -            List list = configurationManager.loadRecursive(configID);
> -            for (Iterator iterator = list.iterator(); 
iterator.hasNext();) {
> -                ObjectName name = (ObjectName) iterator.next();
> -                kernel.startRecursiveGBean(name);
> -                System.out.println("started gbean: " + name);
> +        try {
> +            for (Iterator i = configList.iterator(); i.hasNext();) {
> +                URI configID = (URI) i.next();
> +                List list = 
configurationManager.loadRecursive(configID);
> +                for (Iterator iterator = list.iterator(); iterator.
> hasNext();) {
> +                    ObjectName name = (ObjectName) iterator.next();
> +                    kernel.startRecursiveGBean(name);
> +                    System.out.println("started gbean: " + name);
> +                }
>              }
> +        } finally {
> +            ConfigurationUtil.releaseConfigurationManager(kernel, 
> configurationManager);
>          }
> 
> 
> 
>