Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
MYSQL und APACHE ????
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Wed Oct 01, 2003 11:00 am    Post subject: MYSQL und APACHE ???? Reply with quote

Hi!

Irgendwie find ich keine Lösung für mein problem. Und zwar möchte ich meine JSP-Seiten mit einer MYSQL-Datenbank verbinden. MYSQL läuft und die JSP-Seiten können auch angezeigt werden. Aber wie stell ich denn jetzt die Verbindung her?
Den Java-Code dafür kenn ich. Mein Problem ist, dass ich nicht weiß, wo zum Geier ich den Treiber "mm.mysql-2.0.13-bin.jar" hin kopieren muß, bzw. wie ich meinem Apache klarmache, das er diesen bitte benutzen soll.
Ich bin mir sicher, ihr könnt mir helfen.

Gruß,
barthi
Back to top
View user's profile Send private message
swain
Tux's lil' helper
Tux's lil' helper


Joined: 30 Sep 2002
Posts: 136

PostPosted: Wed Oct 01, 2003 12:49 pm    Post subject: Reply with quote

mmh wenn mich meine grauen Zellen nicht ganz trüben, müßte doch deine Applikation die Verbindung aufbauen und nicht der webserver...

Ich bin kein Coder _nur_ ein Admin...
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Wed Oct 01, 2003 12:52 pm    Post subject: Reply with quote

Was für eine JSP-Engine benutzt du denn? Tomcat?

Dann wahlweise in

$CATALINA_HOME/common/lib (für alle webapps)
oder
$CATALINA_HOME/webapps/<deine applikation>/WEB-INF/lib
(nur für die eine webapp)

$CATALINA_HOME sollte das Installationsverzeichnis deines Tomcat sein, also das Verzeichnis, in dem sich z.B. auch das webapps - Verzeichnis befindet.

Weiß jetzt leider auch gerade nicht, wo das bei Gentoo ist, und kann auch gerade nicht gucken.

Hoffe, das hilft dir trotzdem.
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Wed Oct 01, 2003 4:39 pm    Post subject: Reply with quote

Also ich hag die Datei jetzt mal da hin kopiert. Aber es geht trotzdem nicht.
Wenn ich im Browser direkt den Port 3306 eingebe, bekomme ich folgende Meldung:
Code:
 + 4.0.13-logi=4,}UqZ, ÿBad handshake


Habt ihr vielleicht noch ein paar nähere Infos?
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Wed Oct 01, 2003 6:00 pm    Post subject: Reply with quote

Na, "es geht trotzdem nicht" ist ja ein bisschen vage...

Welche Fehlermeldung bekommst du denn in Java? Was sagt denn z.B. deine Tomcat-Logdatei $CATALINA_HOME/logs/catalina.out ?
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Wed Oct 01, 2003 6:40 pm    Post subject: Reply with quote

Alles zu Posten wäre zu viel. Hier mal die letzten Einträge. Ich hoffe, dass hilft bei der Fehlersuche. Ich kann leider nichts damit anfangen. Scheint aber irgendwie an den Zugriffsrechten zu hängen, oder?

Code:

Oct 1, 2003 12:03:56 AM org.apache.tomcat.util.net.PoolTcpEndpoint closeServerSocket
SEVERE: Caught exception trying to unlock accept.
java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
        at java.net.Socket.connect(Socket.java:426)
        at java.net.Socket.connect(Socket.java:376)
        at java.net.Socket.<init>(Socket.java:291)
        at java.net.Socket.<init>(Socket.java:119)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.closeServerSocket(PoolTcpEndpoint.java:326)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:397)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:529)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
        at java.lang.Thread.run(Thread.java:536)
Oct 1, 2003 12:03:56 AM org.apache.tomcat.util.net.PoolTcpEndpoint closeServerSocket
SEVERE: Caught exception trying to close socket.
java.lang.NullPointerException
        at org.apache.tomcat.util.net.PoolTcpEndpoint.closeServerSocket(PoolTcpEndpoint.java:338)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:397)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:529)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
        at java.lang.Thread.run(Thread.java:536)
Oct 1, 2003 12:03:56 AM org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket
WARNING: Reinitializing ServerSocket
Oct 1, 2003 12:06:10 AM org.apache.commons.modeler.Registry loadRegistry
INFO: Loading registry information
Oct 1, 2003 12:06:11 AM org.apache.commons.modeler.Registry getRegistry
INFO: Creating new Registry instance
Oct 1, 2003 12:06:14 AM org.apache.commons.modeler.Registry getServer
INFO: Creating MBeanServer
Oct 1, 2003 12:06:17 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on port 8080
mod_jk location: /etc/apache/extra modules/mod_jk.so
Make sure it is installed corectly or  set the config location
Using <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"  modJk="PATH_TO_MOD_JK.SO_OR_DLL" />
Can't find workers.properties at /opt/jakarta/tomcat/conf/workers.properties
Please install it in the default location or  set the config location
Using <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"  workersConfig="FULL_PATH" />
Starting service Tomcat-Standalone
Apache Tomcat/4.1.24

Oct 1, 2003 12:06:38 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on port 8080
Oct 1, 2003 12:06:38 AM org.apache.jk.common.ChannelSocket init
INFO: JK2: ajp13 listening on /0.0.0.0:8009
Oct 1, 2003 12:06:38 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=10/153  config=/opt/tomcat/conf/jk2.properties
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Stopping service Tomcat-Standalone
Oct 1, 2003 11:31:32 AM org.apache.commons.modeler.Registry loadRegistry
INFO: Loading registry information
Oct 1, 2003 11:31:32 AM org.apache.commons.modeler.Registry getRegistry
INFO: Creating new Registry instance
Oct 1, 2003 11:31:36 AM org.apache.commons.modeler.Registry getServer
INFO: Creating MBeanServer
Oct 1, 2003 11:31:39 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on port 8080
mod_jk location: /etc/apache/extra modules/mod_jk.so
Make sure it is installed corectly or  set the config location
Using <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"  modJk="PATH_TO_MOD_JK.SO_OR_DLL" />
Can't find workers.properties at /opt/jakarta/tomcat/conf/workers.properties
Please install it in the default location or  set the config location
Using <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"  workersConfig="FULL_PATH" />
Starting service Tomcat-Standalone
Apache Tomcat/4.1.24
Oct 1, 2003 11:32:00 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on port 8080
Oct 1, 2003 11:32:00 AM org.apache.jk.common.ChannelSocket init
INFO: JK2: ajp13 listening on /0.0.0.0:8009
Oct 1, 2003 11:32:00 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=10/153  config=/opt/tomcat/conf/jk2.properties
Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying t
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
WebappClassLoader:     Additional JARs have been added : 'mm.mysql-2.0.13-bin.jar'
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)
Back to top
View user's profile Send private message
Miggi
n00b
n00b


Joined: 20 Feb 2003
Posts: 24
Location: Switzerland

PostPosted: Wed Oct 01, 2003 7:58 pm    Post subject: Reply with quote

Ich glaube du bringst da grundsätzlich ein paar Sachen durcheinander...

Ich zeige dir einmal einen typischen Apache, Tomcat, MySql Aufbau auf:

Apache und Tomcat werden am Besten mit mod_jk2 verbunden. Dazu musst du den Ajp1.3 Connector in Tomcats Server.xml auskommentieren:

Code:

<Connector className="org.apache.ajp.tomcat4.Ajp13Connector" port="8009" ....... />


Der PoolTcpConnector wird eigentlich in Tomcat 3.x eingesetzt.

Dannach musst du den Worker im Propertiy-File unter $CATALINA_HOME/conf/jk/worker.properties definieren:

Code:

workers.tomcat_home=/opt/tomcat
workers.java_home=/opt/sun-jdk-1.4.2.01

worker.list = tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13


Das ganze geht natürlich auch mit einem Round-Robin Loadbalancing à la:

Code:

workers.tomcat_home=/opt/tomcat
workers.java_home=/opt/sun-jdk-1.4.2.01

worker.list = loadbalancer

worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=10

worker.tomcat2.port=8010
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=10

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1,tomcat2


Somit wäre eigentlich Tomcat konfiguriert, jetzt kommt Apache dran.
Zum lernen empfehle ich dir ApacheConf (hast du ja schon). Diesen gleich nach dem <Server> Tag definieren:

Code:

<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" modJk="/usr/apache2/modules/mod_jk.so" workersConfig="/opt/tomcat/conf/jk/workers.properties" jkLog="/opt/tomcat/logs/mod_jk.log" jkDebug="info" />


und ausserdem noch nach dem <Host> Tag:

Code:

<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"  append="true" />


ApacheConfig generiert ja $CATALINA_HOME/conf/auto/mod_jk.conf bei jedem Tomcat Start.

Im httpd.conf von Apache machst du jetzt einen Include:
Code:

Include $CATALINA_HOME/conf/auto/mod_jk.conf


Wenn du jetzt zuerst Tomcat startest und dannach den Apache, solltest du
bei einem Request auf http://localhost/ die Apache Startseite sehen, und bei http://localhost/index.jsp die von Tomcat.

Alles geklappt? Gut, dann gehts jetzt weiter mit Tomcat und MySQL. Voraussetzung ist natürlich, dass MySQL läuft und der User eingerichtet ist, sprich du dich mit dem MySQL Command-Line Client einloggen kannst. Auch muss der User dann die richtigen Privilegien um auf die Tabelle zuzugreifen haben.

Als graphischer Client kann ich dir TOra empfehlen. Ist zwar ursprünglich für Oracle, aber du kannst ihn auch für MySQL brauchen.

Den Zugriff auf MySQL definierst du am Besten via JNDI im server.xml:

Code:

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

<ResourceParams name="jdbc/dsTC">
  <parameter>
    <name>driverClassName</name>
    <value>org.gjt.mm.mysql.Driver</value>
  <parameter>
    <name>url</name>
    <value>jdbc:mysql://localhost/deineDatenbank</value>
  </parameter>
  <parameter>
    <name>username</name>
    <value>mysqluser</value>
  </parameter>
  <parameter>
    <name>password</name>
    <value>mysqlpass</value>
  </parameter>
  <parameter>
    <name>maxActive</name>
    <value>20</value>
  </parameter>
  <parameter>
    <name>maxIdle</name>
    <value>3000</value>
  </parameter>
  <parameter>
    <name>maxWait</name>
    <value>100</value>
  </parameter>
</ResourceParams>


Somit ist der Zugriff auf die DB schön ausgelagert und bei einem Umzug auf ein anderes RDBMs kannst du das schon anpassen ohne den Code nue kompilieren zu müssen.

Vor Tomcat 4.1.3 musst du zusätzlich noch den DataSource Pool angeben:

Code:

   ...
  <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
  </parameter>
   ...


und bei Tomcat < 4.1.3 das commons_dbcp.jar, commons-collection.jar und commons-pool-jar nach $CATALINA_HOME/common/lib kopieren. Dorhin gehört auch MySQL Treiber.

Nun musst du die Ressource noch deiner Applikation zur Verfügung stellen, und zwar im web.xml:

Code:

<resource-ref>
  <res-ref-name>jdbc/dsTC</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>


Nun ist eigentlich alles bereit, du kannst in einem Servlet oder auf einer JSP Seite auf MySQL zugreifen:

Code:

import java.sql.*;
import javax.sql.*;
import java.io.*;
import java.naming.InitialContext;
import java.naming.Context;

InitialContext initCtx = new InitialContext();
Datasource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/dsTC");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select * from deineTabelle");

while (rset.next()) {
  //mach was mit deinen Daten:
  System.out.println(rset.getString(1));
}

conn.close();
initCtx.close();


Ich hoffe das hilft dir weiter, viel Spass...

Gruss
Michi


Last edited by Miggi on Thu Oct 02, 2003 10:40 pm; edited 1 time in total
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Wed Oct 01, 2003 8:13 pm    Post subject: Reply with quote

WOW!!!
Das nen ich mal eine brilliante Antwort!

(Sorry übrigens für das 4-fach-Posting)

Edit ian!: Kein Problem. Habe es eben beseitigt. :wink:

Also, ich werd das gleich mal testen. Hab nur gleich zu dem letzten Teil mal ne Frage. Unter Windows hab folgendermaßen die Datenbankverbindung hergestellt:

Code:

Class.forName("org.gjt.mm.mysql.Driver");
String sDBURL = "jdbc:mysql://christians.homedns.org:3306/OOM2_963875";
connection = DriverManager.getConnection(sDBURL, "user", "pass");
return connection;


Funktioniert das jetzt immernoch?

Auf jeden FAll schon mal ein riesengroßes Danke Schön. :P

Ich melde mich
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Thu Oct 02, 2003 8:13 am    Post subject: Reply with quote

Na, jetzt geht's ja hier richtig um grundsätzliches... da muss ich doch auch mal meinen Senf dazugeben. Eigentlich solltest du aus der JSP ("Presentation Layer") gar keine Datenbankverbindungen aufbauen. Wenn du mit deinem Kram fertig bist, überleg doch mal, ein Framework wie Struts o.ä. zu verwenden, um ein bißchen Struktur in die Sache zu bringen.

Wenn du es so machst, wie miggi es vorschlägt, hättest du mit dem DriverManager und DB-URL in deinem Code nichts mehr zu tun. Schreibt er ja. Probier's mal aus. Funktionieren müsste es allerdings eigentlich schon, insbesondere, wenn es unter Windows schon funktioniert hat.

Wenn ich das mit meinen verquollenen Augen richtig sehe, sieht aber auf jeden Fall das
Code:

Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)

irgendwie nicht gut aus. Was sagt denn der mysql-command-line-client, wenn du mir dem User und dem Passwort reingehst? Klappt das?

http://www.mysql.com/doc/de/GRANT.html

Viel Erfolg,

Lutz
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Thu Oct 02, 2003 1:13 pm    Post subject: Reply with quote

Also zuerst mal: es geht immernoch nicht!

Zur Struktur kann ich nur sagen, das ich die Verbindung nicht in der JSP aufrufe, sondern in einer Tool-Class, wo auch alle anderen Datenbankfunktionen deklariert sind. Diese Klasse binde ich dann als Bean in der JSP ein.
Ich nutze auch noch andere Klasse, die sich zusammen mit der Tool-Class in einem Package befinden.

Ich finde das eigentlich strukturiert genug.

Aber nochmal zu meinem Problem:

Die Sache mit dem Invalid User hab ich behoben. Aber trotzdem kann ich keine Datenbankverbindung herstellen. Zu der Anleitung hab ich auch nochmal ne Frage:

Wo genau soll ich diesen Teil hinschreiben?

Quote:

Vor Tomcat 4.1.3 musst du zusätzlich noch den DataSource Pool angeben:

Code:

   ...
  <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
  </parameter>
   ...
 



Achja, was muß ich denn bei den Paramtern für die URL eingeben?
Code:

jdbc:mysql://localhost/OOM2_963875

oder
Code:

jdbc:mysql://meine.dyndns.org:3306/OOM2_963875
[/code]
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Thu Oct 02, 2003 2:12 pm    Post subject: Reply with quote

imho:

Struktur - war nur eine Anregung. Das mit der Datenbankverbindung sollte sowieso klappen, ob mit Struktur oder ohne.

Wo hinschreiben: $CATALINA_HOME/conf/server.xml. Ein Tutorial dazu findest du unter http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html

DB-URL: Wenn die DB auf dem gleichen Server läuft, benutze ich die erste (localhost-) Variante. Funktioniert wunderbar.

Wenn es nach wie vor nicht klappt, poste doch nochmal die aktuelle Java-Fehlermeldung.
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Thu Oct 02, 2003 2:41 pm    Post subject: Reply with quote

Also, es geht immernoch nicht. Aber ich hab mich geirrt. Das mit dem Benutzer geht doch nicht. Die Meldung ist noch die gleiche (siehe catalina.log). Aber in der Shell kann ich mich mit diesem User anmelden. da ist doch irgendwas faul.

Das steht in der Catalina.log:

Code:

Oct 2, 2003 3:57:12 PM org.apache.commons.modeler.Registry loadRegistry
INFO: Loading registry information
Oct 2, 2003 3:57:12 PM org.apache.commons.modeler.Registry getRegistry
INFO: Creating new Registry instance
Oct 2, 2003 3:57:15 PM org.apache.commons.modeler.Registry getServer
INFO: Creating MBeanServer
Oct 2, 2003 3:57:18 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on port 8080
mod_jk location: /etc/apache/extra modules/mod_jk.so
Make sure it is installed corectly or  set the config location
Using <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"  modJk="PATH_TO_MOD_JK.SO_OR_DL
Can't find workers.properties at /opt/jakarta/tomcat/conf/workers.properties
Please install it in the default location or  set the config location
Using <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"  workersConfig="FULL_PATH" />
Starting service Tomcat-Standalone
Apache Tomcat/4.1.24
Oct 2, 2003 3:57:38 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on port 8080
Oct 2, 2003 3:57:38 PM org.apache.jk.common.ChannelSocket init
INFO: JK2: ajp13 listening on /0.0.0.0:8009
Oct 2, 2003 3:57:38 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=6/153  config=/opt/tomcat/conf/jk2.properties
Invalid authorization specification: Access denied for user: 'barthi@localhost' (Using password: YES)


Die Java-Fehlermeldung ist nach wie vor eine NullPointerException. Ist ja auch logisch, wenn er nicht auf die Datenbank zugreifen kann. Falls du sie trotzdem braucht, kann ich sie ja posten!
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Thu Oct 02, 2003 3:52 pm    Post subject: Reply with quote

Puh, schade.

Ich weiß im Moment auch nicht recht weiter.

Wenn du noch ein bißchen Zeit hast, mach dochmal folgendes:

In mysql, guck dir mal die Tabelle "user" an (in der Datenbank "mysql"). Da müsste eine Zeile sein wo als host "localhost" steht und als user "barthi". Oder wie er halt heißt. Wenn es die Zeile nicht gibt, liegt's daran.

Ansonsten - bei dem Link, den ich weiter oben gepostet habe, zum Tutorial, gibt es ein mySQL-Beispiel zum Schritt-für-Schritt nachmachen. Mach das doch mal, guck, ob das funktioniert.

Zu guter letzt gibt es bei mysql.com auch noch einen Troubleshooting Guide zu dem Thema. Ob das hilft, kann ich nicht sagen, ich habe ihn zum Glück noch nicht gebraucht. Ist allerdings nicht Java-spezifisch. Der Link:

http://www.mysql.com/doc/de/Access_denied.html

Ich denke auch nochmal ein bißchen drüber nach,

Lutz
Back to top
View user's profile Send private message
Miggi
n00b
n00b


Joined: 20 Feb 2003
Posts: 24
Location: Switzerland

PostPosted: Thu Oct 02, 2003 10:39 pm    Post subject: Reply with quote

Das mit der Datasourcefactory brauchst du gar nicht, du hast ja Tomcat 4.1.24. Das ist nur bei tomcat <4.0.3 nötig, da dort ein anderer Pool bzw. kein Pool verwendet wird.

Hast du wirklich Zugriff auf die Datenbank? Bei einer Standartinstallation sieht das etwa so aus:

Code:

shell>mysql -u root -p mysql
Enter Password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 4.0.13-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>SHOW DATABASES;
+-------------+
| Database    |
+-------------+
| mysql       |
| test        |
+-------------+

mysql> USE test;
Database changed
mysql> SHOW TABLES;
Empty set (0.00 sec)


Du hast ja bei dir die Datenbank OOM2_963875, also mach

Code:

mysql> USE OOM2_963875;
Database changed
mysql> SHOW TABLES;
...


Achtung: Ich hab bei meinem letzten Posting einen Fehler gemacht:

Code:

  <parameter>
    <name>url</name>
    <value>jdbc:mysql://localhost/deineTabelle</value>
  </parameter>


Ich habs im vorigen Posting korrigiert, jetzt siehts so aus:

Code:

  <parameter>
    <name>url</name>
    <value>jdbc:mysql://localhost/deineDatenbank</value>
  </parameter>


Sorry...

Du solltes vieleicht auch mal die User checken:

Code:

mysql> USE mysql;
Database changed
mysql> SHOW TABLES;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv    |
| db              |
| func            |
| host            |
| tables_priv     |
| user            |
+-----------------+
6 rows in set (0.00 sec)

mysql>SELECT * FROM user;


Ist dein User wirklich erfasst?

Code:

...
| localhost | barthi | 18cf36000cae8138 | Y | Y | ....
| % | barthi | 18cf36000cae8138 | Y | Y | ....
...


So solltest du deinen Benutzer erstellt haben:

Code:

mysql> INSERT INTO user (Host,User,Password) VALUES('%',barthi',PASSWORD('password'));


Du musst das Passwort mit der Funktion PASSWORD() verschlüssel, es darf also nicht im Klartext erkennbar sein, wenn du ein SELECT * FROM user; machst!!

Ausserdem musst du dir Privilegien für den Zugriff auf die Datenbanken erstellen. Folgender Code richtet ein Superuser ein, welcher von überall Zugriff auf alle Datenbanken und Tabellen hat:

Code:

mysql> GRANT ALL PRIVILEGES ON *.* TO barthi@localhost IDENTIFIED BY 'passwort' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO barthi@"%" IDENTIFIED BY 'passwort' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;


Du findest viel genauere Beschreibungen aller Befehle und Vorgänge in der MySQL Doku unter: http://www.mysql.de/doc/de/index.html

Ich würde mich da mal durchlesen bis mit der Kommandozeile alles klappt und du die gewünschten Daten lesen und schreiben kannst. Erst dann macht es Sinn einen Schritt weiter zu gehen...
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Sat Oct 04, 2003 5:05 pm    Post subject: Reply with quote

Also, in der Catalina.log steht jetzt nicht mehr von wegen Access Denied.
Ich kann mich auch in der Shell mit folgenden Befehlen bei MYSQL anmelden:
Code:

mysql -u barthi -h christians.homedns.org -p
mysql -u barthi -p


Ich denke also, es hängt jetzt nicht mehr an der Berechtigung.
Vielleicht liegt es daran, das meine Applikation im flaschen Verzeichnis liegt. Zur Zeit befindet es sich in folgendem:
Code:

/opt/tomcat/webapps/lohn

Im lohn-Verzeichnis sind dann die ganzen JSP-Seiten und der Unterordner WEB-INF.
Vielleicht könnt ihr mir nochmal genau sagen, ob die Dateien da richtig stehen, oder ob ich sie woandern hin kopieren muß oder irgendwo einen Verweis angeben muß.

Ach ja, wenn ich folgende URL aufrufe
Code:

http://christians.homedns.org:3306/index.jsp

bekomm ich immernoch folgende Meldung im Browser dargestellt:
Code:

+ 4.0.13-log%Zzxj,<&K, ÿBad handshake



Danke,
barthi
Back to top
View user's profile Send private message
DaFire
n00b
n00b


Joined: 07 Nov 2002
Posts: 25

PostPosted: Sat Oct 04, 2003 7:24 pm    Post subject: Reply with quote

barthi wrote:

Ach ja, wenn ich folgende URL aufrufe
Code:

http://christians.homedns.org:3306/index.jsp

bekomm ich immernoch folgende Meldung im Browser dargestellt:
Code:

+ 4.0.13-log%Zzxj,<&K, ÿBad handshake


Der Port 3306 ist vom MySQL Server. Ein Browser kann damit überhaupt nichts anfangen.
Back to top
View user's profile Send private message
DaFire
n00b
n00b


Joined: 07 Nov 2002
Posts: 25

PostPosted: Sat Oct 04, 2003 7:24 pm    Post subject: Reply with quote

barthi wrote:

Ach ja, wenn ich folgende URL aufrufe
Code:

http://christians.homedns.org:3306/index.jsp

bekomm ich immernoch folgende Meldung im Browser dargestellt:
Code:

+ 4.0.13-log%Zzxj,<&K, ÿBad handshake


Der Port 3306 ist vom MySQL Server. Ein Browser kann damit überhaupt nichts anfangen.
Back to top
View user's profile Send private message
Miggi
n00b
n00b


Joined: 20 Feb 2003
Posts: 24
Location: Switzerland

PostPosted: Sun Oct 05, 2003 11:37 am    Post subject: Reply with quote

Wie DaFire schon gesagt hat, der Browser kann nichts mit den Daten von Port 3306 anfangen, das macht der jdbc treiber!

Tomcat hat standartmässig den Coyote http Connector eingeschaltet:

Code:

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8080" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="20000"
               useURIValidationHack="false" disableUploadTimeout="true" />



Du kannst also tomcat's Willkommensseite direkt mit: http://localhost:8080/index.jsp aufrufen, und wenn mod_jk2 läuft, auch mit http://localhost/index.jsp


Der Request kann mit mit deinem Setup auf zwei Arten Seiten aufrufen:

Code:
1) Browser <--- Port 8080 ---> Tomcat Coyote Connector
2) Browser <--- Port 80 --> Apache mod_jk <--- Port 8009 --> Tomcat Ajp Connector
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Mon Oct 06, 2003 7:43 am    Post subject: Reply with quote

barthi wrote:

Ich denke also, es hängt jetzt nicht mehr an der Berechtigung.
Vielleicht liegt es daran, das meine Applikation im flaschen Verzeichnis liegt. Zur Zeit befindet es sich in folgendem:
Code:

/opt/tomcat/webapps/lohn

Im lohn-Verzeichnis sind dann die ganzen JSP-Seiten und der Unterordner WEB-INF.
Vielleicht könnt ihr mir nochmal genau sagen, ob die Dateien da richtig stehen, oder ob ich sie woandern hin kopieren muß oder irgendwo einen Verweis angeben muß.


Nö, die Seiten kannst du da lassen, das Verzeichnis ist völlig in Ordnung. Unter der Voraussetzung, dass du Tomcat nach /opt installiert hast, also dein CATALINA_HOME müsste /opt/tomcat lauten.


Quote:

Ach ja, wenn ich folgende URL aufrufe
Code:

http://christians.homedns.org:3306/index.jsp

bekomm ich immernoch folgende Meldung im Browser dargestellt:
Code:

+ 4.0.13-log%Zzxj,<&K, ÿBad handshake



Das ist doch schonmal gut, zeigt es doch, dass dein mySQL auf port 3306 horcht, was ja auch so sein soll. Deine Seiten müsstest du allerdings anders aufrufen, z.B. mit http://localhost:8080/lohn/index.jsp, s. miggis post.

Wenn im catalina.out nichts mehr von access denied steht, es aber trotzdem nicht geht, da frage ich mich doch, was steht denn nun also im catalina.out?
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Tue Oct 07, 2003 8:42 am    Post subject: Reply with quote

Also, ich glaub ich mach da was grundsätzliches falsch.

Wenn ich in meinem Browser
Code:

http://christians.homedns.org:8080/lohn/index.jsp

eingebe, kommt ne Fehlermeldung, "Resource is not available"

Die Dateien sind aber in diesem Verzeichnis:
Code:

/opt/tomcat/webapps/lohn

Ich glaube aber, er holt sich die Seiten von
Code:

/home/httpd/htdocs

Da hab ich nämlich noch ne Kopie liegen von damals, als ich noch keine MySQL-Verknüpfung wollte.
Also irgendwo muss stehen, das der Tomcat nicht in seinem wepapps-Verzeichnis gucken soll, sondern unter den htdocs. Wenn ich das ändere geht's vielleicht.
Aber wie??
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Tue Oct 07, 2003 9:53 am    Post subject: Reply with quote

Also, das glaube ich nicht... da hättest du ja in der server.xml die appBase ändern müssen, aber wenn du gar nicht weißt, wo man das macht, hast du das ja wohl nicht.

Das würde ich auch nicht machen, lass das Tomcat-Webapps-Verzeichnis mal so, wie es ist. Wenn du das dann später über Apache und mod_jk machst, kannst du an den URLs ja noch beliebig rumschrauben, über die Apache-Konfiguration.

Ich hoffe, du hast deinen Apache nicht so konfiguriert, dass der auf Port 8080 hört... dann kam Tomcat gar nicht hoch, und die Fehlermeldung kommt vom Apache... mach mal den Apache erstmal aus, bis das mit Tomcat funktioniert, der kommt dann später wieder ins Spiel.

Aber erstmal weiter mit Tomcat direkt: Resource is not available ist ja wohl glaube ich ein 404er HTTP-Code, er findet also einfach deine Datei nicht. Checken:
- gibt es lohn/index.jsp wirklich?
- sind die Leseberechtigungen so, dass der Tomcat-User die Datei lesen darf?

Schieb auch mal eine einfache HTML-Datei, also nicht JSP, sondern statisch, in das Verzeichnis, und guck, ob du dir die ansehen kannst.

Ist ja echt spannend bei dir. War mir gar nicht klar, was es da so für Probleme geben kann.
Back to top
View user's profile Send private message
barthi
Apprentice
Apprentice


Joined: 02 Mar 2003
Posts: 256

PostPosted: Tue Oct 07, 2003 10:28 am    Post subject: Reply with quote

Also, ich hab den Apache jetzt mal gestoppt. Aber ich dachte, den brauch man um den Tomcat benutzen zu können?!?

Naja, auf jeden Fall bekomm ich noch den gleichen Fehler, wenn ich

christians.homedns.org:8080/lohn/index.jsp eingebe.

Wenn ich allerdings christians.homedns.org:8080/index.jsp eingebe, dann bekomm ich die Seite angezeigt. Der SQL-Zugriff funktioniert aber trotzdem nicht. Das mit der HTLM-seite hab ich auch getestet. Leider ohne Erfolg!

Ich denke an den Usern hängt's nicht, obwohl ich das noch nicht so ganz durchschaut hab (bin erst seit kurzem mit Linux unterwegs).

Ich find's echt super, das ihr mir helft. Ist aber bestimmt wieder ein gaaanz dummes Problem. Von denen hat ich nämlich schon einige seit meiner Gentoo-Installation. :?
Back to top
View user's profile Send private message
lutzh
n00b
n00b


Joined: 27 Sep 2003
Posts: 45
Location: Hamburg, Germany

PostPosted: Tue Oct 07, 2003 12:40 pm    Post subject: Reply with quote

ja, unter der URL kann ich es auch sehen :) Vielleicht solltest du die erlaubten IPs für Tomcat einschränken...

Ich gehe mal davon aus, dass du nicht jede Menge Kohle vom "IIB" kassierst für die Anwendung - sonst will ich was abhaben für den Support!

Also, zu deinem Post:

Apache - nö, braucht man nicht, um Tomcat benutzen zu können, da ist ein HTTP-Server eingebaut (Tomcat-Doku lesen!). Man macht es aber trotzdem in Produktivumgebungen, aus verschiedenen Gründen. Für die Entwicklung reicht aber erstmal Tomcat alleine.

Seite wird nicht angezeigt: kurz gefasst: die, die dir angezeigt wird, ist nicht die aus dem Verzeichnis lohn, sondern aus dem Verzeichnis "ROOT" (zumindest in einer default-Konfiguration). Die aus dem Verzeichnis lohn müsstest du mit der anderen URL sehen, wenn das nicht geht, stimmt da was nicht. Wenn du dir auch keine HTML-Seite in dem Verzeichnis ansehen kannst, obwohl die Berechtigungen stimmen, wurde die webapp beim Hochfahren wohl gar nicht erkannt. Vielleicht ein Fehler in der web.xml oder so. Mal in den Tomcat-Manager gucken, und ins log-file!

SQL-Zugriff geht nicht: Stimmt. Ich sag mal
Code:

class lohn.Tool : java.lang.NullPointerException


du hast eine NullPointerException in der Klasse lohn.Tool. Viel Spaß beim Java-Debugging.

Also, ich glaube, du hast da noch einige Hausaufgaben zu machen.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum