zoukankan      html  css  js  c++  java
  • tomcat报错:java.net.SocketException: Permission denied["http-nio-80"]

    tomcat报错:java.net.SocketException: Permission denied["http-nio-80"]


    问题:使用非root账户tomcat启动tomcat报错:


    19-Sep-2016 15:08:27.168 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
    19-Sep-2016 15:08:27.179 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-nio-80"]
     java.net.SocketException: Permission denied
            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:339)
            at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:737)
            at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:457)
            at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:120)
            at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            at org.apache.catalina.core.StandardService.initInternal(StandardService.java:567)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:851)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:576)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:599)
            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:310)
            at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)


    19-Sep-2016 15:08:27.180 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-80]]


     org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-80]]
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
            at org.apache.catalina.core.StandardService.initInternal(StandardService.java:567)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:851)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:576)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:599)
            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:310)
            at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
    Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
            at org.apache.catalina.connector.Connector.initInternal(Connector.java:962)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            ... 12 more
    Caused by: java.net.SocketException: Permission denied
            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:339)
            at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:737)
            at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:457)
            at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:120)
            at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
            ... 13 more


    问题分析:在centos上只有root用户才可以使用1024以下的端口号,其余用户不能


    2.解决方案


    方法①修改Tomcat的server.xml配置文件,将端口修改为8081(或者其他1024以上的端口号,不能与本机上的其它Tomcat端口冲突)


    vim /usr/local/apache-tomcat-8.0.52/conf/server.xml
        <Connector port="8081" protocol="HTTP/1.1" 
                   connectionTimeout="30000" 
                   maxThreads="2000"
                   acceptCount="2000"
                   URIEncoding="UTF-8"
                   redirectPort="9143" />
        <!-- A "Connector" using the shared thread pool-->


    方法②修改端口后,使用root用户登录服务器,执行端口重定向命令:iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8081


    意思就是当访问80端口时重定向到8081端口,这样,我们可以改成任何我们需要的端口啦。


    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081


    切换到tomcat账号,启动tomcat服务
  • 相关阅读:
    #Bug--Mapper资源加载不到
    Spring项目用JUnit调试时出现错误 Failed to load ApplicationContext 的解决方法
    安装和配置maven遇到的坑
    DataGrip 异常
    数据库-1055报错-把only_full_group_by去掉
    spring boot 配置logback.xml 日志重复打印
    eclipse创建maven项目
    【C++11新特性】 C++11智能指针之weak_ptr
    socket编程中的粘包问题解决方案
    c++的反映机制实现
  • 原文地址:https://www.cnblogs.com/reblue520/p/6239707.html
Copyright © 2011-2022 走看看