<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>13.8&nbsp;Configuring the Web Integration Layer</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="Virgo User Guide"><link rel="up" href="ch13.html" title="13.&nbsp;Configuration"><link rel="prev" href="ch13s07.html" title="13.7&nbsp;Configuring the Embedded Tomcat Servlet Container"><link rel="next" href="ch13s09.html" title="13.9&nbsp;Configuring the Embedded Jetty Servlet Container"><!--Begin Google Analytics code--><script type="text/javascript">
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script><script type="text/javascript">
			var pageTracker = _gat._getTracker("UA-2728886-3");
			pageTracker._setDomainName("none");
			pageTracker._setAllowLinker(true);
			pageTracker._trackPageview();
		</script><!--End Google Analytics code--></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">13.8&nbsp;Configuring the Web Integration Layer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch13s07.html">Prev</a>&nbsp;</td><th width="60%" align="center">13.&nbsp;Configuration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch13s09.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-web"></a>13.8&nbsp;Configuring the Web Integration Layer</h2></div></div></div><p>
			Virgo Server for Apache Tomcat integrates an OSGi-enhanced version of the <a class="ulink" href="http://tomcat.apache.org/" target="_top">Tomcat Servlet Container</a>
			in order to provide support for deploying Java EE WARs and OSGi <span class="emphasis"><em>Web Application Bundles</em></span>.
		</p><p>
			For Virgo Server for Apache Tomcat you 
			configure the behaviour of the Web Integration Layer using the properties file called <code class="literal">org.eclipse.virgo.web.properties</code>.
			The <code class="literal">org.eclipse.virgo.web.properties</code> file is located in the <code class="literal">$SERVER_HOME/repository/ext</code> directory. 
		</p><p>The following table describes the properties.  </p><div class="table"><a name="configuring-web-integration-layer"></a><p class="title"><b>Table&nbsp;13.12.&nbsp;Web Integration Layer Properties</b></p><div class="table-contents"><table summary="Web Integration Layer Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
							Property
						</th><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
							Description
						</th><th style="border-bottom: 1.0pt solid ; ">
							Default Value
						</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; ">
							<code class="literal">WABHeaders</code>
						</td><td style="border-right: 1.0pt solid ; ">
							<p>
								Specifies how Web Application Bundle manifest headers are processed.
								See "Web Application Manifest Processing" in the
								<a class="ulink" href="../../virgo-programmer-guide/html/index.html" target="_top">Programmer Guide</a> for details.
							</p>
							<p>
								A value of <code class="literal">strict</code> causes VTS to interpret certain headers in strict compliance with
								the OSGi Web Applications specification if they are not specified.
							</p>
							<p>
								A value of <code class="literal">defaulted</code> causes VTS to set certain headers to default values if they are not specified.
								This was how VTS behaved prior to version 3.
								<span class="emphasis"><em>This value is provided as a migration aid and may not be supported in future releases.</em></span>
								A warning event log message (WE0006W) is generated if this value is specified.
							</p>
							<p>
								The Virgo Jetty Server will always operate in <code class="literal">strict</code> mode.
							</p>
							<p>
                    			Virgo Nano Web does not have a Web Integration Layer, but has a corresponding kernel property.
                    			See <a class="link" href="ch13s06.html#configuring-deployment" title="Configuring Deployment">Configuring Deployment</a>.
							</p>
						</td><td style="">
							<code class="literal">strict</code>
						</td></tr></tbody></table></div></div><br class="table-break"><p>
			There is no Web Integration Layer in Virgo Jetty Server. The relevant configuration is described in
			<a class="link" href="ch13s09.html" title="13.9&nbsp;Configuring the Embedded Jetty Servlet Container">Configuring the Embedded Jetty Servlet Container</a>.
		</p></div><!--Begin LoopFuse code--><script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"></script><script type="text/javascript">
			_lf_cid = "LF_48be82fa";
			_lf_remora();
		</script><!--End LoopFuse code--><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch13s07.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch13.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch13s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">13.7&nbsp;Configuring the Embedded Tomcat Servlet Container&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;13.9&nbsp;Configuring the Embedded Jetty Servlet Container</td></tr></table></div></body></html>