Suggestion. Dont use a heavy duty database with a free Web Server.  Get
Weblogic etc.  I hope you arent using tomcat for anything
except your desktop.

L Marcus

----- Original Message -----
From: "Barry Roberts" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, January 08, 2002 4:47 PM
Subject: Newbie mod_webapp/Oracle/jndi question


> I'm new to the jndi part of J2EE and to tomcat.  I have my app almost
> working in tomcat, but it needs to use Oracle.  I have a sample
> servlet that connects to the Oracle database just fine, but only if I
> connect directly to the tomcat server's http connector.
>
> If I hit the servlet (below) throught apache, the DataSource returned
> is null.  But no exception is thrown by javax.naming* calls.  I have
> played endlessly with my server.xml to get the oracle resource, and my
> latest one is included below.
>
> My main question is, how do I configure this to use Oracle using
> mod_webapp?  I would also like to know if it is possible to configure
> tomcat so that I can use it through apache AND directly through the
> http connector.
>
> Thanks in advance,
> Barry Roberts
>
> <!-- 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" debug="0">
>
>
>   <!-- 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="Tomcat-Standalone">
>
>     <!-- 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
8180.
>          You can also enable an SSL HTTP/1.1 Connector on port 8543 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 4.0 documentation bundle for more detailed
>          instructions):
>          * 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-SSL1 HTTP/1.1 Connector on port 8180 -->
>     <Connector
className="org.apache.catalina.connector.http.HttpConnector"
>                port="8180" minProcessors="5" maxProcessors="75"
>                enableLookups="false" redirectPort="8543"
>                acceptCount="10" debug="0" connectionTimeout="60000"/>
>     <!-- Note : To disable connection timeouts, set connectionTimeout
value
>      to -1 -->
>
>     <!-- Define an SSL HTTP/1.1 Connector on port 8543 -->
> <!--
>     <Connector
className="org.apache.catalina.connector.http.HttpConnector"
>                port="8543" minProcessors="5" maxProcessors="75"
>                enableLookups="false"
>        acceptCount="10" debug="0" scheme="https" secure="true">
>       <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
>                clientAuth="false" protocol="TLS"/>
>     </Connector>
> -->
>     <!-- Define an AJP 1.3 Connector on port 8109 -->
>     <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
>                port="8109" minProcessors="5" maxProcessors="75"
>                acceptCount="10" debug="0"/>
>     <!-- Define a Proxied HTTP/1.1 Connector on port 8181 -->
>     <!-- See proxy documentation for more information about using
this. -->
>     <!--
>     <Connector
className="org.apache.catalina.connector.http.HttpConnector"
>                port="8181" minProcessors="5" maxProcessors="75"
>                enableLookups="true"
>                acceptCount="10" debug="0" connectionTimeout="60000"
>                proxyPort="80"/>
>     -->
>
>     <!-- Define a non-SSL HTTP/1.0 Test Connector on port 8182 -->
>     <!--
>     <Connector
className="org.apache.catalina.connector.http10.HttpConnector"
>                port="8182" minProcessors="5" maxProcessors="75"
>                enableLookups="true" redirectPort="8543"
>                acceptCount="10" debug="0"/>
>     -->
>
>     <!-- 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). -->
>
>     <!-- Define the top level container in our container hierarchy -->
>     <Engine name="Standalone" defaultHost="localhost" debug="0">
>
>       <!-- 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.3
>            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"/>
>       -->
>
>       <!-- Global logger unless overridden at lower levels -->
>       <Logger className="org.apache.catalina.logger.FileLogger"
>               prefix="catalina_log." suffix=".txt"
>               timestamp="true"/>
>
>       <!-- Because this Realm is here, an instance will be shared
globally -->
>
>       <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" debug="99"
>              driverName="org.gjt.mm.mysql.Driver"
>
connectionURL="jdbc:mysql://localhost/authority?user=test;password=test"
>               userTable="users" userNameCol="user_name"
userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
>
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
>              driverName="oracle.jdbc.driver.OracleDriver"
>
connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL?user=scott;password=tige
r"
>               userTable="users" userNameCol="user_name"
userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
>
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
>              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 -->
>       <Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true">
>
>         <!-- 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"
>                    debug="0"/>
>         -->
>
>         <!-- 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"/>
>
>         <!-- Logger shared by all Contexts related to this virtual host.
By
>              default (when using FileLogger), 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.-->
>         <Logger className="org.apache.catalina.logger.FileLogger"
>                  directory="logs"  prefix="localhost_log." suffix=".txt"
>         timestamp="true"/>
>
>         <!-- Define properties for each web application.  This is only
needed
>              if you want to set non-default properties, or have web
application
>              document roots in places other than the virtual host's
appBase
>              directory.  -->
>
>         <!-- Tomcat Root Context -->
>         <!--
>           <Context path="" docBase="ROOT" debug="0"/>
>         -->
>
>         <!-- Tomcat Manager Context -->
>         <Context path="/manager" docBase="manager"
>          debug="0" privileged="true"/>
>
>
>         <!-- Tomcat Examples Context -->
>         <Context path="/examples" docBase="examples" debug="0"
>                  reloadable="true">
>           <Logger className="org.apache.catalina.logger.FileLogger"
>                      prefix="localhost_examples_log." suffix=".txt"
>           timestamp="true"/>
> </Context>
>
>
>       </Host>
>
>     </Engine>
>
>   </Service>
>
>   <!-- The MOD_WEBAPP connector is used to connect Apache 1.3 with Tomcat
4.0
>        as its servlet container. Please read the README.txt file coming
with
>        the WebApp Module distribution on how to build it.
>        (Or check out the "jakarta-tomcat-connectors/webapp" CVS
repository)
>
>        To configure the Apache side, you must ensure that you have the
>        "ServerName" and "Port" directives defined in "httpd.conf".  Then,
>        lines like these to the bottom of your "httpd.conf" file:
>
>          LoadModule webapp_module libexec/mod_webapp.so
>          WebAppConnection warpConnection warp localhost:8008
>          WebAppDeploy examples warpConnection /examples/
>
>        The next time you restart Apache (after restarting Tomcat, if
needed)
>        the connection will be established, and all applications you make
>        visible via "WebAppDeploy" directives can be accessed through
Apache.
>   -->
>
>   <!-- Define an Apache-Connector Service -->
>   <Service name="Tomcat-Apache">
>
>     <Connector
className="org.apache.catalina.connector.warp.WarpConnector"
>      port="8008" minProcessors="5" maxProcessors="75"
>      enableLookups="true"
>      acceptCount="10" debug="0"/>
>
>     <!-- Replace "localhost" with what your Apache "ServerName" is set
to -->
>     <Engine className="org.apache.catalina.connector.warp.WarpEngine"
>      name="tmprepo" debug="0" appBase="webapps">
>
>       <!-- Global logger unless overridden at lower levels -->
>       <Logger className="org.apache.catalina.logger.FileLogger"
>               prefix="apache_log." suffix=".txt"
>               timestamp="true"/>
>
>       <!-- Because this Realm is here, an instance will be shared
globally -->
>       <Realm className="org.apache.catalina.realm.MemoryRealm" />
>       <!-- Define the default virtual host -->
>       <Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true">
>         <!-- ILXCT Context -->
>         <Context path="/ilxct" docBase="ilxct" debug="0"
>                  reloadable="true">
>           <Logger className="org.apache.catalina.logger.FileLogger"
>                      prefix="localhost_ilxct_log." suffix=".log"
>           timestamp="true"/>
>   <Resource name="Oracle" auth="Container"
>     type="javax.sql.DataSource"/>
>   <ResourceParams name="Oracle">
>     <parameter>
>       <name>user</name>
>       <value>*****</value>
>     </parameter>
>     <parameter>
>       <name>password</name>
>       <value>*****</value>
>     </parameter>
>     <parameter>
>       <name>driverClassName</name>
>       <value>oracle.jdbc.driver.OracleDriver</value>
>     </parameter>
>     <parameter>
>       <name>driverName</name>
>       <value>jdbc:oracle:thin:@192.168.2.60:1521:mhsdev1</value>
>     </parameter>
>   </ResourceParams>
>   <Resource name="XnOracle" auth="Container"
>     type="javax.sql.DataSource"/>
>   <ResourceParams name="XnOracle">
>     <parameter>
>       <name>user</name>
>       <value>*****</value>
>     </parameter>
>     <parameter>
>       <name>xactnet</name>
>       <value>*****</value>
>     </parameter>
>     <parameter>
>       <name>driverClassName</name>
>       <value>oracle.jdbc.driver.OracleDriver</value>
>     </parameter>
>     <parameter>
>       <name>driverName</name>
>       <value>jdbc:oracle:thin:@10.168.1.199:1521:xnt1</value>
>     </parameter>
>   </ResourceParams>
> </Context>
> </Host>
>
>     </Engine>
>
>   </Service>
>
> </Server>
>
> /* Modified from HelloWorldExample
>  *
>  */
>
> import java.io.*;
> import java.text.*;
> import java.util.*;
> import javax.naming.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> import javax.sql.DataSource;
> import java.sql.*;
>
>
> public class TestOracle extends HttpServlet {
>
>
>     public void doGet(HttpServletRequest request,
>                       HttpServletResponse response)
>         throws IOException, ServletException
>     {
>         response.setContentType("text/html");
>         PrintWriter out = response.getWriter();
>
>         out.println("<html>");
>         out.println("<head>");
> out.println("<title>Test Oracle Connection</title>");
>         out.println("</head>");
>         out.println("<body bgcolor=\"white\">");
>         out.println("<body>");
>
> // note that all links are created to be relative. this
> // ensures that we can move the web application that this
> // servlet belongs to to a different place in the url
> // tree and not have any harmful side effects.
>
>         // XXX
>         // making these absolute till we work out the
>         // addition of a PathInfo issue
> try
> {
>     InitialContext ic = new InitialContext();
>     if (ic == null) {
> out.println("<h1>ic == null</h1>");
>     }
>     DataSource ds = (DataSource)ic.lookup("java:comp/env/Oracle");
>     if (ds == null) {
> out.println("<h1>ds == null</h1>");
>     }
>     Connection conn = ds.getConnection();
>     if (conn == null) {
> out.println("<h1>conn == null</h1>");
>     }
>     Statement stmt = conn.createStatement();
>
>     ResultSet rset = stmt.executeQuery("select * from configuration");
>     out.println("<table>");
>     while (rset.next())
>     {
> out.println("<tr><td>" + rset.getString(1) + "</td><td>" +
rset.getString(2)+"</td></tr>");
>     }
>     out.println("</table>");
>     rset.close();
>     stmt.close();
>     conn.close();
> }
> catch (Exception ex)
> {
>     out.println("<pre>");
>     ByteArrayOutputStream bytes = new ByteArrayOutputStream();
>     PrintStream exOut = new PrintStream(bytes);
>     System.setErr(exOut);
>     ex.printStackTrace();
>     out.println(bytes.toString());
>     exOut.close();
>     out.println("</pre>");
> }
>         out.println("<a href=\"/examples/servlets/index.html\">");
>         out.println("<img src=\"/examples/images/return.gif\" height=24 "
+
>                     "width=24 align=right border=0 alt=\"return\"></a>");
>         out.println("</body>");
>         out.println("</html>");
>     }
> }
>
>
>
> --
> To unsubscribe:   <mailto:[EMAIL PROTECTED]>
> For additional commands: <mailto:[EMAIL PROTECTED]>
> Troubles with the list: <mailto:[EMAIL PROTECTED]>
>


--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

Reply via email to