`

Ubuntu 运行tomcat报错:java.net.SocketException: Permission denied

阅读更多

在Ubuntu系统中,使用非root用户开启tomcat时报错:

 

 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:210)

at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:982)

at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:245)

at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:620)

at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:66)

at org.apache.catalina.connector.Connector.initInternal(Connector.java:997)

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:875)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)

at org.apache.catalina.startup.Catalina.load(Catalina.java:621)

at org.apache.catalina.startup.Catalina.load(Catalina.java:644)

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)

 

14-Jan-2018 22:30:57.969 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-443]]

 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-443]]

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:113)

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:875)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)

at org.apache.catalina.startup.Catalina.load(Catalina.java:621)

at org.apache.catalina.startup.Catalina.load(Catalina.java:644)

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:1000)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)

... 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:210)

at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:982)

at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:245)

at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:620)

at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:66)

at org.apache.catalina.connector.Connector.initInternal(Connector.java:997)

... 13 more

 

 

原因:Ubuntu系统中,非root用户只能使用1024以上的端口。

两个解决办法:

  1. 使用root用户开启tomcat
  2. 将端口设置为1024以上的端口:
        <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" URIEncoding="UTF-8"                     maxThreads="150" scheme="https" secure="true"
                     keystoreFile=""
                     keystorePass=""
                     clientAuth="false" sslProtocol="TLS" />
     将端口由443修改为8443,tomcat即可正常运行。

     但是这会存在一个问题,https的默认端口是443,http的默认端口是80。也就是说端口设置为443和80时,直接访问域名即可进入主页,例:http://域名/ ,https://域名/。但是设置为8443后需要在域名后加端口号才可以访问应用主页,例:https://域名:8443/,http://域名:8080/ 。很不舒服,针对这个问题可以使用端口映射的方式解决,使用root用户执行以下命令:

    #443端口映射到8443
    iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

     现在·https://域名/ ·即可直接使用8443端口了。或者可以使用Nginx等做反向代理也可以解决这个问题。

 

分享到:
评论

相关推荐

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法 JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES错误是一种常见的网络编程错误,发生在Java应用程序中, especialmente 在 Linux 操作系统中。该错误的出现是...

    在Win7系统下抛出java.net.SocketException的解决办法

    ### 在Win7系统下抛出java.net.SocketException的解决办法 #### 问题背景及原因分析 在使用MyEclipse开发工具结合JBoss服务器进行项目开发的过程中,遇到一个常见但令人头疼的问题:当启动JBoss服务器时,控制台...

    java.net.SocketException Connection reset 解决方法

    "java.net.SocketException Connection reset 解决方法" 在 Java 编程中,SocketException 是一种常见的异常,特别是在网络编程中。Conexion reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器...

    java.net.SocketException: No route to host 异常原因

    NULL 博文链接:https://zhoudan241.iteye.com/blog/1432014

    java.net.SocketException: Connection reset 解决方法

    Java中的`java.net.SocketException: Connection reset`是一个常见的网络编程错误,通常表示在TCP/IP通信过程中,连接突然中断。这个异常可能在客户端或服务器端发生,通常与数据传输的异常中断有关。 首先,我们来...

    http接口调用报错.rar

    接口调用报错:java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

    Linux下打开的文件过多错误

    Linux下运行tomcat或者was出现java.net.SocketException: 打开的文件过多错误 tomcat报“too many open files”的错误,解决办法如下:

    Java Socket常见异常处理

    4. **java.net.SocketException: (Connection reset 或 Connect reset by peer: Socket write error)** 这两种异常都表示连接已断开。可能的原因是一端关闭了Socket,而另一端仍在尝试读写。处理这类异常需要检测到...

    Windows10/11 USB驱动

    System.Net.Sockets.SocketException (10061): 由于目标计算机积极拒绝,无法连接。 at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken ...

    java网络编程示例

    import java.net.SocketException; public class UDPServer { public static void main(String[] args) { try { byte [] buffer = new byte[1024]; DatagramSocket socket = new DatagramSocket(4444); ...

    C#socket通讯两个最经典错误解决方案

    可以捕获 `System.Net.Sockets.SocketException` 异常,并根据实际情况给予用户相应的提示,然后从当前执行路径退出。这样可以避免程序因异常而完全崩溃。 ```csharp try { // 尝试执行网络操作 } catch ...

    Java实现modbus tcp协议数据读写,项目内包含modbus slave仿真软件

    本项目专注于使用Java语言实现Modbus TCP/IP协议的读写功能,提供了两种不同的实现方案:jlibmodbus和modbus4j库。这两种库都是Java社区开发的开源工具,专门用于处理Modbus通信。 首先,我们来看jlibmodbus。...

    Windows6.1-KB2553549、KB2577795-x64.zip

    1.解决服务器报错:java.net.SocketException: No buffer space available (maximum connections reached?): JVM_Bind 2.解决Windows Server 2003/2008 R2系统BUG导致windows缓冲区已满(no buffer space),Windows...

    Ice-3.7.4.msi for windows版

    Caused by: java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574) at ...

    ip6-java.zip

    7. **配置和属性**:Java系统属性如`java.net.preferIPv6Addresses`和`java.net.preferIPv4Stack`可以用来配置系统首选的IP版本。 8. **异常处理**:处理网络编程中常见的异常,如`UnknownHostException`, `...

    Google I/O 2013推荐Android 网络通信框架Volley

    ```java RequestQueue queue = Volley.newRequestQueue(this); ``` 2. 创建Request对象:根据实际需求创建对应的Request子类,如StringRequest、JsonArrayRequest等。 ```java String url = ...

    JMeterPlugins-Standard.jar和JMeterPlugins-Extras.jar.rar

    《JMeter插件详解:Standard与Extras的魅力》 在性能测试领域,Apache JMeter是一款备受推崇的开源工具,它能够对各种服务器、网络或对象进行压力和负载测试。然而,尽管JMeter本身功能强大,但有时其内置的功能并...

    ssh2必须的包(这是第二部分)

    4. **mysql-connector-java-5.1.10-bin.jar** - MySQL数据库的Java驱动,用于连接Java应用程序与MySQL数据库。在SSH2场景中,可能用于存储和检索用户认证信息或其他系统配置数据。 5. **javassist-3.12.0.GA.jar** ...

    fastdfs使用java

    FastDFS适用于那些以文件为中心的在线服务,如图片分享、视频流媒体网站等,通过冗余备份、负载均衡和线性扩容等机制确保系统的稳定运行。 【上传交互过程】 在FastDFS中,文件上传通常涉及以下步骤: 1. 客户端...

    如何解决线程太多导致java socket连接池出现的问题

    3. 错误信息:当Socket连接池出现问题时,可能会出现错误信息,如"java.net.SocketException: No buffer space available (maximum connections reached?): listen failed"。 解决方法 要解决线程太多导致Socket...

Global site tag (gtag.js) - Google Analytics