From 4007e89fb6522caef2f5cf38edd48a2ceb4e99e6 Mon Sep 17 00:00:00 2001 From: costin Date: Sun, 5 Apr 2009 14:24:42 +0000 Subject: [PATCH] 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 ). git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@762090 13f79535-47bb-0310-9956-ffa450edef68 --- modules/tomcat-lite/build.xml | 116 +++++++++++++++++++++ modules/tomcat-lite/coyote-nio.files | 116 +++++++++++++++++++++ .../tomcat-lite/examples/spring/TomcatSpring.java | 57 ++++++++++ .../tomcat-lite/examples/spring/tomcat-spring.xml | 55 ++++++++++ 4 files changed, 344 insertions(+) create mode 100644 modules/tomcat-lite/build.xml create mode 100644 modules/tomcat-lite/coyote-nio.files create mode 100644 modules/tomcat-lite/examples/spring/TomcatSpring.java create mode 100644 modules/tomcat-lite/examples/spring/tomcat-spring.xml diff --git a/modules/tomcat-lite/build.xml b/modules/tomcat-lite/build.xml new file mode 100644 index 000000000..9118ff979 --- /dev/null +++ b/modules/tomcat-lite/build.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/tomcat-lite/coyote-nio.files b/modules/tomcat-lite/coyote-nio.files new file mode 100644 index 000000000..031bcb85e --- /dev/null +++ b/modules/tomcat-lite/coyote-nio.files @@ -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 diff --git a/modules/tomcat-lite/examples/spring/TomcatSpring.java b/modules/tomcat-lite/examples/spring/TomcatSpring.java new file mode 100644 index 000000000..0a5503379 --- /dev/null +++ b/modules/tomcat-lite/examples/spring/TomcatSpring.java @@ -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(); + } +} diff --git a/modules/tomcat-lite/examples/spring/tomcat-spring.xml b/modules/tomcat-lite/examples/spring/tomcat-spring.xml new file mode 100644 index 000000000..f824b7387 --- /dev/null +++ b/modules/tomcat-lite/examples/spring/tomcat-spring.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.11.0