[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