You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2009/04/05 16:24:42 UTC

svn commit: r762090 - in /tomcat/trunk/modules/tomcat-lite: build.xml coyote-nio.files examples/ examples/spring/ examples/spring/TomcatSpring.java examples/spring/tomcat-spring.xml

Author: costin
Date: Sun Apr  5 14:24:42 2009
New Revision: 762090

URL: http://svn.apache.org/viewvc?rev=762090&view=rev
Log:
Build and one example of embedding tomcat-lite ( I'll add more when I get time, I only picked
spring for its limitations - it's easier to use tomcat-lite in a framework that supports 
existing-object injection ).


Added:
    tomcat/trunk/modules/tomcat-lite/build.xml   (with props)
    tomcat/trunk/modules/tomcat-lite/coyote-nio.files
    tomcat/trunk/modules/tomcat-lite/examples/
    tomcat/trunk/modules/tomcat-lite/examples/spring/
    tomcat/trunk/modules/tomcat-lite/examples/spring/TomcatSpring.java   (with props)
    tomcat/trunk/modules/tomcat-lite/examples/spring/tomcat-spring.xml   (with props)

Added: tomcat/trunk/modules/tomcat-lite/build.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/build.xml?rev=762090&view=auto
==============================================================================
--- tomcat/trunk/modules/tomcat-lite/build.xml (added)
+++ tomcat/trunk/modules/tomcat-lite/build.xml Sun Apr  5 14:24:42 2009
@@ -0,0 +1,116 @@
+<?xml version="1.0"?>
+<project name="Tomcat Lite" default="tomcat-lite.jar" basedir="../..">
+
+    <property file="${user.home}/build.properties" />
+    <property file="${basedir}/build.properties" />
+    <property file="${basedir}/build.properties.default" />
+
+    <property name="tomcat.build" value="${basedir}/output/build" />
+    <property name="tomcat.src" value="${basedir}/java" />
+    <property name="tomcat.lite.src" value="${basedir}/modules/tomcat-lite" />
+    
+    <property name="classes" value="${basedir}/output/tomcat-lite/classes" />
+    <property name="jar.dir" value="${basedir}/output/tomcat-lite/" />
+
+    <target name="compile">
+        <mkdir dir="${classes}" />
+	<!-- Tomcat deps first -->
+        <javac destdir="${classes}"
+               debug="${compile.debug}"
+               deprecation="${compile.deprecation}"
+               source="${compile.source}"
+               optimize="${compile.optimize}"
+               srcdir="${tomcat.src}"
+        >
+            <include name="javax/servlet/**" />
+            <include name="javax/annotation/**" />
+            <!--include name="org/apache/coyote/**" />
+            <include name="org/apache/tomcat/util/**" /-->
+            <includesfile name="${tomcat.lite.src}/coyote-nio.files"/>
+            <include name="org/apache/jasper/**" />
+        </javac>
+
+        <javac destdir="${classes}"
+               debug="${compile.debug}"
+               deprecation="${compile.deprecation}"
+               source="${compile.source}"
+               optimize="${compile.optimize}"
+        >
+            <src path="${tomcat.lite.src}/java" />
+        </javac>
+
+        <copy todir="${classes}">
+            <fileset dir="${tomcat.lite.src}/java" includes="**/*.properties **/*.xml" />
+            <fileset dir="${tomcat.src}"
+                     includes="org/apache/tomcat/util/**/*.properties org/apache/tomcat/util/**/*.xml"
+            />
+            <fileset dir="${tomcat.src}"
+                     includes="javax/servlet/**/*.properties"
+            />
+            <fileset dir="${tomcat.src}"
+                     includes="org/apache/coyote/**/*.properties org/apache/coyote/**/*.xml"
+            />
+        </copy>
+
+    </target>
+
+    <target name="clean">
+        <delete dir="${classes}" includes="**" />
+        <delete dir="${jar.dir}" includes="**" />
+        <delete dir="${jar.dir}/jar" includes="**" />
+    </target>
+
+    <target name="tomcat-lite.jar" depends="compile,pack_tomcat-lite.jar" />
+
+    <target name="pack_tomcat-lite.jar">
+        <!-- individually packed jars for servlet support-->
+        <mkdir dir="${jar.dir}/jar" />
+        <jar destfile="${jar.dir}/jar/tomcat-lite.jar">
+            <manifest>
+                  <attribute name="Main-Class" value="org.apache.tomcat.lite.cli.Main"/>
+              </manifest>
+            <fileset dir="${classes}">
+                <include name ="org/apache/tomcat/lite/**" />
+                <include name ="org/apache/tomcat/servlets/**" />
+            </fileset>
+        </jar>
+	<copy file="${tomcat.build}/lib/annotations-api.jar" todir="${jar.dir}/jar"/>
+	<copy file="${tomcat.build}/lib/servlet-api.jar" todir="${jar.dir}/jar"/>
+        <copy file="${tomcat.build}/lib/tomcat-coyote.jar" todir="${jar.dir}/jar"/>
+        
+        <!-- Jasper jars -->
+        <mkdir dir="${jar.dir}/jasper" />
+        <copy file="${tomcat.build}/lib/el-api.jar" todir="${jar.dir}/jasper"/> 
+        <copy file="${tomcat.build}/lib/jsp-api.jar" todir="${jar.dir}/jasper"/>
+        <copy file="${tomcat.build}/lib/jasper.jar" todir="${jar.dir}/jasper"/> 
+        <copy file="${tomcat.build}/lib/jasper-el.jar" todir="${jar.dir}/jasper"/>
+        
+        <!-- Bundles -->
+        <!-- All included: javax, jasper, coyote, tomcat-lite -->
+        <jar destfile="${jar.dir}/tomcat-lite-all.jar">
+            <manifest>
+                  <attribute name="Main-Class" value="org.apache.tomcat.lite.cli.Main"/>
+              </manifest>
+            <fileset dir="${classes}">
+            </fileset>
+        </jar>
+
+        <!-- Tomcat lite without jasper -->
+        <jar destfile="${jar.dir}/tomcat-lite+javax+coyote.jar">
+             <manifest>
+                 <attribute name="Main-Class" value="org.apache.tomcat.lite.cli.Main"/>
+             </manifest>
+             <fileset dir="${classes}">
+                 <exclude name ="org/apache/jasper/**" />
+                 <exclude name ="org/apache/el/**" />
+             </fileset>
+        </jar>
+        
+        
+    </target>
+
+    <target name="run">
+        <java jar="${jar.dir}/tomcat-lite-ALL.jar"/>
+    </target>
+    
+</project>

Propchange: tomcat/trunk/modules/tomcat-lite/build.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/trunk/modules/tomcat-lite/coyote-nio.files
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/coyote-nio.files?rev=762090&view=auto
==============================================================================
--- tomcat/trunk/modules/tomcat-lite/coyote-nio.files (added)
+++ tomcat/trunk/modules/tomcat-lite/coyote-nio.files Sun Apr  5 14:24:42 2009
@@ -0,0 +1,116 @@
+org/apache/coyote/http11/filters/IdentityInputFilter.java
+org/apache/coyote/http11/filters/GzipOutputFilter.java
+org/apache/coyote/http11/filters/IdentityOutputFilter.java
+org/apache/coyote/http11/filters/SavedRequestInputFilter.java
+org/apache/coyote/http11/filters/ChunkedInputFilter.java
+org/apache/coyote/http11/filters/VoidInputFilter.java
+org/apache/coyote/http11/filters/BufferedInputFilter.java
+org/apache/coyote/http11/filters/ChunkedOutputFilter.java
+org/apache/coyote/http11/filters/VoidOutputFilter.java
+org/apache/coyote/http11/filters/GzipInputFilter.java
+org/apache/coyote/http11/InputFilter.java
+org/apache/coyote/http11/OutputFilter.java
+org/apache/coyote/http11/Constants.java
+org/apache/coyote/Processor.java
+org/apache/coyote/ProtocolHandler.java
+org/apache/coyote/Adapter.java
+org/apache/coyote/RequestGroupInfo.java
+org/apache/coyote/RequestInfo.java
+org/apache/coyote/ActionCode.java
+org/apache/coyote/Request.java
+org/apache/coyote/InputBuffer.java
+org/apache/coyote/OutputBuffer.java
+org/apache/coyote/Constants.java
+org/apache/coyote/ActionHook.java
+org/apache/coyote/Response.java
+org/apache/juli/logging/Log.java
+org/apache/juli/logging/DirectJDKLog.java
+org/apache/juli/logging/LogConfigurationException.java
+org/apache/juli/logging/LogFactory.java
+org/apache/juli/ClassLoaderLogManager.java
+org/apache/juli/JdkLoggerFormatter.java
+org/apache/juli/FileHandler.java
+org/apache/juli/JdkLoggerConfig.java
+org/apache/tomcat/util/http/mapper/Mapper.java
+org/apache/tomcat/util/http/mapper/MappingData.java
+org/apache/tomcat/util/http/mapper/SimpleMapper.java
+org/apache/tomcat/util/http/ServerCookie.java
+org/apache/tomcat/util/http/AcceptLanguage.java
+org/apache/tomcat/util/http/BaseRequest.java
+org/apache/tomcat/util/http/MimeHeaders.java
+org/apache/tomcat/util/http/Parameters.java
+org/apache/tomcat/util/http/FastHttpDateFormat.java
+org/apache/tomcat/util/http/MimeMap.java
+org/apache/tomcat/util/http/HttpMessages.java
+org/apache/tomcat/util/http/ContentType.java
+org/apache/tomcat/util/http/Cookies.java
+org/apache/tomcat/util/net/URL.java
+org/apache/tomcat/util/net/SocketStatus.java
+org/apache/tomcat/util/modeler/modules/MbeansDescriptorsSerSource.java
+org/apache/tomcat/util/modeler/modules/MbeansSource.java
+org/apache/tomcat/util/modeler/modules/MbeansDescriptorsDOMSource.java
+org/apache/tomcat/util/modeler/modules/ModelerSource.java
+org/apache/tomcat/util/modeler/modules/MbeansDescriptorsIntrospectionSource.java
+org/apache/tomcat/util/modeler/modules/MbeansSourceMBean.java
+org/apache/tomcat/util/modeler/ConstructorInfo.java
+org/apache/tomcat/util/modeler/NotificationInfo.java
+org/apache/tomcat/util/modeler/BaseAttributeFilter.java
+org/apache/tomcat/util/modeler/FeatureInfo.java
+org/apache/tomcat/util/modeler/Registry.java
+org/apache/tomcat/util/modeler/RegistryMBean.java
+org/apache/tomcat/util/modeler/OperationInfo.java
+org/apache/tomcat/util/modeler/FixedNotificationFilter.java
+org/apache/tomcat/util/modeler/AttributeInfo.java
+org/apache/tomcat/util/modeler/ManagedBean.java
+org/apache/tomcat/util/modeler/BaseNotificationBroadcaster.java
+org/apache/tomcat/util/modeler/ParameterInfo.java
+org/apache/tomcat/util/modeler/BaseModelMBean.java
+org/apache/tomcat/util/modeler/JmxObjectManager.java
+org/apache/tomcat/util/res/StringManager.java
+org/apache/tomcat/util/buf/TimeStamp.java
+org/apache/tomcat/util/buf/UEncoder.java
+org/apache/tomcat/util/buf/HexUtils.java
+org/apache/tomcat/util/buf/CharChunk.java
+org/apache/tomcat/util/buf/DateTool.java
+org/apache/tomcat/util/buf/UTF8Decoder.java
+org/apache/tomcat/util/buf/UriNormalizer.java
+org/apache/tomcat/util/buf/Base64.java
+org/apache/tomcat/util/buf/Ascii.java
+org/apache/tomcat/util/buf/UDecoder.java
+org/apache/tomcat/util/buf/StringCache.java
+org/apache/tomcat/util/buf/MessageBytes.java
+org/apache/tomcat/util/buf/ByteChunk.java
+org/apache/tomcat/util/buf/C2BConverter.java
+org/apache/tomcat/util/buf/B2CConverter.java
+org/apache/tomcat/util/buf/BufferInfo.java
+org/apache/tomcat/util/collections/MultiMapValuesEnumeration.java
+org/apache/tomcat/util/collections/MultiMapNamesEnumeration.java
+org/apache/tomcat/util/collections/SimplePool.java
+org/apache/tomcat/util/collections/Queue.java
+org/apache/tomcat/util/collections/EmptyEnumeration.java
+org/apache/tomcat/util/collections/SimpleHashtable.java
+org/apache/tomcat/util/collections/LRUCache.java
+org/apache/tomcat/util/collections/MultiMap.java
+org/apache/tomcat/util/IntrospectionUtils.java
+org/apache/tomcat/util/MutableInteger.java
+org/apache/tomcat/util/DomUtil.java
+org/apache/tomcat/util/ObjectManager.java
+org/apache/coyote/http11/Http11NioProtocol.java
+org/apache/coyote/http11/Http11NioProcessor.java
+org/apache/coyote/http11/InternalNioOutputBuffer.java
+org/apache/coyote/http11/InternalNioInputBuffer.java
+org/apache/tomcat/util/net/jsse/JSSEImplementation.java
+org/apache/tomcat/util/net/jsse/JSSESupport.java
+org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
+org/apache/tomcat/util/net/jsse/JSSEFactory.java
+org/apache/tomcat/util/net/jsse/JSSEKeyManager.java
+org/apache/tomcat/util/net/SSLImplementation.java
+org/apache/tomcat/util/net/SSLSupport.java
+org/apache/tomcat/util/net/SecureNioChannel.java
+org/apache/tomcat/util/net/NioChannel.java
+org/apache/tomcat/util/net/NioBlockingSelector.java
+org/apache/tomcat/util/net/NioSelectorPool.java
+org/apache/tomcat/util/net/NioEndpoint.java
+org/apache/tomcat/util/net/SocketProperties.java
+org/apache/tomcat/util/net/DefaultServerSocketFactory.java
+org/apache/tomcat/util/net/ServerSocketFactory.java

Added: tomcat/trunk/modules/tomcat-lite/examples/spring/TomcatSpring.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/examples/spring/TomcatSpring.java?rev=762090&view=auto
==============================================================================
--- tomcat/trunk/modules/tomcat-lite/examples/spring/TomcatSpring.java (added)
+++ tomcat/trunk/modules/tomcat-lite/examples/spring/TomcatSpring.java Sun Apr  5 14:24:42 2009
@@ -0,0 +1,57 @@
+
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+
+import org.apache.tomcat.integration.ObjectManager;
+import org.apache.tomcat.lite.TomcatLite;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+
+/**
+ * Example of embedding tomcat-lite in Spring. 
+ * 
+ * Spring is a good example because it has some limitations - it can't 
+ * inject into existing (user-created) objects, which would have been
+ * nice and easier for tomcat-lite. As a result, things are harder and more 
+ * verbose than they should.  
+ * 
+ * This is just an example - I'm not an expert in spring and I wouldn't 
+ * use it, too verbose and bloated - while still missing existing-objects
+ * injection ( at least for regular objects ).
+ * 
+ * This should also work with small modifications for jboss microcontainer, 
+ * and probably other frameworks that support POJO. 
+ * 
+ * @author Costin Manolache
+ */
+public class TomcatSpring {
+
+    void loadProperties() throws IOException, ServletException {
+        final DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+        
+        // Properties won't work - no support for list.
+        // PropertiesBeanDefinitionReader rdr = 
+        XmlBeanDefinitionReader rdr = new XmlBeanDefinitionReader(factory);
+        rdr.loadBeanDefinitions("tomcat-spring.xml");
+        
+        TomcatLite lite = (TomcatLite) factory.getBean("TomcatLite");
+        
+        lite.setObjectManager(new ObjectManager() {
+            public Object get(String name) {
+                int lastDot = name.lastIndexOf(".");
+                if (lastDot > 0) {
+                    name = name.substring(lastDot + 1);
+                }
+                return factory.getBean(name);
+            }
+        });
+
+        lite.run();
+    }
+    
+    public static void main(String[] args) throws IOException, ServletException {
+        new TomcatSpring().loadProperties();
+    }
+}

Propchange: tomcat/trunk/modules/tomcat-lite/examples/spring/TomcatSpring.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/trunk/modules/tomcat-lite/examples/spring/tomcat-spring.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/examples/spring/tomcat-spring.xml?rev=762090&view=auto
==============================================================================
--- tomcat/trunk/modules/tomcat-lite/examples/spring/tomcat-spring.xml (added)
+++ tomcat/trunk/modules/tomcat-lite/examples/spring/tomcat-spring.xml Sun Apr  5 14:24:42 2009
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+ 
+  
+<bean id="UserSessionManager" class="org.apache.tomcat.servlets.session.SimpleSessionManager"
+  scope="prototype" lazy-init="true"/>
+
+<bean id="WebappServletMapper" class="org.apache.tomcat.lite.WebappServletMapper"
+  scope="prototype" lazy-init="true"/>
+
+<bean id="WebappFilterMapper" class="org.apache.tomcat.lite.WebappFilterMapper"
+  scope="prototype" lazy-init="true"/>
+
+<bean id="UserTemplateClassMapper" class="org.apache.tomcat.servlets.jsp.JasperCompilerTemplateClassMapper"
+  scope="prototype" lazy-init="true"/>
+  
+<bean id="ContextPreinitListener" class="org.apache.tomcat.lite.webxml.TomcatLiteWebXmlConfig"
+  scope="prototype" lazy-init="true"/>
+  
+<bean id="default-servlet" class="org.apache.tomcat.servlets.file.WebdavServlet"
+  scope="prototype" lazy-init="true"/>
+
+<bean id="jspwildcard-servlet" class="org.apache.tomcat.servlets.jsp.WildcardTemplateServlet"
+  scope="prototype" lazy-init="true"/>
+
+<bean id="Context1" class="org.apache.tomcat.lite.ServletContextImpl" >
+    <property name="contextPath" value="/"/>
+    <property name="basePath" value="./webapps/ROOT"/>
+</bean>
+
+<bean id="Context2" class="org.apache.tomcat.lite.ServletContextImpl" >
+    <property name="contextPath" value="/examples"/>
+    <property name="basePath" value="./webapps/examples"/>
+</bean>
+
+
+  <bean id="connector1" class="org.apache.tomcat.lite.coyote.CoyoteHttp">
+    <property name="port" value="9999"/>
+  </bean>
+
+  <bean id="TomcatLite" class="org.apache.tomcat.lite.TomcatLite">
+    <property name="connector"><ref bean="connector1"/></property>
+    <property name="servletContexts">
+      <list>
+      	<ref bean="Context1"/>
+      	<ref bean="Context2"/>
+      </list>
+    </property>
+  </bean>
+
+</beans>
\ No newline at end of file

Propchange: tomcat/trunk/modules/tomcat-lite/examples/spring/tomcat-spring.xml
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org