You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by va...@apache.org on 2008/11/04 22:05:00 UTC

svn commit: r711405 - in /geronimo/plugins/tuscany/trunk: geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/EmbeddedSCADomainGBean.java tuscany-jetty/pom.xml tuscany-jetty/src/main/plan/plan.xml

Author: vamsic007
Date: Tue Nov  4 13:05:00 2008
New Revision: 711405

URL: http://svn.apache.org/viewvc?rev=711405&view=rev
Log:
Bind the SCADomain object into JNDI.

Modified:
    geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/EmbeddedSCADomainGBean.java
    geronimo/plugins/tuscany/trunk/tuscany-jetty/pom.xml
    geronimo/plugins/tuscany/trunk/tuscany-jetty/src/main/plan/plan.xml

Modified: geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/EmbeddedSCADomainGBean.java
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/EmbeddedSCADomainGBean.java?rev=711405&r1=711404&r2=711405&view=diff
==============================================================================
--- geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/EmbeddedSCADomainGBean.java (original)
+++ geronimo/plugins/tuscany/trunk/geronimo-tuscany/src/main/java/org/apache/geronimo/tuscany/EmbeddedSCADomainGBean.java Tue Nov  4 13:05:00 2008
@@ -18,6 +18,11 @@
  */
 package org.apache.geronimo.tuscany;
 
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.Name;
+import javax.naming.NamingException;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.geronimo.gbean.AbstractName;
@@ -40,6 +45,7 @@
     private EmbeddedSCADomain scaDomain;
     private String domainUri;
     private ClassLoader runtimeClassLoader;
+    private String jndiName;
     
     public EmbeddedSCADomainGBean(AbstractName abstractName, ClassLoader runtimeClassLoader, String domainUri) {
         this.abstractName = abstractName;
@@ -50,13 +56,40 @@
     public EmbeddedSCADomainGBean() {
     }
     
+    public void setJndiName(String jndiName) {
+        this.jndiName = jndiName;
+    }
+
+    public String getJndiName() {
+        return jndiName;
+    }
+
     public void doStart() throws Exception {
         scaDomain = new EmbeddedSCADomain(runtimeClassLoader, domainUri);
         scaDomain.start();
         log.debug("EmbeddedSCADomainGBean started. Name=" + abstractName);
+        String jndiName = getJndiName();
+        if (jndiName != null && jndiName.length() > 0) {
+            // get the initial context
+            Context context = new InitialContext();
+            Name parsedName = context.getNameParser("").parse(jndiName);
+
+            // create intermediate contexts
+            for (int i = 1; i < parsedName.size(); i++) {
+                Name contextName = parsedName.getPrefix(i);
+                if (!bindingExists(context, contextName)) {
+                    context.createSubcontext(contextName);
+                }
+            }
+
+            // bind
+            context.bind(jndiName, scaDomain);
+            log.info("SCADomain bound to " + jndiName);
+        }
     }
 
     public void doStop() throws Exception {
+        unbindScaDomain();
         if(scaDomain != null) {
             scaDomain.stop();
         }
@@ -65,10 +98,32 @@
     }
     
     public void doFail() {
+        unbindScaDomain();
         scaDomain = null;
         log.warn("EmbeddedSCADomainGBean failed. Name=" + abstractName);        
     }
 
+    private void unbindScaDomain() {
+        String jndiName = getJndiName();
+        if (jndiName != null && jndiName.length() > 0) {
+            try {
+                Context context = new InitialContext();
+                context.unbind(jndiName);
+                log.info("SCADomain unbound from " + jndiName);
+            } catch (NamingException e) {
+                // we tried... this is a common error which occurs during shutdown due to ordering
+            }
+        }
+    }
+
+    private static boolean bindingExists(Context context, Name contextName) {
+        try {
+            return context.lookup(contextName) != null;
+        } catch (NamingException e) {
+        }
+        return false;
+    }
+
     public SCADomain getScaDomain() {
         return scaDomain;
     }
@@ -80,6 +135,7 @@
         infoFactory.addAttribute("abstractName", AbstractName.class, false);
         infoFactory.addAttribute("runtimeClassLoader", ClassLoader.class, false);
         infoFactory.addAttribute("domainUri", String.class, true, true);
+        infoFactory.addAttribute("jndiName", String.class, true);
         infoFactory.addInterface(SCADomainInterface.class);
         infoFactory.setConstructor(new String[]{"abstractName", "runtimeClassLoader", "domainUri"});
         GBEAN_INFO = infoFactory.getBeanInfo();

Modified: geronimo/plugins/tuscany/trunk/tuscany-jetty/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/tuscany-jetty/pom.xml?rev=711405&r1=711404&r2=711405&view=diff
==============================================================================
--- geronimo/plugins/tuscany/trunk/tuscany-jetty/pom.xml (original)
+++ geronimo/plugins/tuscany/trunk/tuscany-jetty/pom.xml Tue Nov  4 13:05:00 2008
@@ -428,6 +428,7 @@
                                 </gbean>
                                 <gbean name="GeronimoSCADomain">
                                     <attribute name="domainUri">http://localhost</attribute>
+                                    <attribute name="jndiName">ger:/SCADomain</attribute>
                                 </gbean>
                             </config-xml-content>
                         </plugin-artifact>

Modified: geronimo/plugins/tuscany/trunk/tuscany-jetty/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/plugins/tuscany/trunk/tuscany-jetty/src/main/plan/plan.xml?rev=711405&r1=711404&r2=711405&view=diff
==============================================================================
--- geronimo/plugins/tuscany/trunk/tuscany-jetty/src/main/plan/plan.xml (original)
+++ geronimo/plugins/tuscany/trunk/tuscany-jetty/src/main/plan/plan.xml Tue Nov  4 13:05:00 2008
@@ -53,5 +53,6 @@
     </gbean>
     <gbean name="GeronimoSCADomain" class="org.apache.geronimo.tuscany.EmbeddedSCADomainGBean">
         <attribute name="domainUri">http://localhost/</attribute>
+        <attribute name="jndiName">ger:/SCADomain</attribute>
     </gbean>
 </module>