Index: org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/TomcatServer.java
===================================================================
--- org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/TomcatServer.java	(revision 114911)
+++ org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/TomcatServer.java	(working copy)
@@ -54,7 +54,7 @@
 public class TomcatServer {
 	
     private static       Log          log    = LogFactory.getLog(TomcatServer.class);
-    private static final BetterTomcat tomcat = TomcatUtil.getTomcat();
+//    private static final BetterTomcat tomcat = TomcatUtil.getTomcat();
 
     private boolean isWebappManagementEnabled;
     private CarbonTomcatRealm realm;
@@ -68,6 +68,17 @@
     public void start() throws Exception {
         checkPermission();
 
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+        System.out.println("@@@@@@@@@@@@@@@@@@@@");
+
         String carbonHome = System.getProperty("carbon.home");
         String catalinaHome = new File(carbonHome).getAbsolutePath() + File.separator + "lib" +
                               File.separator + "tomcat";
@@ -76,6 +87,7 @@
             throw new CarbonException("Could not create application base directory " +
                                        appBaseDir.getAbsolutePath());
         }*/
+        BetterTomcat tomcat = TomcatUtil.getTomcat();
         tomcat.setBaseDir(catalinaHome);
         String libDir = carbonHome + File.separator + "lib";
 
@@ -119,6 +131,7 @@
      * @throws CarbonException
      */
     private void initTxManager() throws CarbonException {
+        BetterTomcat tomcat = TomcatUtil.getTomcat();
     	Engine engine = tomcat.getTomcat().getEngine();
     	engine.addLifecycleListener(new AtomikosLifecycleListener());
     }
@@ -132,6 +145,7 @@
                 log.info("TomcatRealm not defined in carbon.xml. Using default: memory");
                 tomcatRealm = "UserManager";
             }
+            BetterTomcat tomcat = TomcatUtil.getTomcat();
             if (tomcatRealm.equalsIgnoreCase("memory")) {
                 log.info("Using memory based TomcatRealm");
                 MemoryRealm memoryRealm = new MemoryRealm();
@@ -200,6 +214,7 @@
             throw new RuntimeException("Could not create application base dir " +
                                        appBaseDir.getAbsolutePath());
         }
+       BetterTomcat tomcat = TomcatUtil.getTomcat();
         StandardHost vhost = (StandardHost) tomcat.getHost();
         tomcat.setDefaultHost(defaultHostName);
         vhost.setAppBase(appBaseDir.getAbsolutePath());
@@ -250,7 +265,7 @@
                     }
 
                     initCarbonContext(request);
-                    TomcatValveContainer.invokeValves(request, response);
+//                    TomcatValveContainer.invokeValves(request, response);
                     int status = response.getStatus();
                     if (status != Response.SC_MOVED_TEMPORARILY && status != Response.SC_FORBIDDEN) {
                         // See  http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
@@ -314,6 +329,7 @@
      */
     public void stop() throws Exception {
         checkPermission();
+        BetterTomcat tomcat = TomcatUtil.getTomcat();
         tomcat.stop();
     }
 
Index: org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/Main.java
===================================================================
--- org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/Main.java	(revision 114911)
+++ org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/Main.java	(working copy)
@@ -20,11 +20,14 @@
 import org.apache.commons.logging.LogFactory;
 import org.h2.tools.Console;
 import org.wso2.carbon.CarbonConstants;
+import org.wso2.carbon.bridge.EquinoxFrameworkLauncher;
+import org.wso2.carbon.bridge.FrameworkLauncherFactory;
 import org.wso2.carbon.utils.AntBuildInvoker;
 import org.wso2.carbon.utils.CarbonUtils;
 import org.wso2.carbon.utils.DBUtils;
 import org.wso2.carbon.utils.multitenancy.CarbonContextHolder;
 
+import javax.servlet.ServletException;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
@@ -66,13 +69,53 @@
     }
 
 
-        public void startServer() {
+ public void startServer() {
         log.info("Initializing system...");
         writePID();
+     System.out.println("********* NEW ##########");
         try {
-            tomcatServer = new TomcatServer();
-            tomcatServer.start();
+//            tomcatServer = new TomcatServer();
+//            tomcatServer.start();
+
+             String carbonHome = System.getProperty(CARBON_HOME);
+        if (carbonHome == null) {
+            if ((carbonHome = System.getenv("CARBON_HOME")) != null) {
+                System.setProperty(CARBON_HOME, carbonHome);
+            } else {
+                throw new ServletException(
+                        "CARBON_HOME environment variable is not set. Can't proceed.");
+            }
+        }
+            //Here we are initializing the carbon context to be used by the web-app. This is similar to the
+            //initialization step found in standalone main.
+            CarbonContextHolder.getCurrentCarbonContextHolder();
+            /*String carbonRepo = getInitParameter("carbonRepository");
+            if (carbonRepo != null) {
+                System.setProperty("carbon.repository", carbonRepo);
+                instance.getServletContext().log("Carbon Repository : " + carbonRepo);
+            }
+
+            String axis2Repo = getInitParameter("axis2Repository");
+            if (axis2Repo != null) {
+                System.setProperty("axis2.repo", axis2Repo);
+                instance.getServletContext().log("Axis2 Repository : " + axis2Repo);
+            }*/
+
+        try {
+//            String enableFrameworkControlsParameter =
+//                    getServletConfig().getInitParameter("enableFrameworkControls");
+//            enableFrameworkControls = (enableFrameworkControlsParameter != null &&
+//                                       enableFrameworkControlsParameter.equals("true"));
+            EquinoxFrameworkLauncher frameworkLauncher = (EquinoxFrameworkLauncher) FrameworkLauncherFactory.getFrameworkLauncher();
+            frameworkLauncher.init();
+            frameworkLauncher.deploy();
+            frameworkLauncher.start();
         } catch (Exception e) {
+            throw new ServletException(e);
+        }
+
+            System.out.println("********* NEW ##########");
+        } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }
Index: org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/TomcatUtil.java
===================================================================
--- org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/TomcatUtil.java	(revision 114911)
+++ org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/TomcatUtil.java	(working copy)
@@ -17,6 +17,7 @@
 package org.wso2.carbon.server;
 
 import org.apache.catalina.connector.Connector;
+import org.wso2.carbon.server.internal.CarbonServerDataHolder;
 import org.wso2.carbon.tomcat.BetterTomcat;
 import org.wso2.carbon.utils.CarbonUtils;
 
@@ -28,14 +29,13 @@
  * A set of utility methods for interacting with Embedded Tomcat
  */
 public class TomcatUtil {
-    private static BetterTomcat tomcat;
     private static Map<String, TomcatGenericWebappsDeployer> webappsDeployers
         = new HashMap<String, TomcatGenericWebappsDeployer>();
 
     public synchronized static BetterTomcat getTomcat() {
         CarbonUtils.checkSecurity();
-        if (tomcat == null) {
-            tomcat = new BetterTomcat();
+        BetterTomcat tomcat = CarbonServerDataHolder.getInstance().getTomcat();
+        if (tomcat != null) {
             boolean unpackWars =
                 Boolean.parseBoolean(System.getProperty("carbon.unpack.wars", "false"));
             tomcat.setUnpackWars(unpackWars);
Index: org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/CarbonServerServiceComponent.java
===================================================================
--- org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/CarbonServerServiceComponent.java	(revision 0)
+++ org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/CarbonServerServiceComponent.java	(revision 0)
@@ -0,0 +1,59 @@
+/*
+*  Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you under the Apache License,
+*  Version 2.0 (the "License"); you may not use this file except
+*  in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*    http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.server.internal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.osgi.service.component.ComponentContext;
+import org.wso2.carbon.server.TomcatServer;
+import org.wso2.carbon.tomcat.BetterTomcat;
+
+/**
+ * @scr.component name="org.wso2.carbon.server.internal.CarbonServerServiceComponent" immediate="true"
+ * @scr.reference name="tomcat.service" interface="org.wso2.carbon.tomcat.BetterTomcat"
+ * cardinality="1..1" policy="dynamic"  bind="setTomcatService" unbind="unsetTomcatService"
+ */
+public class CarbonServerServiceComponent {
+    private static Log log = LogFactory.getLog(CarbonServerServiceComponent.class);
+
+    private TomcatServer tomcatServer = new TomcatServer();
+
+    protected void activate(ComponentContext ctxt) {
+        try {
+            tomcatServer.start();
+        } catch (Throwable e) {
+            log.fatal("Cannot start Tomcat server", e);
+        }
+    }
+
+    protected void deactivate(ComponentContext ctxt) {
+        try {
+            tomcatServer.stop();
+        } catch (Throwable e) {
+            log.fatal("Cannot stop Tomcat server", e);
+        }
+    }
+
+    public void setTomcatService(BetterTomcat tomcat) {
+        CarbonServerDataHolder.getInstance().setTomcat(tomcat);
+    }
+
+    public void unsetTomcatService(BetterTomcat tomcat) {
+        CarbonServerDataHolder.getInstance().setTomcat(null);
+    }
+}
Index: org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/CarbonServerDataHolder.java
===================================================================
--- org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/CarbonServerDataHolder.java	(revision 0)
+++ org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/CarbonServerDataHolder.java	(revision 0)
@@ -0,0 +1,45 @@
+/*
+*  Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you under the Apache License,
+*  Version 2.0 (the "License"); you may not use this file except
+*  in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*    http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.server.internal;
+
+import org.wso2.carbon.tomcat.BetterTomcat;
+
+/**
+ * TODO: class description
+ */
+public class CarbonServerDataHolder {
+
+    private static final CarbonServerDataHolder instance = new  CarbonServerDataHolder();
+
+    private BetterTomcat tomcat;
+
+    private CarbonServerDataHolder() {
+    }
+
+    public static CarbonServerDataHolder getInstance(){
+        return instance;
+    }
+
+    public BetterTomcat getTomcat() {
+        return tomcat;
+    }
+
+    public void setTomcat(BetterTomcat tomcat) {
+        this.tomcat = tomcat;
+    }
+}
Index: org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/TomcatServerActivator.java
===================================================================
--- org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/TomcatServerActivator.java	(revision 0)
+++ org.wso2.carbon.server/src/main/java/org/wso2/carbon/server/internal/TomcatServerActivator.java	(revision 0)
@@ -0,0 +1,36 @@
+/*
+*  Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you under the Apache License,
+*  Version 2.0 (the "License"); you may not use this file except
+*  in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*    http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.server.internal;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.wso2.carbon.server.TomcatServer;
+
+/**
+ * OSGi BundleActivator which wraps a TomcatServer object & takes care of starting & stopping
+ * Tomcat
+ */
+public class TomcatServerActivator implements BundleActivator {
+
+
+    public void start(BundleContext bundleContext) throws Exception {
+    }
+
+    public void stop(BundleContext bundleContext) throws Exception {
+    }
+}
Index: org.wso2.carbon.server/pom.xml
===================================================================
--- org.wso2.carbon.server/pom.xml	(revision 114911)
+++ org.wso2.carbon.server/pom.xml	(working copy)
@@ -27,7 +27,7 @@
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>org.wso2.carbon.server</artifactId>
-    <packaging>jar</packaging>
+    <packaging>bundle</packaging>
     <name>WSO2 Carbon - Standalone Server</name>
     <description>The stadalone server code</description>
 
@@ -236,6 +236,20 @@
             <groupId>commons-collections.wso2</groupId>
             <artifactId>commons-collections</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.osgi</groupId>
+            <artifactId>org.eclipse.osgi</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.osgi</groupId>
+            <artifactId>org.eclipse.osgi.services</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.equinox</groupId>
+            <artifactId>org.eclipse.equinox.http.servlet</artifactId>
+            <version>1.0.200.v20090520-1800-wso2v1</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -325,6 +339,34 @@
                     </execution>
                 </executions>
             </plugin>
+
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>1.4.0</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Name>${pom.artifactId}</Bundle-Name>
+                        <Bundle-Activator>org.wso2.carbon.server.internal.TomcatServerActivator</Bundle-Activator>
+                        <Private-Package>org.wso2.carbon.server.internal</Private-Package>
+                        <Export-Package>
+                            !org.wso2.carbon.server.internal.*,
+                            org.wso2.carbon.server.*
+                        </Export-Package>
+                        <Import-Package>
+                            *;resolution:=optional
+                        </Import-Package>
+                        <Embed-Transitive>false</Embed-Transitive>
+                        <DynamicImport-Package>*</DynamicImport-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
         </plugins>
     </build>
     
Index: org.wso2.carbon.http.bridge/src/main/java/org/wso2/carbon/http/bridge/HttpBridgeActivator.java
===================================================================
--- org.wso2.carbon.http.bridge/src/main/java/org/wso2/carbon/http/bridge/HttpBridgeActivator.java	(revision 114911)
+++ org.wso2.carbon.http.bridge/src/main/java/org/wso2/carbon/http/bridge/HttpBridgeActivator.java	(working copy)
@@ -28,8 +28,14 @@
     private HttpServiceServlet httpServiceServlet;
 
     public void start(BundleContext context) throws Exception {
-        httpServiceServlet = new HttpServiceServlet();
-		BridgeServlet.registerServletDelegate(httpServiceServlet);
+        try {
+//            httpServiceServlet = new HttpServiceServlet();
+//            System.out.println("---------- NEWWEEEEEEEEE");
+//            httpServiceServlet.init(null);
+//            BridgeServlet.registerServletDelegate(httpServiceServlet);
+        } catch (Throwable e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
     }
 
     public void stop(BundleContext context) throws Exception {
Index: org.wso2.carbon.bridge/src/main/java/org/wso2/carbon/bridge/EquinoxFrameworkLauncher.java
===================================================================
--- org.wso2.carbon.bridge/src/main/java/org/wso2/carbon/bridge/EquinoxFrameworkLauncher.java	(revision 114911)
+++ org.wso2.carbon.bridge/src/main/java/org/wso2/carbon/bridge/EquinoxFrameworkLauncher.java	(working copy)
@@ -199,7 +199,7 @@
         new AxisServiceDeployerBundleCreator().create(dropinsFolder);
 
         // Handle other extensions Bundle creators
-        String bundleCreatorsString = servletConfig.getInitParameter(BUNDLE_CREATORS);
+        /*String bundleCreatorsString = servletConfig.getInitParameter(BUNDLE_CREATORS);
         if (bundleCreatorsString.indexOf("${") == -1) {
             String[] bundleCreators = bundleCreatorsString.split(",");
             for (String bundleCreator : bundleCreators) {
@@ -212,7 +212,7 @@
                     e.printStackTrace();
                 }
             }
-        }
+        }*/
     }
 
     /**
@@ -566,7 +566,7 @@
      */
     protected Properties loadProperties(String resource) {
         Properties result = new Properties();
-        InputStream in = null;
+        /*InputStream in = null;
         try {
             URL location = context.getResource(resource);
             if (location != null) {
@@ -585,7 +585,7 @@
                     // ignore
                 }
             }
-        }
+        }*/
         return result;
     }
 
@@ -985,7 +985,7 @@
         String enableOsgiDebug = System.getProperty(ENABLE_OSGI_DEBUG);
         if (enableOsgiDebug == null) {
             // Next try to get it from the web.xml
-            enableOsgiDebug = servletConfig.getInitParameter(ENABLE_OSGI_DEBUG);
+//            enableOsgiDebug = servletConfig.getInitParameter(ENABLE_OSGI_DEBUG);
         } else {
             if (enableOsgiDebug.toLowerCase().equals("true")) {
                 enableOsgiDebug = "lib/core/WEB-INF/eclipse/osgi-debug.options"; // TODO: Can get context root from carbon.xml in the future
Index: org.wso2.carbon.servletbridge/pom.xml
===================================================================
--- org.wso2.carbon.servletbridge/pom.xml	(revision 114911)
+++ org.wso2.carbon.servletbridge/pom.xml	(working copy)
@@ -59,9 +59,9 @@
                             org.wso2.carbon.user.api; version=1.0.0,
                             org.wso2.carbon.server.transports; version=1.0.0,
                             net.sf.jsr107cache; version=1.0.0,
-                            javax.servlet; version=2.4,
-                            javax.servlet.http; version=2.4,
-                            javax.servlet.resources; version=2.4
+                            <!--javax.servlet; version=2.4,-->
+                            <!--javax.servlet.http; version=2.4,-->
+                            <!--javax.servlet.resources; version=2.4-->
                         </Export-Package>
                         <Import-Package>!*</Import-Package>
                     </instructions>
Index: org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/internal/BetterTomcatActivator.java
===================================================================
--- org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/internal/BetterTomcatActivator.java	(revision 114911)
+++ org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/internal/BetterTomcatActivator.java	(working copy)
@@ -20,6 +20,7 @@
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
 //import org.osgi.service.http.HttpService;
+import org.osgi.service.http.HttpService;
 import org.wso2.carbon.tomcat.BetterTomcat;
 import org.wso2.carbon.tomcat.BetterTomcatException;
 
@@ -33,8 +34,10 @@
     private ServiceRegistration serviceRegistration;
 
     public void start(BundleContext bundleContext) throws Exception {
-//        serviceRegistration = bundleContext.registerService(HttpService.class.getName(),
-//                                                            new BetterTomcatHttpService(), null);
+        BetterTomcat tomcat = new BetterTomcat();
+        serviceRegistration = bundleContext.registerService(HttpService.class.getName(),
+                                                            new BetterTomcatHttpService(tomcat), null);
+        bundleContext.registerService(BetterTomcat.class.getName(), tomcat, null);
 //        testServer();
     }
 
Index: org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/internal/BetterTomcatHttpService.java
===================================================================
--- org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/internal/BetterTomcatHttpService.java	(revision 114911)
+++ org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/internal/BetterTomcatHttpService.java	(working copy)
@@ -15,49 +15,122 @@
  */
 package org.wso2.carbon.tomcat.internal;
 
+import org.apache.catalina.core.ApplicationContext;
+import org.apache.catalina.core.StandardContext;
 import org.osgi.service.http.HttpContext;
 //import org.osgi.service.http.HttpService;
+import org.osgi.service.http.HttpService;
 import org.osgi.service.http.NamespaceException;
 import org.wso2.carbon.tomcat.BetterTomcat;
 
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import java.util.Dictionary;
+import javax.servlet.*;
+import javax.servlet.descriptor.JspConfigDescriptor;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.*;
 
 /**
- *  OSGi HttpService implementation for BetterTomcat
+ * OSGi HttpService implementation for BetterTomcat
  */
-public class BetterTomcatHttpService {//} implements HttpService {
+public class BetterTomcatHttpService implements HttpService {
 
-    /*private BetterTomcat tomcat = new BetterTomcat();
+    private BetterTomcat tomcat;
 
-    @Override
-    public void registerServlet(String alias,
-                                Servlet servlet,
-                                Dictionary initparams,
-                                HttpContext httpContext)
+    public BetterTomcatHttpService(BetterTomcat tomcat) {
+        this.tomcat = tomcat;
+    }
+
+    public void registerServlet(final String alias,
+                                final Servlet servlet,
+                                final Dictionary initparams,
+                                final HttpContext httpContext)
             throws ServletException, NamespaceException {
         //TODO: Method implementation
-//        tomcat.ad
+//        tomcat.a
+        System.out.println("++++++ Register servlet: " + alias);
+
+         ServletConfig servletConfig = new ServletConfig(){
+
+            public String getServletName() {
+                return alias;
+            }
+
+            public ServletContext getServletContext() {
+                return new ApplicationContext((StandardContext)tomcat.context);
+            }
+
+            public String getInitParameter(String s) {
+                return (String) initparams.get(s);
+            }
+
+            public Enumeration<String> getInitParameterNames() {
+                return initparams.elements();
+            }
+        };
+
+        try {
+            servlet.init(servletConfig);
+        } catch (Exception e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            throw (RuntimeException)e;
+        }
     }
 
-    @Override
     public void registerResources(String alias,
                                   String name,
                                   HttpContext context) throws NamespaceException {
         //TODO: Method implementation
 
+        System.out.println("++++++ Register resource: " + alias);
     }
 
-    @Override
     public void unregister(String alias) {
         //TODO: Method implementation
 
+        System.out.println("++++++ Unregister : " + alias);
     }
 
-    @Override
     public HttpContext createDefaultHttpContext() {
+        System.out.println("+++++ Create default HTTP context");
+        System.out.println("+++++ Create default HTTP context");
+        System.out.println("+++++ Create default HTTP context");
+        System.out.println("+++++ Create default HTTP context");
+        System.out.println("+++++ Create default HTTP context");
         //TODO: Method implementation
-        return null;
-    }*/
+        return new HttpContext() {
+
+            public boolean handleSecurity(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
+                return true;  
+            }
+
+            public URL getResource(String s) {
+                try {
+                    return new GenericServlet() {
+
+                        @Override
+                        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
+                            
+                        }
+                    }.getServletConfig().getServletContext().getResource(s);  
+                } catch (MalformedURLException e) {
+                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+                }
+                return null;
+            }
+
+            public String getMimeType(String s) {
+                return new GenericServlet() {
+
+                    @Override
+                    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
+                        
+                    }
+                }.getServletConfig().getServletContext().getMimeType(s);  
+            }
+        };
+    }
 }
Index: org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/BetterTomcat.java
===================================================================
--- org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/BetterTomcat.java	(revision 114911)
+++ org.wso2.carbon.tomcat/src/main/java/org/wso2/carbon/tomcat/BetterTomcat.java	(working copy)
@@ -85,6 +85,8 @@
         return host;
     }
 
+    public Context context;
+
     /**
      * Add a webapp using normal WEB-INF/web.xml if found.
      *
@@ -100,6 +102,11 @@
     public Context addWebapp(String contextPath,
                              String webappFilePath) throws BetterTomcatException {
 
+        System.out.println("_______ ZZZZZZZ Added webapp " + contextPath);
+        System.out.println("_______ ZZZZZZZ Added webapp " + contextPath);
+        System.out.println("_______ ZZZZZZZ Added webapp " + contextPath);
+        System.out.println("_______ ZZZZZZZ Added webapp " + contextPath);
+        System.out.println("_______ ZZZZZZZ Added webapp " + contextPath);
         Context context;
         try {
             context = tomcat.addWebapp(contextPath, webappFilePath);
@@ -110,6 +117,7 @@
                 context.addParameter("antiJARLocking", "false");
                 context.addParameter("antiResourceLocking", "false");
             }
+            this.context = context;
             return context;
         } catch (ServletException e) {
             throw new BetterTomcatException("Webapp failed to deploy", e);
@@ -129,7 +137,8 @@
      * @return new Context   The Context of the deployed webapp
      */
     public Context addWebapp(Host host, String contextPath, String webappFilePath) {
-        return tomcat.addWebapp(host, contextPath, webappFilePath);
+        context = tomcat.addWebapp(host, contextPath, webappFilePath);
+        return context;
     }
 
     /**
Index: org.wso2.carbon.tomcat/pom.xml
===================================================================
--- org.wso2.carbon.tomcat/pom.xml	(revision 114911)
+++ org.wso2.carbon.tomcat/pom.xml	(working copy)
@@ -82,7 +82,8 @@
                         <Private-Package>org.wso2.carbon.tomcat.internal</Private-Package>
                         <Export-Package>
                             !org.wso2.carbon.tomcat.internal.*,
-                            org.wso2.carbon.tomcat.*
+                            org.wso2.carbon.tomcat.*,
+                            javax.servlet.*;version=2.4.0
                         </Export-Package>
                         <Import-Package>
                             *;resolution:=optional
@@ -91,6 +92,7 @@
                             tomcat-dbcp|tomcat-embed-core|tomcat-embed-jasper|tomcat-embed-logging-juli|tomcat-embed-logging-log4j;scope=compile|runtime;inline=true
                         </Embed-Dependency>
                         <Embed-Transitive>false</Embed-Transitive>
+                        <DynamicImport-Package>*</DynamicImport-Package>
                     </instructions>
                 </configuration>
             </plugin>
Index: org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreServiceComponent.java
===================================================================
--- org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreServiceComponent.java	(revision 114911)
+++ org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreServiceComponent.java	(working copy)
@@ -39,12 +39,12 @@
  * cardinality="1..1" policy="dynamic"  bind="setRegistryService" unbind="unsetRegistryService"
  * @scr.reference name="http.service" interface="org.osgi.service.http.HttpService"
  * cardinality="1..1" policy="dynamic"  bind="setHttpService" unbind="unsetHttpService"
- * @scr.reference name="serverShutdownHandler" interface="org.wso2.carbon.core.ServerShutdownHandler"
- * cardinality="0..n" policy="dynamic"  bind="addServerShutdownHandler" unbind="removeServerShutdownHandler"
- * @scr.reference name="serverRestartHandler" interface="org.wso2.carbon.core.ServerRestartHandler"
- * cardinality="0..n" policy="dynamic"  bind="addServerRestartHandler" unbind="removeServerRestartHandler"
- * @scr.reference name="discoveryService" interface="org.wso2.carbon.base.DiscoveryService"
-  * cardinality="0..1" policy="dynamic"  bind="setDiscoveryService" unbind="unsetDiscoveryService"
+// * @scr.reference name="serverShutdownHandler" interface="org.wso2.carbon.core.ServerShutdownHandler"
+// * cardinality="0..n" policy="dynamic"  bind="addServerShutdownHandler" unbind="removeServerShutdownHandler"
+// * @scr.reference name="serverRestartHandler" interface="org.wso2.carbon.core.ServerRestartHandler"
+// * cardinality="0..n" policy="dynamic"  bind="addServerRestartHandler" unbind="removeServerRestartHandler"
+// * @scr.reference name="discoveryService" interface="org.wso2.carbon.base.DiscoveryService"
+//  * cardinality="0..1" policy="dynamic"  bind="setDiscoveryService" unbind="unsetDiscoveryService"
   */
 public class CarbonCoreServiceComponent {
 
