You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by er...@bbraun.com on 2003/08/28 08:44:21 UTC

configuring sqlserver datasource

hi,

i want to set up a DataSource for MS SQLServer 2000 at Tomcat 5.0.9 but 
the DataSource is allways null - any hints welcome


server.xml

<Server port="8005" shutdown="SHUTDOWN" debug="0">


  <!-- Comment out these entries to disable JMX MBeans support -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"/>
  <Listener 
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
            debug="0"/>

  <!-- 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">
    </Resource>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>

  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector 
port="8080"               maxThreads="150" minSpareThreads="25" 
maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" />
    <Connector port="8009" 
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />
    <Engine name="Catalina" defaultHost="localhost" debug="0">
      <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="catalina_log." suffix=".txt"
              timestamp="true"/>
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 debug="0" resourceName="UserDatabase"/>
      <Host name="localhost" debug="0" appBase="webapps"
       unpackWARs="true" autoDeploy="true">
        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="logs"  prefix="localhost_log." suffix=".txt"
            timestamp="true"/>
        <Context path="/WebsiteBenchmark" docBase="WebsiteBenchmark" 
debug="5" reloadable="true" crossContext="true">

          <Logger className="org.apache.catalina.logger.FileLogger" 
prefix="localhost_WebsiteBenchmark_log." suffix=".txt" timestamp="true"/>

          <Resource name="jdbc/WebsiteBenchmark" auth="Container" 
type="javax.sql.DataSource"/>

          <ResourceParams name="jdbc/WebsiteBenchmark">
            <parameter>
              <name>factory</name>
 <value>com.microsoft.jdbcx.sqlserver.SQLServerDataSourceFactory</value>
            </parameter>

            <parameter>
              <name>maxActive</name>
              <value>100</value>
            </parameter>

            <parameter>
              <name>maxIdle</name>
              <value>30</value>
            </parameter>

            <parameter>
              <name>maxWait</name>
              <value>10000</value>
            </parameter>

            <parameter>
              <name>username</name>
              <value>websitebenchmark</value>
            </parameter>
            <parameter>
              <name>password</name>
              <value>redheader</value>
            </parameter>

            <parameter>
              <name>driverClassName</name>
              <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
            </parameter>

            <parameter>
              <name>url</name>
              <value>jdbc:microsoft:sqlserver://212.0.21.223:1433</value>
            </parameter>
          </ResourceParams>
        </Context>


      </Host>

    </Engine>

  </Service>

</Server>


web.xml

<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 
2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">


<web-app>

    <display-name>B. Braun Melsungen AG - Website Benchmark</display-name>
    <description>monitors website performance</description> 
 
    <servlet> 
      <servlet-name>WebsiteBenchmark</servlet-name> 
 
<servlet-class>com.bbraun.websitebenchmark.WebsiteBenchmark</servlet-class>
    </servlet> 
 
    <servlet-mapping> 
      <servlet-name>WebsiteBenchmark</servlet-name> 
            <url-pattern>/*</url-pattern> 
        </servlet-mapping> 

        <welcome-file-list>
                <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>

        <error-page>
                <error-code>404</error-code>
                <location>/error.jsp</location>
        </error-page>

        <resource-ref>
                <description>
                Website Benchmark DataSource
                </description>
                <res-ref-name>
                jdbc/WebsiteBenchmark
                </res-ref-name>
                <res-type>
                javax.sql.DataSource
                </res-type>
                <res-auth>
                Container
                </res-auth>
        </resource-ref>
</web-app>



code

        private void testDB(HttpServletResponse res) {

                PrintWriter out = null;
                try {
                        out = res.getWriter();
                } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace(out);
                }
                out.println("testDB");
                out.flush();

                DataSource ds = null;
                InitialContext ctx = null;
                try {
                        ctx = new InitialContext();
                } catch (NamingException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace(out);
                }
                try {
                        out.println("context: "+ctx.toString()+", "+ctx.getNameInNamespace());
                } catch (NamingException e2) {
                        // TODO Auto-generated catch block
                        e2.printStackTrace(out);
                }
                out.flush();
                try {
                        ds = (DataSource)ctx.lookup("java:comp/env/jdbc/WebsiteBenchmark");
                } catch (NamingException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace(out);
                }
                out.println(ds);
                out.flush();
                try {
                        Connection con = ds.getConnection();
                        Statement stmt = con.createStatement();
                        ResultSet rs = stmt.executeQuery("select * from testvalues");
                        out.write("results returned from test query");
                        ResultSetMetaData md = rs.getMetaData();
                        out.write("cols: "+md.getColumnCount());
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace(out);
                }
                out.flush();
                out.close();
        }

output

testDB
context: javax.naming.InitialContext@102b2b6, java:
null

Re: configuring sqlserver datasource

Posted by Sasha Borodin <sa...@whoissasha.com>.
I don't specify MS's factory, so it uses the default one I think;  this
works for me:

    <Resource auth="Container" name="jdbc/WebsiteBenchmark"
scope="Shareable" type="javax.sql.DataSource"/>
    
    <ResourceParams name="jdbc/WebsiteBenchmark">
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>4</value>
      </parameter>
      <parameter>
        <name>driverName</name>
        <value>jdbc:microsoft:sqlserver</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:microsoft:sqlserver://you.sql.server:1433</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>password</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>2</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>username</value>
      </parameter>
    </ResourceParams>

On 8/28/03 1:44, "erik.itter@bbraun.com" <er...@bbraun.com> wrote:

> hi,
> 
> i want to set up a DataSource for MS SQLServer 2000 at Tomcat 5.0.9 but
> the DataSource is allways null - any hints welcome
> 
> 
> server.xml
> 
> <Server port="8005" shutdown="SHUTDOWN" debug="0">
> 
> 
> <!-- Comment out these entries to disable JMX MBeans support -->
> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
>           debug="0"/>
> <Listener 
> className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
>           debug="0"/>
> 
> <!-- 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">
>   </Resource>
>   <ResourceParams name="UserDatabase">
>     <parameter>
>       <name>factory</name>
>       <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
>     </parameter>
>     <parameter>
>       <name>pathname</name>
>       <value>conf/tomcat-users.xml</value>
>     </parameter>
>   </ResourceParams>
> 
> </GlobalNamingResources>
> <Service name="Catalina">
>   <Connector 
> port="8080"               maxThreads="150" minSpareThreads="25"
> maxSpareThreads="75"
>              enableLookups="false" redirectPort="8443" acceptCount="100"
>              debug="0" connectionTimeout="20000"
>              disableUploadTimeout="true" />
>   <Connector port="8009"
>              enableLookups="false" redirectPort="8443" debug="0"
>              protocol="AJP/1.3" />
>   <Engine name="Catalina" defaultHost="localhost" debug="0">
>     <Logger className="org.apache.catalina.logger.FileLogger"
>             prefix="catalina_log." suffix=".txt"
>             timestamp="true"/>
>     <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>                debug="0" resourceName="UserDatabase"/>
>     <Host name="localhost" debug="0" appBase="webapps"
>      unpackWARs="true" autoDeploy="true">
>       <Logger className="org.apache.catalina.logger.FileLogger"
>                directory="logs"  prefix="localhost_log." suffix=".txt"
>           timestamp="true"/>
>       <Context path="/WebsiteBenchmark" docBase="WebsiteBenchmark"
> debug="5" reloadable="true" crossContext="true">
> 
>         <Logger className="org.apache.catalina.logger.FileLogger"
> prefix="localhost_WebsiteBenchmark_log." suffix=".txt" timestamp="true"/>
> 
>         <Resource name="jdbc/WebsiteBenchmark" auth="Container"
> type="javax.sql.DataSource"/>
> 
>         <ResourceParams name="jdbc/WebsiteBenchmark">
>           <parameter>
>             <name>factory</name>
> <value>com.microsoft.jdbcx.sqlserver.SQLServerDataSourceFactory</value>
>           </parameter>
> 
>           <parameter>
>             <name>maxActive</name>
>             <value>100</value>
>           </parameter>
> 
>           <parameter>
>             <name>maxIdle</name>
>             <value>30</value>
>           </parameter>
> 
>           <parameter>
>             <name>maxWait</name>
>             <value>10000</value>
>           </parameter>
> 
>           <parameter>
>             <name>username</name>
>             <value>websitebenchmark</value>
>           </parameter>
>           <parameter>
>             <name>password</name>
>             <value>redheader</value>
>           </parameter>
> 
>           <parameter>
>             <name>driverClassName</name>
>             <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
>           </parameter>
> 
>           <parameter>
>             <name>url</name>
>             <value>jdbc:microsoft:sqlserver://212.0.21.223:1433</value>
>           </parameter>
>         </ResourceParams>
>       </Context>
> 
> 
>     </Host>
> 
>   </Engine>
> 
> </Service>
> 
> </Server>
> 
> 
> web.xml
> 
> <?xml version="1.0" ?>
> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
> 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
> 
> 
> <web-app>
> 
>   <display-name>B. Braun Melsungen AG - Website Benchmark</display-name>
>   <description>monitors website performance</description>
> 
>   <servlet> 
>     <servlet-name>WebsiteBenchmark</servlet-name>
> 
> <servlet-class>com.bbraun.websitebenchmark.WebsiteBenchmark</servlet-class>
>   </servlet> 
> 
>   <servlet-mapping>
>     <servlet-name>WebsiteBenchmark</servlet-name>
>           <url-pattern>/*</url-pattern>
>       </servlet-mapping>
> 
>       <welcome-file-list>
>               <welcome-file>index.jsp</welcome-file>
>       </welcome-file-list>
> 
>       <error-page>
>               <error-code>404</error-code>
>               <location>/error.jsp</location>
>       </error-page>
> 
>       <resource-ref>
>               <description>
>               Website Benchmark DataSource
>               </description>
>               <res-ref-name>
>               jdbc/WebsiteBenchmark
>               </res-ref-name>
>               <res-type>
>               javax.sql.DataSource
>               </res-type>
>               <res-auth>
>               Container
>               </res-auth>
>       </resource-ref>
> </web-app>
> 
> 
> 
> code
> 
>       private void testDB(HttpServletResponse res) {
> 
>               PrintWriter out = null;
>               try {
>                       out = res.getWriter();
>               } catch (IOException e1) {
>                       // TODO Auto-generated catch block
>                       e1.printStackTrace(out);
>               }
>               out.println("testDB");
>               out.flush();
> 
>               DataSource ds = null;
>               InitialContext ctx = null;
>               try {
>                       ctx = new InitialContext();
>               } catch (NamingException e) {
>                       // TODO Auto-generated catch block
>                       e.printStackTrace(out);
>               }
>               try {
>                       out.println("context: "+ctx.toString()+",
> "+ctx.getNameInNamespace());
>               } catch (NamingException e2) {
>                       // TODO Auto-generated catch block
>                       e2.printStackTrace(out);
>               }
>               out.flush();
>               try {
>                       ds =
> (DataSource)ctx.lookup("java:comp/env/jdbc/WebsiteBenchmark");
>               } catch (NamingException e) {
>                       // TODO Auto-generated catch block
>                       e.printStackTrace(out);
>               }
>               out.println(ds);
>               out.flush();
>               try {
>                       Connection con = ds.getConnection();
>                       Statement stmt = con.createStatement();
>                       ResultSet rs = stmt.executeQuery("select * from
> testvalues");
>                       out.write("results returned from test query");
>                       ResultSetMetaData md = rs.getMetaData();
>                       out.write("cols: "+md.getColumnCount());
>               } catch (SQLException e) {
>                       // TODO Auto-generated catch block
>                       e.printStackTrace(out);
>               }
>               out.flush();
>               out.close();
>       }
> 
> output
> 
> testDB
> context: javax.naming.InitialContext@102b2b6, java:
> null
>