You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by jo...@apache.org on 2014/08/08 16:18:48 UTC

svn commit: r1616770 - in /deltaspike/site/trunk: content/container-control.mdtext content/documentation.mdtext deltaspike-site-project.iml pom.xml

Author: johndament
Date: Fri Aug  8 14:18:48 2014
New Revision: 1616770

URL: http://svn.apache.org/r1616770
Log:
Added docs for Servlet embedded mode.

Added:
    deltaspike/site/trunk/deltaspike-site-project.iml
Modified:
    deltaspike/site/trunk/content/container-control.mdtext
    deltaspike/site/trunk/content/documentation.mdtext
    deltaspike/site/trunk/pom.xml

Modified: deltaspike/site/trunk/content/container-control.mdtext
URL: http://svn.apache.org/viewvc/deltaspike/site/trunk/content/container-control.mdtext?rev=1616770&r1=1616769&r2=1616770&view=diff
==============================================================================
--- deltaspike/site/trunk/content/container-control.mdtext (original)
+++ deltaspike/site/trunk/content/container-control.mdtext Fri Aug  8 14:18:48 2014
@@ -104,4 +104,65 @@ Controlling the request-context for a Qu
                 ctxCtrl.stopContext(RequestScoped.class);
             }
         }
-    }
\ No newline at end of file
+    }
+
+## Embedded Servlet Support
+
+Starting with 1.0.2, you can use DeltaSpike to power embedded Servlet runtimes.  This work is done via Servlet Listeners.  The configuration is specific to each container, below are some examples.
+
+The two main listeners are `CdiServletRequestListener` and `CdiServletContextListener`.  `CdiServletRequestListener` is responsible for starting a `RequestContext` on each incoming request.  In most containers this is all you need.  For Tomcat specifically, you need to use `CdiServletContextListener` which registers the `CdiServletRequestListener`.
+
+The main usecase for this feature is for lightweight embedded runtimes, microservices.  For each of these, it is assumed that you are using the following start up code somewhere:
+
+    :::java
+        CdiContainer cdiContainer = CdiContainerLoader.getCdiContainer();
+        cdiContainer.boot();
+        cdiContainer.getContextControl().startContexts();
+
+### Jetty
+For Jetty, you need to add an `EventListener` which will be your `CdiServletRequestListener`.  The object must be instantiated.  This must be done before the server is started.
+
+    :::java
+        Server server = new Server(port);
+        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
+        context.setContextPath("/");
+        server.setHandler(context);
+
+        context.addEventListener(new CdiServletRequestListener());
+        context.addServlet(new ServletHolder(new YourServlet()),"/*");
+
+        server.start();
+
+### Undertow
+For Undertow, you register the `CdiServletRequestListener` via `ListenerInfo` by passing in the class to their builders.  Then you add the `ListenerInfo` to your deployment before starting.
+
+    :::java
+        ServletInfo servletInfo = Servlets.servlet("RequestServlet", YourServlet.class).setAsyncSupported(true)
+            .setLoadOnStartup(1).addMapping("/*");
+        ListenerInfo listenerInfo = Servlets.listener(CdiServletRequestListener.class);
+        DeploymentInfo di = new DeploymentInfo()
+                .addListener(listenerInfo)
+                .setContextPath("/")
+                .addServlet(servletInfo).setDeploymentName("CdiSEServlet")
+                .setClassLoader(ClassLoader.getSystemClassLoader());
+        DeploymentManager deploymentManager = Servlets.defaultContainer().addDeployment(di);
+        deploymentManager.deploy();
+        Undertow server = Undertow.builder()
+                .addHttpListener(port, "localhost")
+                .setHandler(deploymentManager.start())
+                .build();
+        server.start();
+
+### Tomcat
+For Tomcat, you need to register the `CdiServletContextListener` instead of the `CdiServletRequestListener`.  It is added as an `ApplicationListener` by passing in the class name as a `String`.
+
+    :::java
+        Tomcat tomcat = new Tomcat();
+        tomcat.setPort(port);
+        File base = new File("...");
+        Context ctx = tomcat.addContext("/",base.getAbsolutePath());
+        StandardContext standardContext = (StandardContext)ctx;
+        standardContext.addApplicationListener(CdiServletContextListener.class.getName());
+        Wrapper wrapper = Tomcat.addServlet(ctx,"YourServlet",YourServlet.class.getName());
+        wrapper.addMapping("/*");
+        tomcat.start();
\ No newline at end of file

Modified: deltaspike/site/trunk/content/documentation.mdtext
URL: http://svn.apache.org/viewvc/deltaspike/site/trunk/content/documentation.mdtext?rev=1616770&r1=1616769&r2=1616770&view=diff
==============================================================================
--- deltaspike/site/trunk/content/documentation.mdtext (original)
+++ deltaspike/site/trunk/content/documentation.mdtext Fri Aug  8 14:18:48 2014
@@ -132,13 +132,13 @@ You can manually <a href="download.html"
 In the listings below replace the placeholders for the version with the version of your choice or use:
 
     <properties>
-        <deltaspike.version>1.0.0</deltaspike.version>
+        <deltaspike.version>1.0.1</deltaspike.version>
     </properties>
  
 Or if you want to very bleeding edge, point to our current snapshot.
 
     <properties>
-        <deltaspike.version>1.0.1-SNAPSHOT</deltaspike.version>
+        <deltaspike.version>1.0.2-SNAPSHOT</deltaspike.version>
     </properties>
 
 ### Configuration of DeltaSpike Core
@@ -355,6 +355,15 @@ In the listings below replace the placeh
         <scope>runtime</scope>
     </dependency>
 
+### For Embedded Servlet Runtimes, you can add
+
+    <dependency>
+        <groupId>org.apache.deltaspike.cdictrl</groupId>
+        <artifactId>deltaspike-cdictrl-servlet</artifactId>
+        <version>${deltaspike.version}</version>
+        <scope>compile</scope>
+    </dependency>
+
 ### Testing Snapshots
 
 If you would like to test the latest Snapshot, you can [build](http://deltaspike.apache.org/build.html) DeltaSpike locally or you get it from the Apache Snapshot-Repository:

Added: deltaspike/site/trunk/deltaspike-site-project.iml
URL: http://svn.apache.org/viewvc/deltaspike/site/trunk/deltaspike-site-project.iml?rev=1616770&view=auto
==============================================================================
--- deltaspike/site/trunk/deltaspike-site-project.iml (added)
+++ deltaspike/site/trunk/deltaspike-site-project.iml Fri Aug  8 14:18:48 2014
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/content" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/templates" type="java-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
+

Modified: deltaspike/site/trunk/pom.xml
URL: http://svn.apache.org/viewvc/deltaspike/site/trunk/pom.xml?rev=1616770&r1=1616769&r2=1616770&view=diff
==============================================================================
--- deltaspike/site/trunk/pom.xml (original)
+++ deltaspike/site/trunk/pom.xml Fri Aug  8 14:18:48 2014
@@ -29,7 +29,7 @@
 
     <groupId>org.apache.deltaspike</groupId>
     <artifactId>deltaspike-site-project</artifactId>
-    <version>0.3-incubating-SNAPSHOT</version>
+    <version>1.0.1-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <!--