栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > .Net

java socket 权限管理

.Net 更新时间:发布时间: 百科书网 趣学号

前言

最近系统换成了elementary os,因为是第一次使用linux,配置后出现了各种各样的问题,项目启动后一直报如下错误:

环境

linux

tomcat7.0.82

错误

严重: Failed to initialize end point associated with ProtocolHandler ["http-nio-443"]

java.net.SocketException: 权限不够

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

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

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

at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)

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

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

at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)

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

at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:840)

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

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

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

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

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)

原因(tomcat中conf/server.xml)

protocol="org.apache.coyote.http11.Http11NioProtocol"

SSLEnabled="true"

secure="true"

URIEncoding="UTF-8"

useBodyEncodingForURI="true">

certificateKeystoreType="PKCS12"

certificateKeystorePassword="******"

certificateKeyAlias="1"/>

我在这里配置了https的443端口,但是linux中1024以下的端口默认是对 非root用户 禁用的

因为是开发环境所以我将server.xml中这块代码注释了,问题解决

当然服务器的话默认应该是root运行项目,所以没出现这个问题

其他

有时我们在服务Linux服务器上安装了tomcat(端口号为8080),而要求是输入网址后不添加端口号就能访问,这就意味着浏览器得通过80端口访问到你的tomcat(端口为8080),为此有两种解决方式:

基于linux系统禁止1024一下的端口让非root用户使用,那么就必须是用root用户登录才能去启动修改为80端口的tomcat(注意: 直接在tomcat server.xml中更改为80,用sudo命令是启动不了的,必须要root用户登录启动!!)

基于root密码不是随随便便能得到的,所以一般采用第二种方法(即端口映射)来达到你的目的:具体命令为:

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

-t nat : 指出我要操作什么表.(不写就表示filter.默认是filter)

-A PREROUTING : A 添加的意思.表示我要在PREROUTING 中添加一个规则

--dport 80 : 如果请求80端口.

--to-port 8080 : 那么就转到8080端口.

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/955623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号