
        <html>
        <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <title>Websh - Welcome</title>
        <script language="JavaScript" src="buttons.js"></script>
        <link href="websh.css" rel="styleSheet" type="text/css">
        <meta name="description" content="Websh - the rapid development environment to build powerful web applications.">
        <META NAME="keywords" CONTENT="websh, Websh, e-commerce, web application, apache, perl,  php, asp, cold fusion">
        </head>
    
        <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0"
        bgcolor="#ffffff" link="#006699" alink="red" vlink="#006699">
    
        <map name="grafik_navi">
        <area href="mailto:websh-dev@tcl.apache.org" coords="94,2,154,26" shape="rect">
        <area href="./" coords="4,2,64,26" shape="rect">
        <area href="contact.html" coords="184,2,244,26" shape="rect">
        </map>
        <table border="0" cellpadding="0" cellspacing="0" width="100%" height="76">
        <tr valign="top">
    
            <td width="500" bgcolor="#006699"><img height="50" width="300" src="images/grafik_navi_home.gif" alt="" border="0" usemap="#grafik_navi"><img height="50" width="200" src="images/grafik_index.gif" alt=""></td>
        
        <td><img height="50" width="270" src="images/logo.gif" alt="Websh"></td>
	<td width="5000" bgcolor="#000000">&nbsp;</td>
        </tr>
        <tr>
        <td width="500">
        <table border="0" cellpadding="0" cellspacing="0" width="500" height="40">
    
            <tr bgcolor="#006699">
            <td><a href="/websh/product.html"  onmouseover="swap('prod','b_prod_b')"  onmouseout="swap('prod','b_prod_a')"><img height="20"  width="120"  src="/websh/buttons/b_prod_a.gif"  name="prod" border="0" alt="product description"></a></td>
            <td><a href="/websh/docu.html"  onmouseover="swap('docu','b_docu_b')"  onmouseout="swap('docu','b_docu_a')"><img height="20"  width="100"  src="/websh/buttons/b_docu_a.gif"  name="docu" border="0" alt="documentation"></a></td>
            <td width="70"><br></td>
            <td><a href="/websh/resources.html"  onmouseover="swap('ress','b_ress_b')"  onmouseout="swap('ress','b_ress_a')"><img height="20"  width="110"  src="/websh/buttons/b_ress_a.gif"  name="ress" border="0" alt="resources and links"></a></td>
            <td><a href="/websh/download.html"  onmouseover="swap('down','b_down_b')"  onmouseout="swap('down','b_down_a')"><img height="20"  width="100"  src="/websh/buttons/b_down_a.gif"  name="down" border="0" alt="download"></a></td>
            </tr>
            <tr height="20">
            <td width="120" height="20"><img height="20" width="120" src="images/title.gif"></td>
            <td width="100" height="20"><img height="20" width="100" src="images/title.gif"></td>
            <td width="70" height="20"><img height="20" width="70" src="buttons/b_supp_c.gif"></td>
            <td width="110" height="20"><img height="20" width="110" src="images/title.gif"></td>
            <td width="100" height="20"><img height="20" width="100" src="images/title.gif"></td>
            </tr>
        
        </table>
        </td>
        <td><img height="40" width="270" src="images/logo_strich.gif"></td>
        </tr>
        </table>

<div style="padding: 15px; color:#fff; background-color: #069; font-weight: bold; width: 730px; margin: 5px;">
  We are sorry but we discontinued Websh support and development for lack of resources.
  Also the discussion mailing list was closed, so if you're interested in taking up this subproject within the Apache Tcl project to bring it back into life please contact private@tcl.apache.org
</div>
    
    <table border="0" cellpadding="0" cellspacing="0" width="770">
    
        <tr height="30">
        <td width="10" valign="top"></td>
        <td width="150" height="30"></td>
        
                    <td width="455" height="30">
		    <h1>frequently asked questions</h1>
                    </td>
                    <td width="10" height="30"><br>
                    </td>
                    <td width="145" height="30">
		    &nbsp;
                    </td>
                
        </tr>
    
    <tr valign="top">
    
	<td width="10"><br></td>
        <td width="150">
        <table border="0" cellpadding="0" cellspacing="0" width="141">
        
        <tr valign="top">
        <td width="10"><img height="11" width="10" src="images/pfeil.gif"></td>
        <td class=nav>
        <a href="/websh/support.html"><b>support</b></a><br>
	
	<br></td></tr>
    
        
        <tr valign="top">
        <td width="10"><img height="11" width="10" src="images/pfeil.gif"></td>
        <td class=nav>
        <b>faq</b><br>
	
	    - <a href="/websh/faq.html#generic">generic questions</a><br>
	
	    - <a href="/websh/faq.html#technical">tech questions</a><br>
	
	<br></td></tr>
      
        <tr valign="top">
        <td width="10"><img height="11" width="10" src="images/pfeil.gif"></td>
        <td class=nav>
        <a href="/websh/subscribe.html"><b>mailing list</b></a><br>
	
	<br></td></tr>
    
        
        <tr valign="top">
        <td width="10"><img height="11" width="10" src="images/pfeil.gif"></td>
        <td class=nav>
        <a href="http://issues.apache.org/bugzilla/"><b>bug tracking system</b></a><br>
	
	<br></td></tr>
    
        </table>
        </td>
    
    <td width="455">
<a name="toc"></a><a name="generic"><h1>Contents</h1>

<p>
<a href="#generic"><b>1 Generic Questions</b></a><br>
<a href="#whatis">1.1 What is Websh?</a><br>
<a href="#version">1.2 What is the current version?</a><br>
<a href="#price">1.3 What does Websh cost?</a><br>
<a href="#download">1.4 Where can I download Websh?</a><br>
<a href="#why">1.5 Why should I use Websh?</a><br>
<a href="#mailinglist">1.6 Is there a mailing list?</a><br>
</p>
<p>
<a href="#technical"><b>2 Technical Questions</b></a><br>
<a href="#logging">2.1 How do I use the logging facility?</a><br>
<a href="#mod_websh">2.2 How do I setup mod_websh?</a><br>
<a href="#apache">2.3 How do I configure mod_websh for Apache 1 or Apache 2 repectively?</a>
</p>

<a name="generic"></a><a href="#toc"><h1>1 Generic Questions</h1></a>

<a name="whatis"></a><a href="#toc"><h2>1.1 What is Websh?</h2></a>

Websh is a rapid development environment for building powerful and
reliable web applications. It is a standard Tcl extension and is
released as Open Source Software. Websh is versatile and handles
everything from HTML generation to data-base driven one-to-one page
customization. Netcetera has been using it for years in many customer
projects, which typically are E-commerce shops or even electronic banking 
applications.
<p>
In addition, Websh provides mod_websh, an Apache module for the Apache 1.3
and Apache 2 web server.

<a name="version"></a><a href="#toc"><h2>1.2 What is the current version?</h2></a>

Currently, version 3.6 of Websh has been released as Beta (but fully working
version). Check the <a href="download.html">download area</a> to get the
latest version.

<a name="price"></a><a href="#toc"><h2>1.3 What does Websh cost?</h2></a>

Nothing. It's free. Websh is released as Open Source.

<a name="download"></a><a href="#toc"><h2>1.4 Where can I download Websh?</h2></a>

The latest release of Websh is available for download in the
<a href="download.html">download area</a> of this site.

<a name="why"></a><a href="#toc"><h2>1.5 Why should I use Websh?</h2></a>

In today's E-commerce environment, flexibility and short
time-to-market are key characteristics for successful
business. E-commerce, in other words, calls for a solid basis on which
applications can be built. For exactly this purpose we have designed
Websh.
<p>
Websh helps you to create high-quality web applications with light
time constraints. It is fast, versatile, scalable, and easy to learn.
With Websh, you have a win-win situation for developers and
customers.

<a name="mailinglist"></a><a href="#toc"><h2>1.6 Is there a mailing list?</h2></a>

Sure. Visit the <a href="subscribe.html">subscribe</a> page on this site to get more information.

<a name="technical"></a><a href="#toc"><h1>2 Technical Questions</h1></a>

<a name="logging"></a><a href="#toc"><h2>2.1 How do I use the logging facility?</h2></a>

Before Websh sends a message to a log destination, the message
needs to pass two filters. That's why you need to specify a level when
you issue a log message. First, Websh decides whether or not to
handle the log message. Then, it scrolls through the list of
registered log destinations and compares the log message level against
the filter of each log destination. The message is sent to the log
destination only if the message passes the second filter.

<br><br>
A log level consists of a tag and a level, separated by a dot.
Possible levels are
<ul>
<li>alert</li>
<li>error</li>
<li>warning</li>
<li>info</li>
<li>debug</li>
</ul>
The tag is free text. Typically, it is the name of the application, 
say &quot;foo&quot;.

<br><br>
Before log messages can reach their destination, you have to
&quot;open up&quot; the log destination, in two steps:
<pre>
web::loglevel add foo.warning-debug
web::logdest add foo.warning-info file foo_warn.log
web::logdest add foo.debug file foo_dbg.log
</pre>

This sequence of commands tells Websh to handle all messages
in the range &quot;warning&quot; to &quot;debug&quot;, if the level string is
&quot;foo&quot;, and to discard any other messages. Messages of level
&quot;debug&quot; are then written to file &quot;foo_dbg.log&quot;, while
the other messages end up in file &quot;foo_warn.log&quot;.

<br><br>
Issuing a message is easy:
<pre>
web::log foo.info &quot;Hello, world !&quot;
</pre>

<p>
A sample logging setup for a script in mod_websh looks like this:

<pre>
web::initializer {
    web::logdest add user.-debug file -unbuffered /tmp/test.log
    web::logfilter add *.-debug
    web::log info &quot;initializing interp&quot;
}

web::command default {
    web::log info &quot;command default call number [web::interpcfg  numreq]&quot;
    web::putx &quot;file /tmp/dummypage.html&quot;
}

web::finalizer {
    web::log info &quot;shutting down interp&quot;
}

web::dispatch
</pre>

This will setup logging when the interpreter is created (during the
first request it handles) and later, this logs can be used during the 
requests. Note that only log levels and log destinations created in the
initializer code are accessible in the finalizer. Configurations created
during a request is discared when the rquest ends.

<a name="mod_websh"></a><a href="#toc"><h2>2.2 How do I setup mod_websh?</h2></a>

If you compile and install mod_websh, a sample setup for mod_websh is 
also installed. Please refer to the README file in your installation directory.


<a name="apache"></a><a href="#toc"><h2>2.3 How do I configure mod_websh for Apache 1 or Apache 2 repectively?</h2></a>

Websh will automatically detect whether the header files of Apache 1 or 
Apache 2 are present and compile accordingly. There is no manual change
needed to compile with a specific version. (However a compiled version will
only run with the Apache version it was compiled with.)
    </td>
  </tr>
  </table>

        <table border="0" cellpadding="0" cellspacing="0" width="770" height="45">
        <tr valign="top">
        <td colspan="2">
        <hr noshade size="1">
        </td>
        </tr>
        <tr valign="top">
        <td width="10"></td>
        <td width="760">
	<a href="product.html">description</a>&nbsp;|&nbsp;<a href="docu.html">documentation</a>&nbsp;|&nbsp;<span class="blue">support</span>&nbsp;|&nbsp;<a href="resources.html">resources</a>&nbsp;|&nbsp;<a href="download.html">download</a>&nbsp;|&nbsp;<a href="credits.html">credits</a>&nbsp;|&nbsp;<a href="copyright.html">copyright</a>
	</td></tr>
        <tr valign="top">
        <td colspan="2">
        <hr noshade size="1">
        </td>
        </tr>
        <tr valign="top">
        <td width="10"></td>
        <td width="760">
        <span class="klein"><b>&copy; Websh - an <a href="http://tcl.apache.org">Apache Tcl</a> project - part of the <a href="http://www.apache.org/">Apache Software Foundation</a></b></span></td>
        </tr>
        </table>
        </body>
        </html>
    