先描述下问题所在吧。jboss在suse11上部署后,用root用户可以成功启动,但是用普通用户就提示如下问题:
2012-11-15 16:26:28,432 ERROR [org.apache.coyote.http11.Http11Protocol] Error initializing endpoint
java.net.BindException: Permission denied:562 at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:500) at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176) at org.apache.catalina.connector.Connector.initialize(Connector.java:1073) at org.apache.catalina.core.StandardService.initialize(StandardService.java:668) at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:791) at org.apache.catalina.startup.Catalina.load(Catalina.java:528) at org.apache.catalina.startup.Catalina.start(Catalina.java:568) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296) at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.system.server.jmx.LazyMBeanServer.invoke(LazyMBeanServer.java:291) at org.jboss.web.tomcat.service.JBossWeb.startService(JBossWeb.java:457)2012-11-15 16:26:28,439 ERROR [org.apache.catalina.startup.Catalina] Catalina.start
LifecycleException: Protocol handler initialization failed: java.net.BindException: Permission denied:562 at org.apache.catalina.connector.Connector.initialize(Connector.java:1075) at org.apache.catalina.core.StandardService.initialize(StandardService.java:668) at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:791) at org.apache.catalina.startup.Catalina.load(Catalina.java:528) at org.apache.catalina.startup.Catalina.start(Catalina.java:568) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296) at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.system.server.jmx.LazyMBeanServer.invoke(LazyMBeanServer.java:291)端口访问拒绝,该端口改了很多次,运行都是同样的问题。
原因分析:
在Suse上只有root用户才可以访问1024以下的端口号,其余用户不能访问。
解决方案:
修改Tomcat的server.xml配置文件,jboss下的路径为jboss-4.2.3.GA/server/default/deploy/jboss-web.deployer/server.xml,将端口修改为8081(或者其他1024以上的端口号,不能与本机上的其它Tomcat端口冲突),然后使用root用户登录服务器,执行端口重定向命令:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081。意思就是当访问80端口时重定向到8081端口,这样,我们可以改成任何我们需要的端口啦。