Chapter 14. Web Application Development


This chapter deals with the Virtuoso HTTP Server, its Dynamic Page generation and components used to configure it. The HTTP Servers features include:

Web server configuration and access control.
Multihosting, Virtual Hosting and Virtual Directories - A single Virtuoso server can map requests into multiple spaces of web pages based on the interface to which the requests come (multihosting) or on the Host HTTP/1.1 header (virtual hosting).
HTTP/1.0 and HTTP/1.1 support, keep alive connections and pipelining.
Proxying - Virtuoso can automatically redirect requests to certain resources or directories to another web server.
Authentication and security - Specific directories can be made to require authentication (basic or digest) or may be restricted to SSL only. Authentication can also be totally user defined.
SOAP - given directories can be defined as containing SOAP services, which can be accessed by SOAP clients, invoking Virtuoso stored procedures.
Dynamic content - Given paths can be executable, allowing defining VSP, and VSPX pages that generate HTML or XML using embedded Virtuoso/PL.
WebDAV - Paths can be mapped into DAV collections maintained inside the database. Virtuoso WebDav is a Unix file system-like mechanism allows specifying access rights and ownership of DAV resources.
WebDAV resources may optionally be indexed in a free text index.
A web robot allows copying external web resources into Virtuoso WebDAV.

Table of Contents

14.1. The HTTP Server
14.1.1. HTTP Server Base Configuration
14.1.2. Virtual Directories
14.1.3. Authentication
14.1.4. Session Management
14.1.5. Writing Your Own Authentication and Session Handling
14.1.6. Cancellation of Web Requests
14.1.7. Virtuoso WebRobot API
14.1.8. HTTP Server Extensions
14.1.9. Chunked Transfer Encoding
14.1.10. Using Virtuoso Server capabilities via Apache Web Server
14.1.11. Setting Up the Virtuoso HTTPS Listener
14.2. Web Services ACL (Access Control List)
14.2.1. General purpose ACLs
14.2.2. ACL Definition/Removal
14.2.3. Using ACL's Within Application Logic
14.2.4. Predefined ACLs
14.3. Virtuoso Server Pages (VSP)
14.3.1. VSP Markup & Basic Functions
14.3.2. Access Request Information
14.3.3. Errors in Page Procedures
14.3.4. /INLINEFILE HTTP Server Pseudo-Directory
14.3.5. Beyond Basics
14.3.6. Long HTTP Transactions
14.3.7. Using chunked encoding in HTTP 1.1
14.3.8. Making Simple Dynamic Web Pages
14.3.9. Generation of non-HTML output
14.3.10. Post VSP XSLT Transformation Mode
14.3.11. XML & XSLT Generated VSP Pages
14.4. Virtuoso Server Pages for XML (VSPX)
14.4.1. Processing Model
14.4.2. Object Model
14.4.3. Keeping Page and Session State
14.4.4. Application Code
14.4.5. A Simple Example
14.4.6. VSPX Event Handler Parameters
14.4.7. Registering a VSPX Event Callbacks
14.4.8. Commonly Used Types of Attributes of VSPX Controls
14.4.9. VSPX Controls
14.4.10. XForms rendering
14.4.11. XMLSchema for VSPX page
14.5. Deploying ASP.Net Web Applications
14.5.1. Programming Concepts
14.5.2. ASP.Net Deployment & Configuration
14.5.3. The Mono Project
14.5.4. Migrating ASP.Net Applications to Virtuoso
14.6. ASMX Web Service Hosting
14.7. Blogging & Weblogs
14.7.1. The Virtuoso Blogging Application
14.7.2. Blogger Clients Compatibility
14.7.3. Blogs Management User Interface
14.7.4. Community Blog Site
14.7.5. Blogger API
14.7.6. MetaWeblog API
14.7.7. Movable Type API
14.7.8. Atom API
14.7.9. XML-RPC Endpoint Configuration
14.7.10. Blog Hooks - Customizing the Blog Server
14.7.11. Blogger Client API
14.7.12. xmlStorageSystem API
14.7.13. User's Blog quota
14.7.14. Posting a message in to the Blog
14.7.15. Multi-author blogging
14.7.16. Posting a comments
14.7.17. Blog Post Upstreaming (bridging)
14.7.18. Weblogs API
14.7.19. Subscriptions
14.7.20. Trackback API
14.7.21. Pingback API
14.7.22. E-mail Notifications
14.7.23. Comments tracking options
14.7.24. Subscription Harmonizer API
14.7.25. Mobile Blogging (Moblog)
14.7.26. Posting a dynamic content
14.7.27. Notification Services
14.7.28. Rendering the RSS feed in WML format
14.8. Deploying PHP Applications
14.8.1. Building the Virtuoso Server With PHP Extension
14.8.2. PHP Extension Functions
14.8.3. PHP Examples
14.9. Deploying JSP Applications
14.9.1. Environment Setup & Verification
14.10. Perl Hosting
14.11. Python Hosting
14.12. Ruby Hosting

Virtuoso provides a full function web server with dynamic web page generation capability using SQL procedures embedded in HTML or XML via VSP or VSPX. Runtime hosting allows Virtuoso to generate dynamic web pages from other sources also, such as ASP.Net, PHP or JSP.

Out-of-the-box Virtuoso listens for HTTP requests on the port defined in the HTTP Server section of the Virtuoso INI file. The Visual Server Administration Interface is available at this port and can be used to further configure the web server.

Web resources can be based on the file system, reside in the database or in WebDAV or any combination of all of them. WebDAV space can be specified at the path level, by default, paths beginning with /DAV are mapped to the WebDAV root collection (directory) and all other paths are assumed to be file system based. By default / is mapped to the directory specified as ServerRoot in the HTTP Server section of the virtuoso.ini file.

Virtual Directories provide a way to make mappings from paths to other resources such as specific file system or WebDAV locations, other HTTP Servers acting as a proxy or to alter specific processing or authentication rules for a directory.