先描述下問題所在吧。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連接埠,這樣,我們可以改成任何我們需要的連接埠啦。