Red de conocimiento informático - Problemas con los teléfonos móviles - Tomcat 6..0.20 configuración del grupo de conexiones base de datos SQL Server 2000

Tomcat 6..0.20 configuración del grupo de conexiones base de datos SQL Server 2000

Escribí esto yo mismo y funciona bien, consúltalo.

Establecer y cerrar conexiones de bases de datos es una operación que consume muchos recursos. La solución para el agrupamiento de conexiones de bases de datos es crear suficientes conexiones de bases de datos cuando se inicia la aplicación y formar estas conexiones en un grupo de conexiones, en el que la aplicación solicita, usa y libera conexiones dinámicamente. Las solicitudes de conexión que excedan la cantidad de conexiones en el grupo deben ponerse en cola en la cola de solicitudes. La aplicación aumentará o disminuirá dinámicamente la cantidad de conexiones en el grupo según el uso de la conexión.

La tecnología de agrupación de conexiones puede reutilizar tantos recursos que consumen memoria como sea posible, ahorrando así memoria en gran medida y mejorando la eficiencia del servidor.

Las diferentes versiones de Tomcat crean grupos de conexiones de diferentes maneras. La siguiente descripción se basa en tomcat5.5 + MS sql server 2k.

Paso 1: Coloque el controlador de la base de datos (tres archivos jar) en $tomcat$/common/lib.

Paso 2: abra $tomcat$/conf/server.xml y agregue el siguiente código en host

El siguiente es un fragmento de referencia:

name="jdbc/xxx"

type="javax.sql.DataSource"

nombre de usuario="sa"

contraseña=""

driverClassName="com.microsoft.jdbc. sqlserver .SQLServerDriver"

url="jdbc:microsoft:sqlserver://localhost:" />

url="jdbc:microsoft:sqlserver://localhost.1433;DatabaseName = base de datos"

maxActive="300"

maxIdle="100"

maxWait="5000"

removeAbandoned="true "

removeAbandonedTimeout="100"

logAbandoned="true"

/>

Nota: En Tomcat 6.0, debe agregar una oración después de "...". ="Contenedor" funcionará.

maxActive es el número máximo de conexiones activas, el valor aquí es 300, es decir, hay hasta 300 conexiones de base de datos al mismo tiempo.

maxIdle es el número máximo de conexiones inactivas. El valor 100 aquí significa que incluso si no hay conexión a la base de datos, aún puede mantener 100 conexiones inactivas sin borrarse y siempre está en estado de espera.

MaxWait es el número máximo de segundos a esperar. El valor aquí es 5000, lo que significa que el tiempo de espera se agota después de 5 segundos. También puede ser -1, lo que significa que esperará indefinidamente hasta que se agote el tiempo de espera. .

removeAbandoned="true"

removeAbandonedTimeout="100"

logAbandoned="true"

Las tres oraciones anteriores también deben Para agregar, el objetivo principal es que cuando el número de usuarios simultáneos exceda el número predeterminado de conexiones, algunas conexiones caducarán debido a la espera y estos enlaces fallidos deben reciclarse a tiempo. 100 significa 100 segundos.

Utilizado en connpool.jsp.

Lo siguiente es un fragmento citado:

<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>< / p>

<%@ página import="" javax.InitialContext" %>

<%@ página import="java.sql.*"%>

< html >

<%

Contexto ctx = nuevoContextoinicial();

Fuente de datos ds = (Fuente de datos)ctx . lookup("java:comp/env/jdbc/xxx");

Conexión conn = ds.getConnection()

Declaración stmt=conn.createStatement(ResultSet)(); createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="seleccionar * de noticias"

ResultSet rs=stmt.executeQuery(sql); p > while(rs.next()) {%>

El contenido del primer campo es: <%=rs.getString(1)%>

<%out.print("Operación de la base de datos exitosa, felicitaciones");%>

<%rs.close(); stmt .close();

conn.close();

%>

Tenga en cuenta que jdbc/xxx en ambos fragmentos de código es el nombre del grupo de conexiones, así que sea coherente.

Por supuesto, también podemos encapsular la conexión y usarla como una clase combinada con dataconn.java que discutimos antes, aquí los combino en una clase. /p>

El siguiente es un fragmento de referencia:

paquete dataconn;

importar java.sql.*;

importar javax.naming.* ;

importar javax.sql.DataSource;

importar javax.sql.DataSource;

importar javax.sql.DataSource.

InitialContext();

Contexto envCtx = (Contexto) initCtx.lookup("java:comp/env");

DataSource ds = (DataSource)envCtx.lookup("jdbc / xxx"); ;

return ds.getConnection();

}

catch( SQLException e)

{

lanzar e;

}

catch( NamingException e)

{

lanzar e;

}

}

// Actualizar datos

public void ejecutarUpdate(String sql) {

intentar {

conn = getConnection();

}

catch (Excepción ex) {

ex.printStackTrace();

}

intente {

stmt = conn. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

stmt.executeUpdate(sql);

}

catch( Excepción ex) {

ex.

catch( SQLException ex) {

System.err. println("aq.executeUpdate: " + ex.getMessage());

System.err.println("aq.executeUpadatestrSQL." + sql);

}

// Consultar datos

public ResultSet enableQuery(String sql) {

rs = null;

try {

conn = getConnection();

}

catch (Excepción ex) {

ex.printStackTrace();

}

intente {

stmt = conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs = stmt.executeQuery(sql );

}

catch(Excepción ex) {

ex.

catch(SQLException ex) {

System.err.println("aq.executeQuery: " + ex.getMessage());

System.err.println("aq.executeQuerystrSQL: " + sql);

}

return rs;

}

público vo

id closeStmt()

{

prueba{

if(stmt!=null){

stmt.close();

}

}

catch(SQLExSql).printStackTrace();

}

}

public void closeConn()

{

prueba{

if (conn!= null){

conn. close();

}

}

catch(SQLException e){

e.printStackTrace();

}

}

}

}

Además, debe asegurarse de que su base de datos SQLServer esté funcionando bien antes de poder Úselo. Utilice el siguiente método para probar

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java. sql.SQL.Sql.Sql" %>