Tomcat startet nicht (java.net.BindException)

Firestorm87

Bekanntes Mitglied
Hallo,.

Ich habe Heute versucht auf meinem Ubuntu ein Tomcat zum laufen zu bekommen.
Leider will er sich nicht starten lassen und Ich kann das Problem nicht verstehen...

Einmal auszug LOG:
Code:
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Apr 28, 2011 6:17:29 PM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Apr 28, 2011 6:17:29 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 823 ms
Apr 28, 2011 6:17:29 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 28, 2011 6:17:29 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12
Apr 28, 2011 6:17:29 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
Apr 28, 2011 6:17:32 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [2,572] milliseconds.
Apr 28, 2011 6:17:32 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory manager
Apr 28, 2011 6:17:32 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
Apr 28, 2011 6:17:32 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
Apr 28, 2011 6:17:32 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory host-manager
Apr 28, 2011 6:17:33 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Apr 28, 2011 6:17:33 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Apr 28, 2011 6:17:33 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3461 ms
Apr 28, 2011 6:17:33 PM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[localhost:8005]:
java.net.BindException: Cannot assign requested address
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:353)
        at java.net.ServerSocket.bind(ServerSocket.java:336)
        at java.net.ServerSocket.<init>(ServerSocket.java:202)
        at org.apache.catalina.core.StandardServer.await(StandardServer.java:422)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:707)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:653)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
Apr 28, 2011 6:17:33 PM org.apache.coyote.AbstractProtocolHandler pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Apr 28, 2011 6:17:34 PM org.apache.coyote.AbstractProtocolHandler pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Apr 28, 2011 6:17:35 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Apr 28, 2011 6:17:35 PM org.apache.coyote.AbstractProtocolHandler stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Apr 28, 2011 6:17:35 PM org.apache.coyote.AbstractProtocolHandler stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
Also er kann den Port 8005 nicht belegen...
Aber ein anderes Programm belegt diesen Port auch nicht:
Code:
netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      0          1870144293  11176/slapd
tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      107        1870144275  11170/amavisd (mast
tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          1870146948  12195/master
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      103        1870144231  11148/mysqld
tcp        0      0 0.0.0.0:236             0.0.0.0:*               LISTEN      0          1870147127  12258/zarafa-server
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      0          1870147081  12207/zarafa-gatewa
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      0          1870147082  12207/zarafa-gatewa
tcp        0      0 127.0.0.1:783           0.0.0.0:*               LISTEN      0          1870144390  11190/spamd.pid
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      0          1870147090  12217/zarafa-ical
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          1870143625  10715/sshd
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          1870146930  12195/master
tcp6       0      0 :::389                  :::*                    LISTEN      0          1870144294  11176/slapd
tcp6       0      0 :::80                   :::*                    LISTEN      0          1870147210  7469/apache2
tcp6       0      0 :::22                   :::*                    LISTEN      0          1870143627  10715/sshd
tcp6       0      0 :::443                  :::*                    LISTEN      0          1870147215  7469/apache2
Es sieht mir also eher nach nem Fehler der Berechtigung oder der Grundsätzlichen Fähigkeit eines Binds von Java aus ?!?

Ich kann mir da leider gar keinen Reim drauf machen...
Ausgeführt habe Ich das ganze bereits als root, so dass es die Berechtigung eigentlich nicht sein sollte!

Gruß und vielen Dank

Firestorm
 

Firestorm87

Bekanntes Mitglied
Ich nutze ein Ubuntu 10.04 (wegen dem LTS) und habe den identischen Fehler mit Tomcat 5.5 / 6.0 / 7.0.

Es spielt auch keine Rolle, ob Ich die Repo-Version nehme, oder die tar-Version manuell entpacke und per script starte....
(Einstellungen im Tomcat sind noch alle auf default).

Es scheint also ein genereller Fehler zu sein... die Frage ist, ob es am Tomcat liegt, oder ob gerade gar kein Java-Prog nen Port bekommen würde...
Das müsste Ich vll. mal ausprobieren,.

/EDIT: Habe auch das SUN-JDK schonmal gegen das default-jdk getauscht...
Aber auch damit läufts net...
 
Zuletzt bearbeitet:

Firestorm87

Bekanntes Mitglied
Nichts ungewöhnliches:
Code:
 ping localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.033 ms

/EDIT: Ich verstehe worauf du hinaus willst.. (hab ja auch schon bei Google gesucht :p)
Code:
ifconfig lo
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:638866797 errors:0 dropped:0 overruns:0 frame:0
          TX packets:638866797 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:233459140457 (233.4 GB)  TX bytes:233459140457 (233.4 GB)
Der Adapter is da...
 
Zuletzt bearbeitet:

Noctarius

Top Contributor
Ist es eine saubere Plain-Installation? Wenn nicht, mal in ner VM direkt nach der Basisinstallation probiert? Ich nutze massig 10.04 Mini-Installs und alle ohne Probleme (mit Repo-Tomcat und auch mit Download-Version).

Desktop oder Server?
 

Firestorm87

Bekanntes Mitglied
Is ne Server-Installation,. und eigentlich würde Ich den ungern platt machen wollen...
Aber Ich kann das ganze Morgen gern mal inner VM testen,. Nur warum sollte das nach nem frischen Ubuntu nicht gehen? Die Frage ist ja einfach warum gehts nun net :)
 

Noctarius

Top Contributor
Ich meinte auch in einer VM. Klar die Frage ist: Wieso geht es jetzt nicht aber um den Fehler einzuschränken muss man ja irgendwo anfangen. Wenn es dann klappt schau ich Morgen mal in den Sources nach und klapper mal ab von wo der Fehler kommt.
 

Firestorm87

Bekanntes Mitglied
Ich hab das gerade nochmal in ner Ubuntu 10.10 Desktop-Version und in ner Ubuntu 10.04 Server-Version getestet...
In beiden mit der manuellen Version.

Läuft Problemlos bei genau der gleichen Vorgehensweise (Download, Entpacken, startup.sh ausführen)
 

Firestorm87

Bekanntes Mitglied
Wie zu erwarten: (Der Port ist wirklich frei)
Code:
telnet localhost 8005
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Was mir so einfällt...
Die Produktiv-Maschine unterscheidet sich von meinen VMs in einer ipv6-Adresse.

Der Server hat an eth0 sowohl ipv4, als auch ipv6. Am Loopback offensichtlich nur ipv4.
Aber das werde Ich frühstens Morgen näher ergründen, ob das ein Grund sein kann. (eigentlich würde es für mich kein sinn machen, aber wer weiß).

Gute Nacht und immer her mit weiteren Ideen :)
 

Firestorm87

Bekanntes Mitglied
Gerade erledigt... bringt leider auch keine veränderung.

Auch eine explizite IP-Angabe in der server.xml auf 127.0.0.1 ändert nur folgende Zeilen im Log:
Code:
SEVERE: StandardServer.await: create[localhost:8005]:
java.net.BindException: Cannot assign requested address
in
Code:
SEVERE: StandardServer.await: create[127.0.0.1:8005]:
java.net.BindException: Cannot assign requested address
Also auch wieder nichts unerwartetes :(
 

Noctarius

Top Contributor
Du nutzt ja unter anderem den runtergeladenen Tomcat? Hast du den als Root gestartet oder unter einem unprivilegierten Benutzer? Wenn letzteres: Klappt es als Root?
 

Firestorm87

Bekanntes Mitglied
Ich habe noch keinen eigenen User für den Tomcat angelegt.
So weit bin Ich noch nicht gekommen ;) Bin ja direkt am ersten Funktionstest gescheitert...

Also: Ja, Ich führe sämtliche Startscripte als Root aus.
 

homer65

Top Contributor
Merkwürdiger Fehler. Ich kenne dieses Problem, wenn man den Tomcat auf Port 80 laufen lassen will.
Da ist es ein Berechtigungsproblem und es hilft in /etc/default/tomcat6 folgendes einzutragen:
AUTHBIND=yes
Kannst es ja mal ausprobieren, keine Ahnung, ob es helfen wird.
 

Firestorm87

Bekanntes Mitglied
Also da steht ja explizit bei, dass diese Option nur für die Verwendung eines Ports von unter 1024 und dem nicht vorhandensein von Root-Rechten vorhanden ist. (Aber trotzdem gut zu wissen, da Ich immer dachte ohne root-Rechte läuft Tomcat nur auf hohen Ports)

Hier ist aber beides nicht gegeben...
Und es steht dort, dass diese Option nicht bei ipv6 eingesetzt werden kann (was hier aber gegeben ist)

Außerdem kann Ich im Binary-Package gerade keine vergleichbare Funktion finden (Was ist hier das äquivalent zur /etc/default-Datei?)
 

homer65

Top Contributor
Außerdem kann Ich im Binary-Package gerade keine vergleichbare Funktion finden (Was ist hier das äquivalent zur /etc/default-Datei?)
Weiss ich leider nicht.

Klar ist wohl, das der BIND nicht klappt. Aber warum nicht?
Sind denn nicht irgentwo weiter Meldungen, die einen Hinweis geben?
Ohne Meldung ist das nur ein stochern im Nebel.
Was sagt denn tail /var/log/messages unmittelbar nach einem Fehlversuch?
 

Firestorm87

Bekanntes Mitglied
Die Log-Ausgabe vom Tomcat ist leider alles Sinnige was Ich bisher gefunden habe.
Auch /var/log/messages liefer keine (GAR KEINE!) Ausgabe zu einem Startversuch....
Da ist die letzte Meldung schon paar Stunden her, auch wenn Ich den Tomcat noch 2x versuche zu starten...

/EDIT: Ich habe natürlich auch andere LOGs durchsucht... syslog, kernel und alle Tomcat-Logs...
Ich finde nur den Fehler aus dem Eröffnungspost...
 
Zuletzt bearbeitet:

homer65

Top Contributor
Tja, dann müssen wir wohl im Nebel stochern.
Habe mal nach der Fehlermeldung gegoogelt.
Wenn ich das richtig verstehe, ist gar nicht der Port das Problem, sondern die IP Adresse.
Wie sieht denn bei dir /etc/hosts aus?
Ist localhost richtig verdrahtet?
 

Firestorm87

Bekanntes Mitglied
Die /etc/hosts Datei sieht meiner Meinung nach genau so aus wie sie auszusehen hat und ping etc auf localhost funktionieren ja auch
Code:
78.47.xxx.xxx meineDomain.de meineDomain
127.0.0.1 localhost.localdomain localhost

2a01:4f8:7d:xxx::xxxx:xxx:x meineDomain.de meineDomain
::1 localhost.localdomain localhost
Wobei Ich die beiden IPv6-Einträge erst Heute Morgen dazu editiert habe um zu testen, ob es an den fehlenden Einträgen lag.
Leider keine Veränderung.

Und warum er die anderen Ports anlegt versteh Ich eben auch nicht.
Zwischen 8005 und 8009 ist doch meiner Meinung nach der einzige Unterschied die Funktion, die durch den Aufruf ausgelöst wird?!? Daher sollte sowohl angesprochene IP als auch die dafür notwendige Berechtigung die selbe sein!
 

Firestorm87

Bekanntes Mitglied
Soweit war Ich auch schon... tiefer (also auch wirklich unter 1000) und auch höher (ab 11000) hab Ich schon diverse Ports probiert...

Auch ein anpassen der 8009, so wie der 8080 bringt keine Veränderung.

Ich kann mir das eigentlich nur so erklären, dass lt. der XML-Struktur die 8005 ja der eigentliche Server ist und 8080, so wie 8009 ein Connector innerhalb des Servers ist.

Sollte nun also nicht die initialisierung dieses Connectors fehlschlagen, sondern irgendwas anderes im Startprozess, so brincht nur der Bind des 8005.

Aber das ist natürlich mehr als nur geraten und sollte afaik auch nicht zu einer Java-Exception führen.
Würde aber erklären warum die 2 Ports funktioneren, nur die 8005 bricht...
 
Zuletzt bearbeitet:

homer65

Top Contributor
Hmh, da hast du ja localhost zweimal drin. Welchen nimmt er denn nun?
Du betreibst deinen Rechner mit IPv6!?
Also wäre es einen Versuch wert den Eintrag:
127.0.0.1 localhost.localdomain localhost
mal rauszunehmen. Oder falls das nicht stimmt eben
::1 localhost.localdomain localhost
zu entfernen.
 

Firestorm87

Bekanntes Mitglied
Ich betreibe den Server sowohl mit ipv6 als auch mit ipv4

Wie bereits geschrieben war der v6-Einträg zum eigentlichen Fehlerzeitpunkt gar nicht vorhanden.
Einen versuch nur den v6-Einträg drinnen zu lassen wird gestartet ;)
 

homer65

Top Contributor
Wie schon gesagt, ist das reines Stochern im Nebel.
Auf jeden Fall hast du an der /etc/hosts geändert.
Es wäre auch mal einen Versuch Wert sich irgentwo her die Original /etc/hosts zu beschaffen und es mit der auszuprobieren.
Du schriebst ja, das du weitere Ubuntu 10.04 Installationen hast, bei denen es funktioniert.
 

Firestorm87

Bekanntes Mitglied
Nein,. ist alles original und da ist kein Hostname vorgegeben
Alternativ eventuell das Loopback-Interface Schrott? Scheinbar wird der Shutdown-Port explizit an 127.0.0.1 gebunden:
Old Nabble - Tomcat - User - create[8005]: java.net.BindException: error occured while starting tomcat on Ubuntu Plateform
Das Interface macht mir eigentlich ein guten Eindruck,. jedoch ist keine Route für das 127.0.0.0 Netz vorhanden. Wobei Ich mir auch gerade nicht sicher bin, ob das sonst der Fall ist (werd das Zuhaus mal an anderen VMs gegen checken...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Glassfish vs. Tomcat/JBoss Application Tier 4
M Spring DM: Problem mit Tomcat als OSGI-Service Application Tier 1
T Tomcat 6: JSP-Exception beinhaltet nicht den wahren Ursprungsort Application Tier 4
B Application startet nicht mehr nach löschen einer nicht verwendeten KLasse Application Tier 2
N Anwendung startet nicht, wenn die Datenbank gestoppt ist Application Tier 5
J @Asynchronous JEE6 funktioniert nicht Application Tier 4
L Spring Kann die applicationContext.xml nicht finden Application Tier 1
T Spring Transaktionen funktionieren nicht Application Tier 1
P Spring RequestMapping: PathVariable Die Methode wird nicht aufgerufen Application Tier 2
I EJB 3.1 Timer @Schedule wird nicht ausgeführt?! Application Tier 2
2 EJB: Dependecy Injection funktioniert nicht Application Tier 13
V JBoss 5 mag @Service nicht Application Tier 2
K @Asynchronous funktioniert nicht Application Tier 2
B Message-Driven Bean reagiert nicht Application Tier 3
A @Schedule funktioniert nicht mit Glassfish Application Tier 2
A Stateful Session Bean will nicht "stateful" sein Application Tier 18
L Mein erstes Struts 2 Programm welches nicht läuft Application Tier 5
J EJB: Local-Annotation wird in Eclipse nicht erkannt Application Tier 7
S findet lookup("KundenDAOIml/remote") nicht Application Tier 9
M Entity Bean wird nicht in stateless Session Bean injeziert Application Tier 3
A Spring: JSP nimmt style.css nicht an Application Tier 3

Ähnliche Java Themen

Neue Themen


Oben