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]>