Aren't debug levels in TC 5.5  inactive? Will need to set up log4j.

Bob

On Apr 8, 2005 5:15 PM, Jay Burgess <[EMAIL PROTECTED]> wrote:
> Do you have anything in your Tomcat log files that might help?  If not, you 
> can
> bump up the debug levels in server.xml and you might get some more info.
> 
> I also found that adding one of the two following listeners in my server.xml
> helped me debug my DBCP problems (I don't remember which one I added, but it
> should be obvious):
> 
> <Listener
>  className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
>  debug="9"/>
> <Listener
>  className="org.apache.catalina.core.NamingContextListener"
>  debug="9"/>
> 
> Jay
> Vertical Technology Group
> http://www.vtgroup.com/
> 
> 
> -----Original Message-----
> From: Scott Purcell [mailto:[EMAIL PROTECTED]
> Sent: Friday, April 08, 2005 3:08 PM
> To: Tomcat Users List
> Subject: DBCP Please Help Get Working Properly
> 
> Hello,
> 
> I am trying to use the DBCP features of Tomcat 5.5.7. I created a webapp named
> "testDB" and put it under $CATALINA_HOME/webapps/testDB. Then I created a
> testDB.xml file under $CATALINA_HOME/conf/Catalina/localhost/testDB.xml.
> 
> // here it is
> <Context path="/testDB" docBase="testDB"
>         debug="5" reloadable="true" crossContext="true">
> 
>   <Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource"
>                maxActive="100" maxIdle="30" maxWait="10000"
>                username="javauser" password="javadude"
> driverClassName="com.mysql.jdbc.Driver"
>                url="jdbc:mysql://localhost:3306/fritest?autoReconnect=true"/>
> </Context>
> 
> I have been following the notes from:
> http://localhost/tomcat-docs/jndi-datasource-examples-howto.html
> 
> I made sure I completed the rest of the tasks.
> WEB-INF has the two tag locations, and the resource ref.
> eg:
> 
>     <taglib>
>     <taglib-uri>/WEB-INF/sql.tld</taglib-uri>
>     <taglib-location>/WEB-INF/sql.tld</taglib-location>
>     </taglib>
> 
>     <taglib>
>     <taglib-uri>/WEB-INF/c.tld</taglib-uri>
>     <taglib-location>/WEB-INF/c.tld</taglib-location>
>     </taglib>
> 
>   <resource-ref>
>       <description>DB Connection</description>
>       <res-ref-name>jdbc/testDB</res-ref-name>
>       <res-type>javax.sql.DataSource</res-type>
>       <res-auth>Container</res-auth>
>   </resource-ref>
> 
> I finally hit my jsp page which is this:
> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql"; prefix="sql" %>
> <%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c" %>
> 
> <sql:query var="rs" dataSource="jdbc/testDB">
> select id, foo, bar from testdata
> </sql:query>
> 
> <html>
>   <head>
>     <title>DB Test</title>
>   </head>
>   <body>
> 
>   <h2>Results</h2>
> 
> <c:forEach var="row" items="${rs.rows}">
>     Foo ${row.foo}<br/>
>     Bar ${row.bar}<br/>
> </c:forEach>
> 
>   </body>
> </html>
> 
> And I get no results:
> 
> Now I am pretty sure I have all configured. Because if I use a fallback 
> (Tomcat
> 4.1) code piece I had, I get results using the same settings:
> 
> package foo;
> 
> import javax.naming.*;
> import javax.sql.*;
> import java.sql.*;
> 
> public class DBTest {
> 
>   String foo = "Not Connected";
>   int bar = -1;
> 
>   public void init() {
>     try{
>       Context ctx = new InitialContext();
>       if(ctx == null )
>           throw new Exception("Boom - No Context");
> 
>       DataSource ds =
>             (DataSource)ctx.lookup(
>                "java:comp/env/jdbc/testDB");
> 
>       if (ds != null) {
>         Connection conn = ds.getConnection();
> 
>         if(conn != null)  {
>             foo = "Got Connection "+conn.toString();
>             Statement stmt = conn.createStatement();
>             ResultSet rst =
>                 stmt.executeQuery(
>                   "select id, foo, bar from testdata");
>             while(rst.next()) {
>                System.out.println("next ....");
>                foo=rst.getString(2);
>                bar=rst.getInt(3);
>             }
>             conn.close();
>         }
>       }
>     }catch(Exception e) {
>       e.printStackTrace();
>     }
>  }
> 
>  public String getFoo() { return foo; }
>  public int getBar() { return bar;}
> }
> 
> And using the above class works all day.
> 
> The only difference I see is that the class using a "naming" import and the 
> jsp
> does not. Can anyone help.
> 
> Thanks,
> Scott
> 
> -----Original Message-----
> From: David Smith [mailto:[EMAIL PROTECTED]
> Sent: Friday, April 08, 2005 1:14 PM
> To: Tomcat Users List
> Subject: Re: Add Context Path, Tomcat 5.5.7
> 
> Hi.
> 
> Take a look at this for where to put <Context> elements:
> http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html
> 
> This is new with Tomcat 5.0 and is continued in Tomcat 5.5
> 
> --David
> 
> Scott Purcell wrote:
> 
> >Hello,
> >
> >I am following the information here to add DBCP to my application.
> >http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html
> >
> >I am reading to add the <Context path="/DBTest ... from the above docs." The
> instructions say to ".
> >
> >Configure the JNDI DataSource in Tomcat by adding a declaration for your
> resource to $CATALINA_HOME/conf/server.xml.
> >
> >Add this in between the </Context> tag of the examples context and the 
> ></Host>
> tag closing the localhost definition.
> >
> >
> >
> >So cool, I opened up the server.xml, but do not see any existing context or
> host tags in it. Here is my server.xml file. Does anyone know where I put the
> Context for the DBCP stuff? Thanks,
> >
> >'<!-- Example Server Configuration File -->
> ><!-- Note that component elements are nested corresponding to their
> >     parent-child relationships with each other -->
> >
> ><!-- A "Server" is a singleton element that represents the entire JVM,
> >     which may contain one or more "Service" instances.  The Server
> >     listens for a shutdown command on the indicated port.
> >
> >     Note:  A "Server" is not itself a "Container", so you may not
> >     define subcomponents such as "Valves" or "Loggers" at this level.
> > -->
> >
> ><Server port="8005" shutdown="SHUTDOWN">
> >
> >  <!-- Comment these entries out to disable JMX MBeans support used for the
> >       administration web application -->
> >  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
> >  <Listener
> className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
> >  <Listener
> className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
> >
> >  <!-- Global JNDI resources -->
> >  <GlobalNamingResources>
> >
> >    <!-- Test entry for demonstration purposes -->
> >    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
> >
> >    <!-- Editable user database that can also be used by
> >         UserDatabaseRealm to authenticate users -->
> >    <Resource name="UserDatabase" auth="Container"
> >              type="org.apache.catalina.UserDatabase"
> >       description="User database that can be updated and saved"
> >           factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
> >          pathname="conf/tomcat-users.xml" />
> >
> >  </GlobalNamingResources>
> >
> >  <!-- A "Service" is a collection of one or more "Connectors" that share
> >       a single "Container" (and therefore the web applications visible
> >       within that Container).  Normally, that Container is an "Engine",
> >       but this is not required.
> >
> >       Note:  A "Service" is not itself a "Container", so you may not
> >       define subcomponents such as "Valves" or "Loggers" at this level.
> >   -->
> >
> >  <!-- Define the Tomcat Stand-Alone Service -->
> >  <Service name="Catalina">
> >
> >    <!-- A "Connector" represents an endpoint by which requests are received
> >         and responses are returned.  Each Connector passes requests on to 
> > the
> >         associated "Container" (normally an Engine) for processing.
> >
> >         By default, a non-SSL HTTP/1.1 Connector is established on port 
> > 8080.
> >         You can also enable an SSL HTTP/1.1 Connector on port 8443 by
> >         following the instructions below and uncommenting the second 
> > Connector
> >         entry.  SSL support requires the following steps (see the SSL Config
> >         HOWTO in the Tomcat 5 documentation bundle for more detailed
> >         instructions):
> >         * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 
> > or
> >           later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
> >         * Execute:
> >             %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA 
> > (Windows)
> >             $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  (Unix)
> >           with a password value of "changeit" for both the certificate and
> >           the keystore itself.
> >
> >         By default, DNS lookups are enabled when a web application calls
> >         request.getRemoteHost().  This can have an adverse impact on
> >         performance, so you can disable it by setting the
> >         "enableLookups" attribute to "false".  When DNS lookups are 
> > disabled,
> >         request.getRemoteHost() will return the String version of the
> >         IP address of the remote client.
> >    -->
> >
> >    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
> >    <Connector
> >port="80"               maxThreads="150" minSpareThreads="25" 
> >maxSpareThreads="75"
> >               enableLookups="false" redirectPort="8443" acceptCount="100"
> >               connectionTimeout="20000" disableUploadTimeout="true" />
> >    <!-- Note : To disable connection timeouts, set connectionTimeout value
> >     to 0 -->
> >
> > <!-- Note : To use gzip compression you could set the following properties :
> >
> >      compression="on"
> >      compressionMinSize="2048"
> >      noCompressionUserAgents="gozilla, traviata"
> >      compressableMimeType="text/html,text/xml"
> > -->
> >
> >    <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
> >    <!--
> >    <Connector port="8443"
> >               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
> >               enableLookups="false" disableUploadTimeout="true"
> >               acceptCount="100" scheme="https" secure="true"
> >               clientAuth="false" sslProtocol="TLS" />
> >    -->
> >
> >    <!-- Define an AJP 1.3 Connector on port 8009 -->
> >    <Connector port="8009"
> >               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" 
> > />
> >
> >    <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
> >    <!-- See proxy documentation for more information about using this. -->
> >    <!--
> >    <Connector port="8082"
> >               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
> >               enableLookups="false" acceptCount="100" 
> > connectionTimeout="20000"
> >               proxyPort="80" disableUploadTimeout="true" />
> >    -->
> >
> >    <!-- An Engine represents the entry point (within Catalina) that 
> > processes
> >         every request.  The Engine implementation for Tomcat stand alone
> >         analyzes the HTTP headers included with the request, and passes them
> >         on to the appropriate Host (virtual host). -->
> >
> >    <!-- You should set jvmRoute to support load-balancing via AJP ie :
> >    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
> >    -->
> >
> >    <!-- Define the top level container in our container hierarchy -->
> >    <Engine name="Catalina" defaultHost="localhost">
> >
> >      <!-- The request dumper valve dumps useful debugging information about
> >           the request headers and cookies that were received, and the 
> > response
> >           headers and cookies that were sent, for all requests received by
> >           this instance of Tomcat.  If you care only about requests to a
> >           particular virtual host, or a particular application, nest this
> >           element inside the corresponding <Host> or <Context> entry 
> > instead.
> >
> >           For a similar mechanism that is portable to all Servlet 2.4
> >           containers, check out the "RequestDumperFilter" Filter in the
> >           example application (the source for this filter may be found in
> >           "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
> >
> >           Request dumping is disabled by default.  Uncomment the following
> >           element to enable it. -->
> >      <!--
> >      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
> >      -->
> >
> >      <!-- Because this Realm is here, an instance will be shared globally 
> > -->
> >
> >      <!-- This Realm uses the UserDatabase configured in the global JNDI
> >           resources under the key "UserDatabase".  Any edits
> >           that are performed against this UserDatabase are immediately
> >           available for use by the Realm.  -->
> >      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
> >             resourceName="UserDatabase"/>
> >
> >      <!-- Comment out the old realm but leave here for now in case we
> >           need to go back quickly -->
> >      <!--
> >      <Realm className="org.apache.catalina.realm.MemoryRealm" />
> >      -->
> >
> >      <!-- Replace the above Realm with one of the following to get a Realm
> >           stored in a database and accessed via JDBC -->
> >
> >      <!--
> >      <Realm  className="org.apache.catalina.realm.JDBCRealm"
> >             driverName="org.gjt.mm.mysql.Driver"
> >          connectionURL="jdbc:mysql://localhost/authority"
> >         connectionName="test" connectionPassword="test"
> >              userTable="users" userNameCol="user_name" 
> > userCredCol="user_pass"
> >          userRoleTable="user_roles" roleNameCol="role_name" />
> >      -->
> >
> >      <!--
> >      <Realm  className="org.apache.catalina.realm.JDBCRealm"
> >             driverName="oracle.jdbc.driver.OracleDriver"
> >          connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
> >         connectionName="scott" connectionPassword="tiger"
> >              userTable="users" userNameCol="user_name" 
> > userCredCol="user_pass"
> >          userRoleTable="user_roles" roleNameCol="role_name" />
> >      -->
> >
> >      <!--
> >      <Realm  className="org.apache.catalina.realm.JDBCRealm"
> >             driverName="sun.jdbc.odbc.JdbcOdbcDriver"
> >          connectionURL="jdbc:odbc:CATALINA"
> >              userTable="users" userNameCol="user_name" 
> > userCredCol="user_pass"
> >          userRoleTable="user_roles" roleNameCol="role_name" />
> >      -->
> >
> >      <!-- Define the default virtual host
> >           Note: XML Schema validation will not work with Xerces 2.2.
> >       -->
> >      <Host name="localhost" appBase="webapps"
> >       unpackWARs="true" autoDeploy="true"
> >       xmlValidation="false" xmlNamespaceAware="false">
> >
> >        <!-- Defines a cluster for this node,
> >             By defining this element, means that every manager will be 
> > changed.
> >             So when running a cluster, only make sure that you have webapps 
> > in
> there
> >             that need to be clustered and remove the other ones.
> >             A cluster has the following parameters:
> >
> >             className = the fully qualified name of the cluster class
> >
> >             name = a descriptive name for your cluster, can be anything
> >
> >             mcastAddr = the multicast address, has to be the same for all 
> > the
> nodes
> >
> >             mcastPort = the multicast port, has to be the same for all the 
> > nodes
> >
> >             mcastBindAddr = bind the multicast socket to a specific address
> >
> >             mcastTTL = the multicast TTL if you want to limit your broadcast
> >
> >             mcastSoTimeout = the multicast readtimeout
> >
> >             mcastFrequency = the number of milliseconds in between sending a
> "I'm alive" heartbeat
> >
> >             mcastDropTime = the number a milliseconds before a node is
> considered "dead" if no heartbeat is received
> >
> >             tcpThreadCount = the number of threads to handle incoming
> replication requests, optimal would be the same amount of threads as nodes
> >
> >             tcpListenAddress = the listen address (bind address) for TCP
> cluster request on this host,
> >                                in case of multiple ethernet cards.
> >                                auto means that address becomes
> >                                InetAddress.getLocalHost().getHostAddress()
> >
> >             tcpListenPort = the tcp listen port
> >
> >             tcpSelectorTimeout = the timeout (ms) for the Selector.select()
> method in case the OS
> >                                  has a wakup bug in java.nio. Set to 0 for 
> > no
> timeout
> >
> >             printToScreen = true means that managers will also print to 
> > std.out
> >
> >             expireSessionsOnShutdown = true means that
> >
> >             useDirtyFlag = true means that we only replicate a session after
> setAttribute,removeAttribute has been called.
> >                            false means to replicate the session after each
> request.
> >                            false means that replication would work for the
> following piece of code: (only for SimpleTcpReplicationManager)
> >                            <%
> >                            HashMap map = 
> > (HashMap)session.getAttribute("map");
> >                            map.put("key","value");
> >                            %>
> >             replicationMode = can be either 'pooled', 'synchronous' or
> 'asynchronous'.
> >                               * Pooled means that the replication happens
> using several sockets in a synchronous way. Ie, the data gets replicated, then
> the request return. This is the same as the 'synchronous' setting except it 
> uses
> a pool of sockets, hence it is multithreaded. This is the fastest and safest
> configuration. To use this, also increase the nr of tcp threads that you have
> dealing with replication.
> >                               * Synchronous means that the thread that
> executes the request, is also the
> >                               thread the replicates the data to the other
> nodes, and will not return until all
> >                               nodes have received the information.
> >                               * Asynchronous means that there is a specific
> 'sender' thread for each cluster node,
> >                               so the request thread will queue the 
> > replication
> request into a "smart" queue,
> >                               and then return to the client.
> >                               The "smart" queue is a queue where when a
> session is added to the queue, and the same session
> >                               already exists in the queue from a previous
> request, that session will be replaced
> >                               in the queue instead of replicating two
> requests. This almost never happens, unless there is a
> >                               large network delay.
> >        -->
> >        <!--
> >            When configuring for clustering, you also add in a valve to catch
> all the requests
> >            coming in, at the end of the request, the session may or may not 
> > be
> replicated.
> >            A session is replicated if and only if all the conditions are 
> > met:
> >            1. useDirtyFlag is true or setAttribute or removeAttribute has 
> > been
> called AND
> >            2. a session exists (has been created)
> >            3. the request is not trapped by the "filter" attribute
> >
> >            The filter attribute is to filter out requests that could not
> modify the session,
> >            hence we don't replicate the session after the end of this 
> > request.
> >            The filter is negative, ie, anything you put in the filter, you
> mean to filter out,
> >            ie, no replication will be done on requests that match one of the
> filters.
> >            The filter attribute is delimited by ;, so you can't escape out ;
> even if you wanted to.
> >
> >            filter=".*\.gif;.*\.js;" means that we will not replicate the
> session after requests with the URI
> >            ending with .gif and .js are intercepted.
> >
> >            The deployer element can be used to deploy apps cluster wide.
> >            Currently the deployment only deploys/undeploys to working 
> > members
> in the cluster
> >            so no WARs are copied upons startup of a broken node.
> >            The deployer watches a directory (watchDir) for WAR files when
> watchEnabled="true"
> >            When a new war file is added the war gets deployed to the local
> instance,
> >            and then deployed to the other instances in the cluster.
> >            When a war file is deleted from the watchDir the war is 
> > undeployed
> locally
> >            and cluster wide
> >        -->
> >
> >        <!--
> >        <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
> >
> managerClassName="org.apache.catalina.cluster.session.DeltaManager"
> >                 expireSessionsOnShutdown="false"
> >                 useDirtyFlag="true"
> >                 notifyListenersOnReplication="true">
> >
> >            <Membership
> >                className="org.apache.catalina.cluster.mcast.McastService"
> >                mcastAddr="228.0.0.4"
> >                mcastPort="45564"
> >                mcastFrequency="500"
> >                mcastDropTime="3000"/>
> >
> >            <Receiver
> >                
> > className="org.apache.catalina.cluster.tcp.ReplicationListener"
> >                tcpListenAddress="auto"
> >                tcpListenPort="4001"
> >                tcpSelectorTimeout="100"
> >                tcpThreadCount="6"/>
> >
> >            <Sender
> >                
> > className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
> >                replicationMode="pooled"
> >                ackTimeout="15000"/>
> >
> >            <Valve 
> > className="org.apache.catalina.cluster.tcp.ReplicationValve"
> >                   
> > filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
> >
> >            <Deployer
> className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
> >                      tempDir="/tmp/war-temp/"
> >                      deployDir="/tmp/war-deploy/"
> >                      watchDir="/tmp/war-listen/"
> >                      watchEnabled="false"/>
> >        </Cluster>
> >        -->
> >
> >
> >
> >        <!-- Normally, users must authenticate themselves to each web app
> >             individually.  Uncomment the following entry if you would like
> >             a user to be authenticated the first time they encounter a
> >             resource protected by a security constraint, and then have that
> >             user identity maintained across *all* web applications contained
> >             in this virtual host. -->
> >        <!--
> >        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
> >        -->
> >
> >        <!-- Access log processes all requests for this virtual host.  By
> >             default, log files are created in the "logs" directory relative 
> > to
> >             $CATALINA_HOME.  If you wish, you can specify a different
> >             directory with the "directory" attribute.  Specify either a 
> > relative
> >             (to $CATALINA_HOME) or absolute path to the desired directory.
> >        -->
> >        <!--
> >        <Valve className="org.apache.catalina.valves.AccessLogValve"
> >                 directory="logs"  prefix="localhost_access_log." 
> > suffix=".txt"
> >                 pattern="common" resolveHosts="false"/>
> >        -->
> >
> >        <!-- Access log processes all requests for this virtual host.  By
> >             default, log files are created in the "logs" directory relative 
> > to
> >             $CATALINA_HOME.  If you wish, you can specify a different
> >             directory with the "directory" attribute.  Specify either a 
> > relative
> >             (to $CATALINA_HOME) or absolute path to the desired directory.
> >             This access log implementation is optimized for maximum 
> > performance,
> >             but is hardcoded to support only the "common" and "combined" 
> > patterns.
> >        -->
> >        <!--
> >        <Valve 
> > className="org.apache.catalina.valves.FastCommonAccessLogValve"
> >                 directory="logs"  prefix="localhost_access_log." 
> > suffix=".txt"
> >                 pattern="common" resolveHosts="false"/>
> >        -->
> >
> >      </Host>
> >
> >    </Engine>
> >
> >  </Service>
> >
> ></Server>
> >
> >
> >
> >
> >
> >
> >Scott K Purcell | Developer | VERTIS |
> >555 Washington Ave. 4th Floor | St. Louis, MO 63101 |
> >314.588.0720 Ext:1320 | [EMAIL PROTECTED] | http://www.vertisinc.com
> <http://www.vertisinc.com/>
> >
> >Vertis is the premier provider of targeted advertising, media, and
> >marketing services that drive consumers to marketers more effectively.
> >
> >
> >
> >
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
"Religion is what keeps the poor from murdering the rich"  Napoleon
Bonaparte

"Everybody knows something: Nobody knows everything" Dusty Baker

"No matter how cynical you become, its never enough to keep up"-Lily Tomlin

"It's useless to attempt to reason a man out of a thing he was never
reasoned into."-- Jonathan Swift

Robert W. Harrison, III, MD
91 Berkeley st.
Rochester, NY 14607
585/271-6878 (O)
585/752-1365 (Cell)
585/473-5643 (F)
http://www.beeslender.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to