【SSH】Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??,tomcat启动失败

素颜马尾好姑娘i 2022-09-26 04:56 398阅读 0赞

一、前言

  1. 前一些日子学习SSH网上商城,小编也是一个二把刀,刚刚接触了JAVA,用MyEclipse编辑的代码,运行后发现在

Console视图里面有很多的错误,其中第一个就是这个。根据以往的感受,都是要从第一个BUG开始处理,然后小编就可以对这个问题开始动刀~~~

  1. 严重: Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
  2. java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??
  3. at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:470)
  4. at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:650)
  5. at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:435)
  6. at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
  7. at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
  8. at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)
  9. at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
  10. at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:838)
  11. at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
  12. at org.apache.catalina.startup.Catalina.load(Catalina.java:642)
  13. at org.apache.catalina.startup.Catalina.load(Catalina.java:667)
  14. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  15. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  16. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  17. at java.lang.reflect.Method.invoke(Method.java:597)
  18. at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
  19. at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
  20. 2016-9-21 17:34:22 org.apache.catalina.core.StandardService initInterna

二、解决方法

  1. 出现以上的问题不要紧张,这个问题主要的原因是:tomcat8080端口被占用了。解决的步骤方法如下:

方法一:查看端口

  1. 1.开始-运行-输入cmd-netstat -ano-回车-查到8080端口的PID linuxnetstat -anp | grep :8080
  2. 2.通过Ctrl+Alt+Delete快捷键打开Windows任务管理器-查看-选择列-勾选PID(进程标识符)(P)-找到8080端口的PID-结束进程

或开始-运行-输入cmd-netstat -ano|find “8080 “-tasklist|find “PID “-askkill /pid PID

  1. 由于我出现上述的问题是由于刚刚安装了oracleOracle中的 tnslsnr.exe进程占用了8080端口(oracle\\ora92\\bin\\TNSLSNR.EXE)。故将tnslsnr.exe的进程结束,重新运行tomcat中的项目,发现不能连接数据库。对此我看了网上的一些资料,才知道:tnslsnr.exe 关掉后就不能通过网络方式连接数据库了(本机通过JDBC连也不行),但在服务器端还可以使用。如果你还想使用8080端口号又要能连接oracle数据库,那只有改tnslsnr.exe的端口8080为其他的端口号。在网上找到资料如下:具体的可否使用还没有测试,请原谅,希望后面的人测试了可以留言告诉一下后面的学习者,非常感谢。

方法二:改tomcat中的端口

  1. 修改Tomcat 6.0\\conf\\server.xml,找到该文件中的以下标签内容。
  2. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
  3. port=“8080”改为其他端口。注意:不要使用服务器端使用的熟知端口号,数值为0~1023,而数值为1024-49151的登记端口号是可以使用的,还有一类是客户端使用的端口号—短暂端口号,数值为49152~65535,这类端口号是仅在客户进程运行时才动态选择的,是留给客户进程选择暂时使用。简而言之,一般将端口该为8080左右的人一个端口号就可以了。但这种方法效果没有第一种好,因为修改后的端口也存在被暂用的可能。

方法三:结束javaw.exe和java.exe进程

  1. 出现这种情况也有可能是由于Myeclipse 不正常退出导致的,不过终于找到了一个可行的办法。打开任务管理器,找到名为JAVAW.EXE JAVA.EXE的进程(大小写可能有不同),结束掉占内存小的那个(占内存大的那个为当前正在使用的myeclipse),重启tomcat,问题解决。

方法四:取消tomcat的自动启动

  1. 假如你设置了tomcat开机时自启动,在项目里在启动tomcat时就报了端口被占用的错误。解决的办法是把tomcat开机时启动禁掉,重启计算机,在项目里启动tomcat,基本上可以了

三、小结

  1. 经过小编不断的分析尝试,最终方法四解决了我的问题,就是端口冲突了,一开机tomcat就运行,占用8080端口,后来再运行服务器就会有重复了。所以以后还是要多多留意。
  2. 另外小编提示大家Tomcat的配置也是有意思的,所以关于Tomcat配置的技术,小编将会在下一篇博客中分享。

发表评论

表情:
评论列表 (有 0 条评论,398人围观)

还没有评论,来说两句吧...

相关阅读