Я пытаюсь настроить сервер tomcat 8 на ubuntu 14 через цифровой океан с помощью этого руководства https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on- ubuntu-14-04. Но я не могу добраться до страницы всплеска tomcat.
Все идет хорошо, пока я не достиг шага, чтобы запустить tomcat с
sudo initctl start tomcat
Это возвращает сообщение
tomcat start/running, процесс 9180
Но когда я печатаю URL
моя-капельку -i р-адрес: 8080
страница всплеска никогда не загружается.
Я прочитал, что вы можете начать tomcat с
sh startup.sh
Хотя, когда я это делаю, catalina.out дает мне сообщение об ошибке
31-Jul-2016 05:37:41.018 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
31-Jul-2016 05:37:41.086 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-nio-8080"]
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:229)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:866)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:213)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:558)
at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:65)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:1010)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:549)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:873)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.startup.Catalina.load(Catalina.java:606)
at org.apache.catalina.startup.Catalina.load(Catalina.java:629)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:311)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:494)
31-Jul-2016 05:37:41.089 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8080]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:111)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:549)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:873)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.startup.Catalina.load(Catalina.java:606)
at org.apache.catalina.startup.Catalina.load(Catalina.java:629)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:311)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:494)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:1012)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
... 12 more
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:229)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:866)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:213)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:558)
at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:65)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:1010)
... 13 more
31-Jul-2016 05:37:41.091 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8181"]
31-Jul-2016 05:37:41.105 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
31-Jul-2016 05:37:41.117 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1568 ms
31-Jul-2016 05:37:41.180 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
31-Jul-2016 05:37:41.180 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.4
31-Jul-2016 05:37:41.211 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /opt/tomcat/webapps/host-manager
Я проверил, какие порты используются с sudo lsof -i, и попытался убить процессы, которые используют порты, которые нужны tomcat, а также изменить различные порты в server.xml, чтобы избежать этой ошибки. Но это происходит независимо от того, что я делаю.
Я также недавно видел эту ссылку
который предлагает
Возможно, это связано с проблемой источника энтропии. Установите опцию
-Djava.security.egd = файл: /dev/./urandom либо в файле catalina.sh, либо /etc/default/tomcat.
Проблема в том, что я не могу найти файл /etc/default/tomcat, и не могу понять, где в catalina.sh добавить эту строку, которую предлагает автор.
Почему я не могу запустить tomcat, чтобы попасть на страницу всплеска? Это действительно проблема, связанная с источником энергии? Если да, то где в Catalina.sh эта линия идет? Если нет, любое предложение о том, как я могу решить эту проблему, будет оценено по достоинству.
Как вы уже знаете, основной причиной этой проблемы является то, что ваше приложение пытается подключиться к определенному порту, который уже используется некоторыми другими процессами Java или не-Java. вот ваш ответ:
найти эти четыре порта в вашем server.xml
используйте команду netstat, чтобы определить, какой процесс использует эти порты.
netstat -nap | grep <port>
Теперь, когда вы обнаружили оскорбительный процесс, вы можете убить этот процесс и перезапустить свой компьютер, если убить этот процесс в порядке, в противном случае измените порт в вашем server.xml
сделайте это для всех 4 портов и перезапустите tomcat. проверьте catalina.out, если все будет хорошо, вы сможете получить доступ к своему приложению.
Это действительно проблема, связанная с источником энергии? Если да, то где в Catalina.sh эта линия идет?
Я не знаю, связано ли это с тем, чтобы связать источник или нет, но вы можете поместить -Djava.security.egd=file: /dev/./urandom
в catalina.sh. найдите JAVA_OPTS
в JAVA_OPTS
catalina.sh и поместите его там, разделенные точкой с запятой (;) с существующими значениями.
Если вы используете Eclips IDE, дайте мне знать. все это легко. надеюсь, что это поможет.
sh startup.sh
вы не можете этого сделать, потому что экземпляр, запущенный как служба, уже использует порты. Вы можете использовать командуnetstat
чтобы увидеть, какие порты используются и какими процессами.