[jboss-cvs] JBossAS SVN: r93451 - in projects/jboss-osgi/projects/bundles/jndi/trunk: src/main/java/org/jboss/osgi/jndi/internal and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Sep 14 03:54:23 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-09-14 03:54:23 -0400 (Mon, 14 Sep 2009)
New Revision: 93451

Modified:
   projects/jboss-osgi/projects/bundles/jndi/trunk/pom.xml
   projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/InitialContextFactory.java
   projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/JNDIServiceActivator.java
Log:
Start connector optionally

Modified: projects/jboss-osgi/projects/bundles/jndi/trunk/pom.xml
===================================================================
--- projects/jboss-osgi/projects/bundles/jndi/trunk/pom.xml	2009-09-14 07:51:11 UTC (rev 93450)
+++ projects/jboss-osgi/projects/bundles/jndi/trunk/pom.xml	2009-09-14 07:54:23 UTC (rev 93451)
@@ -88,6 +88,7 @@
               org.jboss.net.sockets, 
               org.jboss.osgi.common.log;version="1.0",
               org.jboss.osgi.spi.capability;version="1.0",
+              org.jboss.osgi.spi.util;version="1.0",
               org.jboss.util.naming, 
               org.jboss.util.threadpool, 
               org.osgi.framework, 

Modified: projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/InitialContextFactory.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/InitialContextFactory.java	2009-09-14 07:51:11 UTC (rev 93450)
+++ projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/InitialContextFactory.java	2009-09-14 07:54:23 UTC (rev 93451)
@@ -49,16 +49,33 @@
       this.jndiPort = jndiPort;
    }
 
-   @SuppressWarnings("unchecked")
    public Object getService(Bundle bundle, ServiceRegistration registration)
    {
+      try
+      {
+         return getInitialContext(bundle);
+      }
+      catch (NamingException ex)
+      {
+         throw new IllegalStateException("Cannot get the InitialContext", ex);
+      }
+   }
+
+   public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
+   {
+      // nothing to do
+   }
+
+   InitialContext getInitialContext(Bundle bundle) throws NamingException
+   {
       ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
       try
       {
-         // [TODO] use the calling bundle's class loader
+         //Thread.currentThread().setContextClassLoader(BundleClassLoader.createClassLoader(bundle));
+         
          Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
          
-         Hashtable env = new Hashtable();
+         Hashtable<String, String> env = new Hashtable<String, String>();
          env.put("java.naming.factory.initial", NamingContextFactory.class.getName());
          env.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
          env.put("java.naming.provider.url", "jnp://" + jndiHost + ":" + jndiPort);
@@ -66,18 +83,9 @@
          InitialContext iniCtx = new InitialContext(env);
          return iniCtx;
       }
-      catch (NamingException ex)
-      {
-         throw new IllegalStateException("Cannot get the InitialContext", ex);
-      }
       finally
       {
          Thread.currentThread().setContextClassLoader(ctxLoader);
       }
    }
-
-   public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
-   {
-      // nothing to do
-   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/JNDIServiceActivator.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/JNDIServiceActivator.java	2009-09-14 07:51:11 UTC (rev 93450)
+++ projects/jboss-osgi/projects/bundles/jndi/trunk/src/main/java/org/jboss/osgi/jndi/internal/JNDIServiceActivator.java	2009-09-14 07:54:23 UTC (rev 93451)
@@ -27,13 +27,14 @@
 import static org.jboss.osgi.jndi.Constants.REMOTE_JNDI_PORT;
 import static org.jboss.osgi.jndi.Constants.REMOTE_JNDI_RMI_PORT;
 
+import java.io.IOException;
+import java.net.Socket;
+
 import javax.naming.InitialContext;
 
-import org.jboss.osgi.common.log.LogServiceTracker;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.log.LogService;
 
 /**
  * A BundleActivator for the JNDI related services
@@ -45,12 +46,9 @@
 {
    private ServiceRegistration registration;
    private JNPServer jnpServer;
-   private LogService log;
 
    public void start(BundleContext context)
    {
-      log = new LogServiceTracker(context);
-      
       String jndiHost = context.getProperty(REMOTE_JNDI_HOST);
       if (jndiHost == null)
          jndiHost = "localhost";
@@ -63,12 +61,20 @@
       if (jndiPort == null)
          jndiPort = "1099";
 
-      jnpServer = new JNPServer(context, jndiHost, Integer.parseInt(jndiPort), Integer.parseInt(jndiRmiPort));
-      jnpServer.start();
+      try
+      {
+         // Assume that the JNPServer is already running if we can connect to it 
+         Socket socket = new Socket(jndiHost, Integer.parseInt(jndiPort));
+         socket.close();
+      }
+      catch (IOException ex)
+      {
+         jnpServer = new JNPServer(context, jndiHost, Integer.parseInt(jndiPort), Integer.parseInt(jndiRmiPort));
+         jnpServer.start();
+      }
       
       InitialContextFactory serviceFactory = new InitialContextFactory(jndiHost, jndiPort);
       registration = context.registerService(InitialContext.class.getName(), serviceFactory, null);
-      log.log(LogService.LOG_DEBUG, "InitialContext registered");
    }
 
    public void stop(BundleContext context)




More information about the jboss-cvs-commits mailing list