[jboss-cvs] JBossAS SVN: r83606 - in projects/jboss-felix/trunk/modules/service: http-beans/src/main/java/org/jboss/osgi/service/http/beans and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 29 06:56:32 EST 2009


Author: thomas.diesler at jboss.com
Date: 2009-01-29 06:56:32 -0500 (Thu, 29 Jan 2009)
New Revision: 83606

Modified:
   projects/jboss-felix/trunk/modules/service/http-beans/src/main/java/org/jboss/osgi/service/http/beans/WebAppGeneratorService.java
   projects/jboss-felix/trunk/modules/service/http/src/main/java/org/jboss/osgi/service/http/HttpServiceImpl.java
Log:
AS501 startup ok, http context not deployed

Modified: projects/jboss-felix/trunk/modules/service/http/src/main/java/org/jboss/osgi/service/http/HttpServiceImpl.java
===================================================================
--- projects/jboss-felix/trunk/modules/service/http/src/main/java/org/jboss/osgi/service/http/HttpServiceImpl.java	2009-01-29 11:23:44 UTC (rev 83605)
+++ projects/jboss-felix/trunk/modules/service/http/src/main/java/org/jboss/osgi/service/http/HttpServiceImpl.java	2009-01-29 11:56:32 UTC (rev 83606)
@@ -44,10 +44,14 @@
 public class HttpServiceImpl implements HttpService
 {
   private BundleContext bundleContext;
+  private WebAppGeneratorService webappService;
 
   public HttpServiceImpl(BundleContext context)
   {
     this.bundleContext = context;
+    
+    ServiceReference sref = bundleContext.getServiceReference(WebAppGeneratorService.class.getName());
+    webappService = (WebAppGeneratorService)bundleContext.getService(sref);
   }
 
   public HttpContext createDefaultHttpContext()
@@ -57,7 +61,7 @@
 
   public void registerResources(String alias, String name, HttpContext context) throws NamespaceException
   {
-    throw new NotImplementedException();
+    System.out.println("registerResources: " + alias + "," + name);
   }
 
   @SuppressWarnings("unchecked")
@@ -66,13 +70,11 @@
     if (httpContext == null)
       httpContext = createDefaultHttpContext();
     
-    ServiceReference sref = bundleContext.getServiceReference(WebAppGeneratorService.class.getName());
-    WebAppGeneratorService webappService = (WebAppGeneratorService)bundleContext.getService(sref);
     webappService.registerServlet(alias, servlet, initParams);
   }
 
   public void unregister(String alias)
   {
-    throw new NotImplementedException();
+    webappService.unregister(alias);
   }
 }
\ No newline at end of file

Modified: projects/jboss-felix/trunk/modules/service/http-beans/src/main/java/org/jboss/osgi/service/http/beans/WebAppGeneratorService.java
===================================================================
--- projects/jboss-felix/trunk/modules/service/http-beans/src/main/java/org/jboss/osgi/service/http/beans/WebAppGeneratorService.java	2009-01-29 11:23:44 UTC (rev 83605)
+++ projects/jboss-felix/trunk/modules/service/http-beans/src/main/java/org/jboss/osgi/service/http/beans/WebAppGeneratorService.java	2009-01-29 11:56:32 UTC (rev 83606)
@@ -24,7 +24,9 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Dictionary;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
@@ -58,6 +60,7 @@
   private MBeanServer mbeanServer;
 
   private DeploymentFactory factory = new DeploymentFactory();
+  private Map<String, AbstractDeployment> deployments = new HashMap<String, AbstractDeployment>();
 
   public void setBundleContext(BundleContext bundleContext)
   {
@@ -76,12 +79,18 @@
 
   public void registerServlet(String alias, Servlet servlet, Dictionary<String, String> initParams)
   {
+    
+    AbstractDeployment deployment = deployments.get(alias);
+    if (deployment != null)
+      throw new IllegalStateException("HttpService alias already deployed: " + alias);
+    
+    deployment = new AbstractDeployment(alias);
+    factory.addContext(deployment, "");
+    
     JBossWebMetaData jbwmd = generatWebDeployment(alias, servlet);
-
+    
     try
     {
-      AbstractDeployment deployment = new AbstractDeployment(alias);
-      factory.addContext(deployment, "");
 
       ClassLoader classLoader = servlet.getClass().getClassLoader();
       RealClassLoader realClassLoader = getRealClassLoader(classLoader);
@@ -90,28 +99,58 @@
         Bundle bundle = bundleContext.getBundle();
         ObjectName objectName = getObjectName(bundle, alias);
         BundleClassLoader bundleCL = new BundleClassLoader(bundle, classLoader);
-        
+
         mbeanServer.registerMBean(bundleCL, objectName);
         bundleCL.setObjectName(objectName);
-        
+
+        realClassLoader = bundleCL;
         classLoader = bundleCL;
       }
-
+      
       MutableAttachments mutableAttachments = (MutableAttachments)deployment.getPredeterminedManagedObjects();
       mutableAttachments.addAttachment(ClassLoaderFactory.class, new ContextClassLoaderFactory(classLoader));
+      mutableAttachments.addAttachment(RealClassLoader.class, realClassLoader);
       mutableAttachments.addAttachment(JBossWebMetaData.class, jbwmd);
       mainDeployer.deploy(deployment);
+      
+      deployments.put(alias, deployment);
     }
     catch (Exception ex)
     {
-      throw new IllegalStateException("Cannot create webapp: " + alias, ex);
+      throw new IllegalStateException("Cannot deploy webapp: " + alias, ex);
     }
   }
 
+  public void unregister(String alias)
+  {
+    AbstractDeployment deployment = deployments.get(alias);
+    if (deployment != null)
+    {
+      try
+      {
+        mainDeployer.undeploy(deployment);
+        
+        MutableAttachments mutableAttachments = (MutableAttachments)deployment.getPredeterminedManagedObjects();
+        RealClassLoader realClassLoader = mutableAttachments.getAttachment(RealClassLoader.class);
+        if (realClassLoader instanceof BundleClassLoader)
+        {
+          BundleClassLoader bundleCL = (BundleClassLoader)realClassLoader;
+          mbeanServer.unregisterMBean(bundleCL.getObjectName());
+        }
+        
+        deployments.remove(alias);
+      }
+      catch (Exception ex)
+      {
+        throw new IllegalStateException("Cannot undeploy webapp: " + alias, ex);
+      }
+    }
+  }
+
   private RealClassLoader getRealClassLoader(ClassLoader classLoader)
   {
     RealClassLoader realCL = null;
-    
+
     if (classLoader instanceof RealClassLoader)
       realCL = (RealClassLoader)classLoader;
     else if (classLoader.getParent() != null)
@@ -133,15 +172,17 @@
     }
   }
 
-  public JBossWebMetaData generatWebDeployment(String alias, Servlet servletImpl)
+  private JBossWebMetaData generatWebDeployment(String alias, Servlet servletImpl)
   {
-    String servletName = alias;
     String servletClass = servletImpl.getClass().getName();
+    String servletName = servletClass;
 
+    JBossWebMetaData jbwmd = new JBossWebMetaData();
+    jbwmd.setContextRoot(alias);
+    
     /*
      * <servlet> <servlet-name> <servlet-class> </servlet>
      */
-    JBossWebMetaData jbwmd = new JBossWebMetaData();
     JBossServletsMetaData servlets = jbwmd.getServlets();
     JBossServletMetaData servlet = new JBossServletMetaData();
     servlet.setServletName(servletName);




More information about the jboss-cvs-commits mailing list