<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head profile="http://internetalchemy.org/2003/02/profile"> <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" /> <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" /> <meta name="dc.title" content="12. Web Application Development" /> <meta name="dc.subject" content="12. Web Application Development" /> <meta name="dc.creator" content="OpenLink Software Documentation Team ; " /> <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" /> <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" /> <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" /> <link rel="parent" href="webappdevelopment.html" title="Chapter Contents" /> <link rel="prev" href="repl.html" title="Data Replication, Synchronization and Transformation Services" /> <link rel="next" href="webserver.html" title="The HTTP Server" /> <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" /> <link rel="stylesheet" type="text/css" href="doc.css" /> <link rel="stylesheet" type="text/css" href="/doc/translation.css" /> <title>12. Web Application Development</title> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> <meta name="author" content="OpenLink Software Documentation Team ; " /> <meta name="copyright" content="OpenLink Software, 1999 - 2009" /> <meta name="keywords" content="" /> <meta name="GENERATOR" content="OpenLink XSLT Team" /> </head> <body> <div id="header"> <a name="webappdevelopment" /> <img src="../images/misc/logo.jpg" alt="" /> <h1>12. Web Application Development</h1> </div> <div id="navbartop"> <div> <a class="link" href="webappdevelopment.html">Chapter Contents</a> | <a class="link" href="replsample.html" title="Replication Logger Sample">Prev</a> | <a class="link" href="webserver.html" title="The HTTP Server">Next</a> </div> </div> <div id="currenttoc"> <form method="post" action="/doc/adv_search.vspx"> <div class="search">Keyword Search: <br /> <input type="text" name="q" /> <input type="submit" name="go" value="Go" /> </div> </form> <div> <a href="http://www.openlinksw.com/">www.openlinksw.com</a> </div> <div> <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a> </div> <br /> <div> <a href="index.html">Book Home</a> </div> <br /> <div> <a href="contents.html">Contents</a> </div> <div> <a href="preface.html">Preface</a> </div> <br /> <div> <a href="overview.html">Overview</a> </div> <div> <a href="installation.html">Installation Guide</a> </div> <div> <a href="quicktours.html">Quick Start & Tours</a> </div> <div> <a href="sampleapps.html">Sample ODBC & JDBC Applications</a> </div> <div> <a href="concepts.html">Conceptual Overview</a> </div> <div> <a href="server.html">Administration</a> </div> <div> <a href="accessinterfaces.html">Data Access Interfaces</a> </div> <div> <a href="sqlreference.html">SQL Reference</a> </div> <div> <a href="sqlprocedures.html">SQL Procedure Language Guide</a> </div> <div> <a href="hooks.html">Database Event Hooks</a> </div> <div> <a href="repl.html">Data Replication, Synchronization and Transformation Services</a> </div> <div class="selected"> <a href="webappdevelopment.html">Web Application Development</a> <div> <a href="webserver.html" title="The HTTP Server">The HTTP Server</a> </div> <div> <a href="wsacl.html" title="Web Services ACL (Access Control List)">Web Services ACL (Access Control List)</a> </div> <div> <a href="vsp1.html" title="Virtuoso Server Pages (VSP)">Virtuoso Server Pages (VSP)</a> </div> <div> <a href="vspx.html" title="Virtuoso Server Pages for XML (VSPX)">Virtuoso Server Pages for XML (VSPX)</a> </div> <div> <a href="rthwritaspxapps.html" title="Deploying ASP.Net Web Applications">Deploying ASP.Net Web Applications</a> </div> <div> <a href="asmxhosting.html" title="ASMX Web Service Hosting">ASMX Web Service Hosting</a> </div> <div> <a href="blogger.html" title="Blogging & Weblogs">Blogging & Weblogs</a> </div> <div> <a href="servphpext.html" title="Deploying PHP Applications">Deploying PHP Applications</a> </div> <div> <a href="rthjsp.html" title="Deploying JSP Applications">Deploying JSP Applications</a> </div> <div> <a href="perlhosting.html" title="Perl Hosting">Perl Hosting</a> </div> <div> <a href="pythonhosting.html" title="Python Hosting">Python Hosting</a> </div> <div> <a href="rubyhosting.html" title="Ruby Hosting">Ruby Hosting</a> </div> </div> <div> <a href="webandxml.html">XML Support</a> </div> <div> <a href="rdfandsparql.html">RDF Data Access and Data Management</a> </div> <div> <a href="webservices.html">Web Services</a> </div> <div> <a href="runtimehosting.html">Runtime Hosting</a> </div> <div> <a href="internetservices.html">Internet Services</a> </div> <div> <a href="freetext.html">Free Text Search</a> </div> <div> <a href="tpcc.html">TPC C Benchmark Kit</a> </div> <div> <a href="xa.html">Using Virtuoso with Tuxedo</a> </div> <div> <a href="appendixa.html">Appendix</a> </div> <div> <a href="functions.html">Virtuoso Functions Guide</a> </div> <br /> </div> <div id="text"> <div class="abstract"> <h2>Abstract</h2> <p>This chapter deals with the Virtuoso HTTP Server, its Dynamic Page generation and components used to configure it. The HTTP Servers features include:</p> <ul> <li>Web server configuration and access control.</li> <li>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).</li> <li>HTTP/1.0 and HTTP/1.1 support, keep alive connections and pipelining.</li> <li>Proxying - Virtuoso can automatically redirect requests to certain resources or directories to another web server.</li> <li>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.</li> <li>SOAP - given directories can be defined as containing SOAP services, which can be accessed by SOAP clients, invoking Virtuoso stored procedures.</li> <li>Dynamic content - Given paths can be executable, allowing defining VSP, and VSPX pages that generate HTML or XML using embedded Virtuoso/PL.</li> <li>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.</li> <li>WebDAV resources may optionally be indexed in a free text index.</li> <li>A web robot allows copying external web resources into Virtuoso WebDAV.</li> </ul> </div> <h2>Table of Contents</h2> <div class="minitoc"> <div> <a class="sect1" href="webserver.html">12.1. The HTTP Server</a> </div> <div> <a class="sect2" href="webserver.html#vspconf">12.1.2. HTTP Server Base Configuration</a> </div> <div> <a class="sect2" href="webserver.html#virtdir">12.1.3. Virtual Directories</a> </div> <div> <a class="sect2" href="webserver.html#wsauth">12.1.4. Authentication</a> </div> <div> <a class="sect2" href="webserver.html#wssessman">12.1.5. Session Management</a> </div> <div> <a class="sect2" href="webserver.html#customauthsess">12.1.6. Writing Your Own Authentication and Session Handling</a> </div> <div> <a class="sect2" href="webserver.html#cancelwebreq">12.1.7. Cancellation of Web Requests</a> </div> <div> <a class="sect2" href="webserver.html#virtwebrobot">12.1.8. Virtuoso WebRobot API</a> </div> <div> <a class="sect2" href="webserver.html#server_http_ext">12.1.9. HTTP Server Extensions</a> </div> <div> <a class="sect2" href="webserver.html#webserverchunking">12.1.10. Chunked Transfer Encoding</a> </div> <div> <a class="sect2" href="webserver.html#webserverviaapache">12.1.11. Using Virtuoso Server capabilities via Apache Web Server</a> </div> <div> <a class="sect2" href="webserver.html#webserverhttpslistenerset">12.1.12. Setting Up the Virtuoso HTTPS Listener</a> </div> <div> <a class="sect1" href="wsacl.html">12.2. Web Services ACL (Access Control List)</a> </div> <div> <a class="sect2" href="wsacl.html#wsaclgenpurpacl">12.2.1. General purpose ACLs</a> </div> <div> <a class="sect2" href="wsacl.html#wsacldefrem">12.2.2. ACL Definition/Removal</a> </div> <div> <a class="sect2" href="wsacl.html#wsaclusing">12.2.3. Using ACL's Within Application Logic</a> </div> <div> <a class="sect2" href="wsacl.html#wsaclpredefined">12.2.4. Predefined ACLs</a> </div> <div> <a class="sect1" href="vsp1.html">12.3. Virtuoso Server Pages (VSP)</a> </div> <div> <a class="sect2" href="vsp1.html#vspmarkup">12.3.2. VSP Markup & Basic Functions</a> </div> <div> <a class="sect2" href="vsp1.html#accessrequestinfo">12.3.3. Access Request Information</a> </div> <div> <a class="sect2" href="vsp1.html#errorsinpage">12.3.4. Errors in Page Procedures</a> </div> <div> <a class="sect2" href="vsp1.html#inlinefile">12.3.5. /INLINEFILE HTTP Server Pseudo-Directory</a> </div> <div> <a class="sect2" href="vsp1.html#furthervsp">12.3.6. Beyond Basics</a> </div> <div> <a class="sect2" href="vsp1.html#longhttptrans">12.3.7. Long HTTP Transactions</a> </div> <div> <a class="sect2" href="vsp1.html#httpchunkedoutput">12.3.8. Using chunked encoding in HTTP 1.1</a> </div> <div> <a class="sect2" href="vsp1.html#mksimpledynapages">12.3.9. Making Simple Dynamic Web Pages</a> </div> <div> <a class="sect2" href="vsp1.html#xmlthtmloutmd">12.3.10. Generation of non-HTML output</a> </div> <div> <a class="sect2" href="vsp1.html#xmlthtmloutmd">12.3.11. Post VSP XSLT Transformation Mode</a> </div> <div> <a class="sect2" href="vsp1.html#xmlforproducingvsp">12.3.12. XML & XSLT Generated VSP Pages</a> </div> <div> <a class="sect1" href="vspx.html">12.4. Virtuoso Server Pages for XML (VSPX)</a> </div> <div> <a class="sect2" href="vspx.html#vspxprocmodel">12.4.1. Processing Model</a> </div> <div> <a class="sect2" href="vspx.html#vspxobjectmodel">12.4.2. Object Model</a> </div> <div> <a class="sect2" href="vspx.html#vspxpageandsessionstate">12.4.3. Keeping Page and Session State</a> </div> <div> <a class="sect2" href="vspx.html#vspxappcode">12.4.4. Application Code</a> </div> <div> <a class="sect2" href="vspx.html#vspxexamples">12.4.5. A Simple Example</a> </div> <div> <a class="sect2" href="vspx.html#vspxeventpars">12.4.6. VSPX Event Handler Parameters</a> </div> <div> <a class="sect2" href="vspx.html#vspxeventhandlers">12.4.7. Registering a VSPX Event Callbacks</a> </div> <div> <a class="sect2" href="vspx.html#vspx_attr_types">12.4.8. Commonly Used Types of Attributes of VSPX Controls</a> </div> <div> <a class="sect2" href="vspx.html#vspx_controls">12.4.9. VSPX Controls</a> </div> <div> <a class="sect2" href="vspx.html#vspxxforms">12.4.10. XForms rendering</a> </div> <div> <a class="sect2" href="vspx.html#vspxschema">12.4.11. XMLSchema for VSPX page</a> </div> <div> <a class="sect1" href="rthwritaspxapps.html">12.5. Deploying ASP.Net Web Applications</a> </div> <div> <a class="sect2" href="rthwritaspxapps.html#rthprogramming">12.5.2. Programming Concepts</a> </div> <div> <a class="sect2" href="rthwritaspxapps.html#rthasp.netdeploymentconf">12.5.3. ASP.Net Deployment & Configuration</a> </div> <div> <a class="sect2" href="rthwritaspxapps.html#rthaspvsmono">12.5.4. The Mono Project</a> </div> <div> <a class="sect2" href="rthwritaspxapps.html#rthaspxwalk">12.5.5. Migrating ASP.Net Applications to Virtuoso</a> </div> <div> <a class="sect1" href="asmxhosting.html">12.6. ASMX Web Service Hosting</a> </div> <div> <a class="sect1" href="blogger.html">12.7. Blogging & Weblogs</a> </div> <div> <a class="sect2" href="blogger.html#blogvirtblogapp">12.7.1. The Virtuoso Blogging Application</a> </div> <div> <a class="sect2" href="blogger.html#bloggerclientcompatibility">12.7.2. Blogger Clients Compatibility</a> </div> <div> <a class="sect2" href="blogger.html#bloggermanagementui">12.7.3. Blogs Management User Interface</a> </div> <div> <a class="sect2" href="blogger.html#blogcommunityblog">12.7.4. Community Blog Site</a> </div> <div> <a class="sect2" href="blogger.html#bloggerapi">12.7.5. Blogger API</a> </div> <div> <a class="sect2" href="blogger.html#bloggermetaweblog">12.7.6. MetaWeblog API</a> </div> <div> <a class="sect2" href="blogger.html#bloggermovabletype">12.7.7. Movable Type API</a> </div> <div> <a class="sect2" href="blogger.html#blogatomapi">12.7.8. Atom API</a> </div> <div> <a class="sect2" href="blogger.html#bloggerendpointconf">12.7.9. XML-RPC Endpoint Configuration</a> </div> <div> <a class="sect2" href="blogger.html#bloggerhooks">12.7.10. Blog Hooks - Customizing the Blog Server</a> </div> <div> <a class="sect2" href="blogger.html#bloggerclientapi">12.7.11. Blogger Client API</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.12. xmlStorageSystem API</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.13. User's Blog quota</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.14. Posting a message in to the Blog</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.15. Multi-author blogging</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.16. Posting a comments</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.17. Blog Post Upstreaming (bridging)</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.18. Weblogs API</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.19. Subscriptions</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.20. Trackback API</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.21. Pingback API</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.22. E-mail Notifications</a> </div> <div> <a class="sect2" href="blogger.html#blognotifcomments">12.7.23. Comments tracking options</a> </div> <div> <a class="sect2" href="blogger.html#xmlstoragesystem">12.7.24. Subscription Harmonizer API</a> </div> <div> <a class="sect2" href="blogger.html#moblog">12.7.25. Mobile Blogging (Moblog)</a> </div> <div> <a class="sect2" href="blogger.html#blogxmltemplate">12.7.26. Posting a dynamic content</a> </div> <div> <a class="sect2" href="blogger.html#blognotifservices">12.7.27. Notification Services</a> </div> <div> <a class="sect2" href="blogger.html#blogwaprender">12.7.28. Rendering the RSS feed in WML format</a> </div> <div> <a class="sect1" href="servphpext.html">12.8. Deploying PHP Applications</a> </div> <div> <a class="sect2" href="servphpext.html#serverphpbuild">12.8.2. Building the Virtuoso Server With PHP Extension</a> </div> <div> <a class="sect2" href="servphpext.html#serverphpinc">12.8.3. PHP Extension Functions</a> </div> <div> <a class="sect2" href="servphpext.html#serverphpexamples">12.8.4. PHP Examples</a> </div> <div> <a class="sect1" href="rthjsp.html">12.9. Deploying JSP Applications</a> </div> <div> <a class="sect2" href="rthjsp.html#rthjspprelim">12.9.2. Environment Setup & Verification</a> </div> <div> <a class="sect1" href="perlhosting.html">12.10. Perl Hosting</a> </div> <div> <a class="sect1" href="pythonhosting.html">12.11. Python Hosting</a> </div> <div> <a class="sect1" href="rubyhosting.html">12.12. Ruby Hosting</a> </div> </div> <br /> <p>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. </p> <p>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.</p> <p>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.</p> <p>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.</p> <table border="0" width="90%" id="navbarbottom"> <tr> <td align="left" width="33%"> <a href="replsample.html" title="Replication Logger Sample">Previous</a> <br />Replication Logger Sample</td> <td align="center" width="34%"> <a href="webappdevelopment.html">Chapter Contents</a> </td> <td align="right" width="33%"> <a href="webserver.html" title="The HTTP Server">Next</a> <br />The HTTP Server</td> </tr> </table> </div> <div id="footer"> <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div> <div id="validation"> <a href="http://validator.w3.org/check/referer"> <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /> </a> <a href="http://jigsaw.w3.org/css-validator/"> <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" /> </a> </div> </div> </body> </html>