Details
-
Task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
This issue is created as part of the process outlined in the "Contributing Source Code" Felix page as suggested by Richard Hall in issue FELIX-538[1]. The source code attached[6] to this issue is an implementation of the OSGi HTTP Service specification version 1.2. The code is based on Richard's original server which is also referenced in FELIX-538, and the remaining code was developed by me, with the exception of a few classes which were adapted from existing Felix sources[2].
Design constraints for this project were backwards compatibility, simplicity, and size. The code base consists of 23 Java files in 3 packages. The source is divided into "osgi", "server", and "servlet" packages according to the primary purpose of the class, and interfaces are utilized to keep the three domains fairly isolated[3]. The minimal compiled jar which does not include the servlet API or OSGi API currently is 41Kb, and the dependency-free jar with all necessary APIs is 125Kb. An Ant script is provided that will build the jars and a CI server is also available for binary builds[4] and javadocs[5].
In terms of features the server doesn't offer:
-HTTPS
-Authentication
-Cookie support
-Session support
In addition several aspects of the Servlet implementation have not been tested including:
-Multipart POST
-DELETE
-PUT
-Non-default character encodings
And as of the submission several Servlet API methods are unimplemented in (all unimplemented methods throw org.apache.felix.http.lightweight.servlet.UnimplementedAPIException):
-HttpServletRequest(Impl)
-HttpServletResponse(Impl)
However the core functionality has been implemented and tested and the Felix Web Admin application can be hosted with this HTTP Service implementation.
I plan in continuing to use the service in personal and professional projects and would be happy to continue to add unimplemented features and maintain the code base as a Felix committer.
Thanks!
Ken Gilmer
1: https://issues.apache.org/jira/browse/FELIX-538
2: /plain-http-service/src/main/java/org/apache/felix/http/lightweight/osgi/DefaultContextImpl.java, /plain-http-service/src/main/java/org/apache/felix/http/lightweight/osgi/Logger.java
3: /plain-http-service/src/main/java/org/apache/felix/http/lightweight/osgi/ServiceRegistrationHandler.java, /plain-http-service/src/main/java/org/apache/felix/http/lightweight/osgi/ServiceRegistrationResolver.java
4: https://leafcutter.ci.cloudbees.com/job/lightweight%20http%20service/
5: https://leafcutter.ci.cloudbees.com/job/lightweight%20http%20service/javadoc/
6: MD5SUM 47580996a8c364890518222494d4d26b org.apache.felix.http.lightweight-src.tar.gz