Durchbrechen Sie den JNDI-Verbindungspool (konfigurieren Sie den Verbindungspool über die Verwaltungsschnittstelle unter Tomcat5.5).
Autor:Eve Cole
Aktualisierungszeit:2009-07-03 16:56:20
Unterbrechen des JNDI-Verbindungspools - -
Nach mehreren Tagen harter Arbeit kann ich mich endlich mit dem Verbindungspool verbinden. Ich habe diesbezüglich auf viele Beiträge von Helden verwiesen. Jetzt werde ich einige Probleme aufschreiben, die in den letzten Tagen aufgetreten sind:
1. Legen Sie die drei JDBC-Treiber (muss) unter tomcat_homecommon ab, die von der Microsoft-Website heruntergeladen werden können. Der Standardbenutzername des installierten SQLSERVER2k ist sa und das Passwort ist leer, aber es spielt keine Rolle, ob das Passwort leer ist . Das bedeutet, dass es kein Passwort gibt, also müssen Sie den Benutzernamen und das Passwort in Ihrer URL angeben. Wenn ein Fehler auftritt, der nicht angegeben werden kann, liegt dies normalerweise daran, dass der Pfad nicht korrekt geschrieben ist Der Pfad von Tomcat ist tomcat_homewebapps, aber verwenden Sie 5.5.x. Befolgen Sie einfach die folgende Methode. Es ist nicht erforderlich, den Pfad zu konfigurieren, und es ist nicht erforderlich, die Referenz in youwebappWEB-INFweb.xml zu konfigurieren Datei. Die server.xml-Konfiguration der tomcat5.5.x-Version unterscheidet sich von der Konfiguration der tomcat5.0. Im Folgenden sind drei Konfigurationsmethoden in tomcat5.5.x aufgeführt. Wenn die Konfiguration falsch ist, javax.naming.NameNotFoundException: Name ist in diesem Kontext nicht gebunden Fehlermethode 1. Globaler Datenbankverbindungspool
1. Konfigurieren Sie den Verbindungspool über die Verwaltungsschnittstelle oder fügen Sie ihn direkt zu GlobalNamingResources in tomcatconfserver.xml hinzu
<Resource name="jdbc/mydb" type="javax.sql.DataSource" passwort="mypwd" driversClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" Benutzername="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
2. Fügen Sie Folgendes zum Kontext von tomcatwebappsmyappMETA-INFcontext.xml hinzu:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
Das ist es.
Methode 2. Globaler Datenbankverbindungspool
1. Das Gleiche wie oben
2. Fügen Sie Folgendes zum Kontext von tomcatconfcontext.xml hinzu:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
Methode 3: Der lokale Datenbankverbindungspool muss nur zum Kontext von tomcatwebappsmyappsMETA-INFcontext.xml hinzugefügt werden:
<Resource name="jdbc/mydb" type="javax.sql.DataSource" passwort="mypwd" driversClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" Benutzername="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
Parameterbeschreibung:
driveClassName: Der vollständige Name der JDBC-Treiberklasse;
maxActive: Die maximale Anzahl verfügbarer Instanzen, die gleichzeitig aus dem Verbindungspool zugewiesen werden können;
maxIdle: Die maximale Anzahl von Verbindungen, die gleichzeitig im Verbindungspool inaktiv sein können;
maxWait: maximale Zeitüberschreitung in Millisekunden;
Passwort: Benutzerpasswort;
URL: URL-Verbindung zu JDBC;
Benutzer: Benutzername;
validationQuery: Wird zum Abfragen inaktiver Verbindungen im Pool verwendet.
Die oben genannten drei Methoden sind alle unter Tomcat 5.5.4 verfügbar. Darüber hinaus ist der JDBC-Treiber von SQL Server SQL Server JDBC (SP3), der von der Microsoft-Website heruntergeladen wird.
4. Fehler org.apache.tomcat.dbcp.dbcp.SQLNestedException: PoolableConnectionFactory kann nicht erstellt werden ([Microsoft][SQLServer 2000-Treiber für JDBC]Fehler beim Einrichten des Sockets.) Dies ist ein kleines Problem, da mein SQLSERVER2K-Dienst auf manuell geändert wurde Sie müssen SQLSERVER2K nach jedem Start manuell starten, da es ohne Erinnerung gestartet wird und einige Fehler gemeldet werden. Wenn Sie SQLSERVER2K also häufig verwenden, ist es am besten, es nicht auf manuellen Start umzustellen.