<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--ATOM based XML document generated By OpenLink Virtuoso-->
<atom:feed xmlns:atom="http://www.w3.org/2005/Atom">
<atom:id>http://docs.openlinksw.com/virtuoso/webappdevelopment.html</atom:id>
<atom:title>Web Application Development</atom:title>
<atom:link href="http://docs.openlinksw.com/virtuoso/webappdevelopment.html" type="text/html" rel="alternate" />
<atom:link href="http://docs.openlinksw.com/virtuoso/webappdevelopment.html" type="application/atom+xml" rel="self" />
<atom:subtitle>OpenLink Virtuoso Universal Server: Documentation</atom:subtitle>
 <atom:author>
  <atom:name>virtuoso.docs@openlinksw.com</atom:name>
  <atom:email>virtuoso.docs@openlinksw.com</atom:email>
  </atom:author>
<atom:updated>2008-08-28T11:43:25Z</atom:updated>
<atom:generator>OpenLink Software Documentation Team</atom:generator>
<atom:logo>http://docs.openlinksw.com/virtuoso/../images/misc/logo.jpg</atom:logo>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/webserver.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>The HTTP Server<atom:link href="http://docs.openlinksw.com/virtuoso/webserver.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>The HTTP Server</atom:title>
  <atom:content type="html">When a request comes in to one of the network interfaces where Virtuoso is listening for HTTP requests, it is matched against a set of virtual directory path mappings. A path mapping has the following attributes: Incoming requests are also checked against the HTTP access control lists. These lists rely on the following attributes of the connection to determine whether the request should be answered: The Virtuoso HTTP server is HTTP/1.1 compliant. It can accept persistent connections from HTTP/1.1 clients. The HTTP/1.0 requests are processed as normal without the persistent connections feature.</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/wsacl.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Web Services ACL (Access Control List)<atom:link href="http://docs.openlinksw.com/virtuoso/wsacl.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Web Services ACL (Access Control List)</atom:title>
  <atom:content type="html">Virtuoso provides a generic access control list for HTTP and other Internet protocol clients. This mechanism uses wildcard expressions to selectively block and allow ranges of IP addresses. An ordered set of patterns is matched against the origin of the request. The first matching pattern&#39;s allow/deny flag determines whether the client is approved or not. The patterns for designating a range of IP addresses follow the syntax of the SQL &#39;LIKE&#39; predicate; i.e. &#39;%.foo.bar&#39; or &#39;*.foo.bar&#39; for example. The following mechanisms for services access restriction are defined by default:</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/vsp1.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Virtuoso Server Pages (VSP)<atom:link href="http://docs.openlinksw.com/virtuoso/vsp1.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Virtuoso Server Pages (VSP)</atom:title>
  <atom:content type="html">The Virtuoso Server Pages subsystem is an integral part of the Virtuoso server. A VSP page is a file system or DAV resident resource that contains Virtuoso/PL code intermixed with HTML or other static content. Virtuoso can serve Web pages to HTTP 1.0 and HTTP 1.1 clients. The HTTP document root is set by the ServerRoot parameter in the [HTTPServer] section of the Virtuoso INI file. By default this is set to vsp sub-directory of the installation. If this parameter is not set, then the default document root will be the server&#39;s working directory. Directories under the ServerRoot directory, including the root itself are not automatically allowed to execute dynamic pages such as VSP. A virtual directory must first be created with an appropriate VSP user assigned to permit execution of dynamic pages. After this, Virtuoso will execute files with a &quot;.vsp&quot; extension as a VSP page.] Each VSP page constitutes a Virtuoso stored procedure named after the URI of the page by taking the URI and pre-pending the WS.WS. qualifier and owner. Hence the page /test.vsp becomes the procedure &quot;WS&quot;.&quot;WS&quot;.&quot;/test.vsp&quot;. This is automatically performed when a page is first requested. Subsequent requests to the page will not reference the file. The VSP engine will check for changes in the .vsp source file before calling the procedure and re-compile as required. The ws_proc_def() SQL function can be used to explicitly update the procedure if the .vsp file is changed. Each URL is executed in its own transaction. All SQL statements in a page procedure, whether on local or remote data, make up one transaction, unless transaction control statements are explicitly used to divide the page into multiple transactions. If the page procedure returns through completing execution or through a return statement or as a result of a &#39;no data found&#39; condition, the transaction is implicitly committed. If this commit fails, the output is discarded and the error message indicating the commit failure is sent to the HTTP client. If a VSP procedure returns as a result of an error the transaction is rolled back and the output discarded. The client gets the SQL error message as the HTML body of the reply. A VSP procedure can commit or roll back explicitly with the commit work or rollback work PL statements. If the client closes the connection to the server while server-side processing is taking place this will be detected by the server and the transaction will be eventually interrupted and rolled back in the same way as if an ODBC client had disconnected. To control the server reacting or not on the HTTP client disconnecting the SET HTTP_IGNORE_DISCONNECT = ON/OFF should be used. Each VSP page-procedure is called with three arguments:</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/vspx.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Virtuoso Server Pages for XML (VSPX)<atom:link href="http://docs.openlinksw.com/virtuoso/vspx.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Virtuoso Server Pages for XML (VSPX)</atom:title>
  <atom:content type="html">VSPX is an XML vocabulary for server generated HTML and XHTML pages that may or may not be bound to native or third-party data sources. VSPX is a framework for building and deploying dynamic web content atop Virtuoso. VSPX offers a widget set and event model which is similar to that of GUI tool kits, providing the developer with much automation for common web development tasks. Many controls are tightly integrated with the Virtuoso database, providing seamless data binding to local or remote relational and XML data. Server side scripting in VSPX is performed in Virtuoso/PL. The VSPX source code consists of HTML or XML with interspersed VSPX specific XML elements which describe the UI control hierarchy of the page. VSPX covers the following areas: The VSPX development cycle consists of editing .vspx resources in the file system or Virtuoso DAV. The editing can take place using a regular text editor or a supporting HTML editor.</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/rthwritaspxapps.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Deploying ASP.Net Web Applications<atom:link href="http://docs.openlinksw.com/virtuoso/rthwritaspxapps.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Deploying ASP.Net Web Applications</atom:title>
  <atom:content type="html">Virtuoso is a CLR host. It is responsible for initializing the runtime, defining the application domain (its runtime boundaries, security settings, etc), and executing user code within such domains. Windows can be used as the development platform, a very developer friendly environment with a rich set of tools, but you will not be restricted to Windows, .NET and IIS to run the assemblies produced. Where .NET is not readily available or desired Virtuoso contains Mono, an open source re-implementation of Microsoft .NET, a vehicle taking .NET cross-platform. The CLR run-time is a part of the Virtuoso process. The Mono run time may be run either as in-process or as out-of-process. Hosted applications can make use of the regular Virtuoso .Net data provider to access Virtuoso SQL data and procedures. Microsoft ASPX files can also be run directly from Virtuoso either from the file system or WebDAV. Each of these capabilities releases you from the Microsoft platforms without compromising your development platform. The Virtuoso CLR hosting is implemented using the VSEI.</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/asmxhosting.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>ASMX Web Service Hosting<atom:link href="http://docs.openlinksw.com/virtuoso/asmxhosting.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>ASMX Web Service Hosting</atom:title>
  <atom:content type="html">Microsoft ASMX Web Services can be hosted in exactly the same way as ASPX Applications can be. A ASMX Web Services Project created in Visual Studio can be copied to either the file system (under the VSPROOT directory) or the Virtuoso WebDAV repository. You must copy the project directory to the required location and then make a Virtual Directory pointing to it. If the location is in WebDAV then ensure that execute permissions are set for any .asmx files.</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/blogger.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Blogging &amp; Weblogs<atom:link href="http://docs.openlinksw.com/virtuoso/blogger.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Blogging &amp; Weblogs</atom:title>
  <atom:content type="html">Weblogs, or Blog, are web pages or sites organized by date. The content of a typical blog page contains short messages listed in chronological order. The blog messages are typically excerpts of HTML markup, since they typically appear on web sites and expect web browsers as clients. In the rest of this document we will use interchangeable the terms &quot;blog&quot; and &quot;weblog&quot;, and refer to the users that have a blog as &quot;bloggers&quot;. The following terms are also commonly used in this section:</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/servphpext.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Deploying PHP Applications<atom:link href="http://docs.openlinksw.com/virtuoso/servphpext.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Deploying PHP Applications</atom:title>
  <atom:content type="html">The PHP server extension allows Virtuoso to execute PHP (v4) pages stored in the file system or in Virtuoso’s WebDAV repository. PHP pages run inside the Virtuoso process. The VSE __http_handler_php() has been implemented so that the file extension &#39;.php&#39; is recognized by Virtuoso to switch between &#39;normal&#39; mode and extension processing for PHP mode in the HTTP/WebDAV services. PHP (recursive acronym for &quot;PHP: Hypertext Preprocessor&quot;) is a widely-used Open Source general-purpose scripting language that is suited for Web-based development. Here is an example of a simple PHP page:</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/rthjsp.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Deploying JSP Applications<atom:link href="http://docs.openlinksw.com/virtuoso/rthjsp.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Deploying JSP Applications</atom:title>
  <atom:content type="html">The Virtuoso server with Java hosting support can be used to execute JSP pages, however, Virtuoso requires a JSP container engine first. Jakarta provide such an engine that can be hosted inside Virtuoso with Java support. This section describes how JSP&#39;s can be executed using Jakarta Tomcat JSP implementation.</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/perlhosting.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Perl Hosting<atom:link href="http://docs.openlinksw.com/virtuoso/perlhosting.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Perl Hosting</atom:title>
  <atom:content type="html">Virtuoso functionality can be enhanced through external libraries by loading shared objects or DLLs. The new functions are written in a language of the developer&#39;s choice and compiled to produce a shared library appropriate to the operating system. The path to the shared library must be declared in the Virtuoso INI file and the server restarted before it can be used. The Perl language is hosted within Virtuoso in this way. hosting_perl.so is the library used. The Virtuoso INI file uses a [Plugins] configuration section for listing shared libraries for the server to load upon startup. An example of this is:</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/pythonhosting.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Python Hosting<atom:link href="http://docs.openlinksw.com/virtuoso/pythonhosting.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Python Hosting</atom:title>
  <atom:content type="html">Virtuoso functionality can be enhanced through external libraries by loading shared objects or DLLs. The new functions are written in a language of choice and compiled to produce a shared library appropriate to the operating system. The path to the shared library must be declared in the Virtuoso INI file and the server restarted before it can be used. The Python language is hosted within Virtuoso in this way. hosting_python.so (or hosting_python.dll) is the library used. The Python hosting module requires the Python library, version 2.2.2 or above, to build and use the module, which then must be installed in the Plugins-Load-path defined in the Virtuoso ini file. The source code and build script (build.py) for building the hosting_python.so module are included in the Unix distribution in the custom/hosting/python directory. The Unix installer will offer to build it near the end of the installation process. The build.py is a kind of Makefile. On unix it requires libtool and cc in the path. On windows it requires cl.exe in the path.</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:id>http://docs.openlinksw.com/virtuoso/rubyhosting.html</atom:id>
  <atom:author>
    <atom:name>virtuoso.docs@openlinksw.com</atom:name>
    <atom:email>virtuoso.docs@openlinksw.com</atom:email>
   </atom:author>Ruby Hosting<atom:link href="http://docs.openlinksw.com/virtuoso/rubyhosting.html" type="text/html" rel="alternate" />
  <atom:published>2008-08-28T11:43:25Z</atom:published>
  <atom:title>Ruby Hosting</atom:title>
  <atom:content type="html">Virtuoso functionality can be enhanced through external libraries by loading shared objects or DLLs. The new functions are written in a language of choice and compiled to produce a shared library appropriate to the operating system. The path to the shared library must be declared in the Virtuoso INI file and the server restarted before it can be used. The Ruby language is hosted within Virtuoso in this way. hosting_ruby.so (or hosting_ruby.dll) is the library used. The Ruby hosting module requires the Ruby library, version 1.8.3 or above, to build and use the module, which then must be installed in the Plugins-Load-path defined in the Virtuoso ini file. The source code for building the hosting_ruby.so module are included in the Unix distribution in the custom/hosting/ruby directory. The Unix installer will offer to build it near the end of the installation process.</atom:content>
 </atom:entry>
</atom:feed>