Liferay 端口已在使用中:0

Liferay 端口已在使用中:0,liferay,port,rmi,openshift,Liferay,Port,Rmi,Openshift,我正在OpenShift上安装Liferay。在OpenShift中,我只能访问特定范围的端口。启动Liferay时,会出现以下异常: java.lang.ExceptionInInitializerError at com.liferay.portal.kernel.resiliency.mpi.MPIHelperUtil.<clinit>(MPIHelperUtil.java:471) at com.liferay.portal.events.StartupAct

我正在OpenShift上安装Liferay。在OpenShift中,我只能访问特定范围的端口。启动Liferay时,会出现以下异常:

java.lang.ExceptionInInitializerError
    at com.liferay.portal.kernel.resiliency.mpi.MPIHelperUtil.<clinit>(MPIHelperUtil.java:471)
    at com.liferay.portal.events.StartupAction.doRun(StartupAction.java:96)
    at com.liferay.portal.events.StartupAction.run(StartupAction.java:68)
    at com.liferay.portal.servlet.MainServlet.processStartupEvents(MainServlet.java:1238)
    at com.liferay.portal.servlet.MainServlet.init(MainServlet.java:206)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.rmi.server.ExportException: Port already in use: 0; nested exception is: 
    java.net.BindException: Permission denied
    at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:329)
    at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:237)
    at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411)
    at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
    at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:207)
    at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:310)
    at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:252)
    at com.liferay.portal.kernel.resiliency.mpi.MPIHelperUtil.<clinit>(MPIHelperUtil.java:468)
    ... 21 more
Caused by: java.net.BindException: Permission denied
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at java.net.ServerSocket.<init>(ServerSocket.java:128)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(RMIDirectSocketFactory.java:45)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(RMIMasterSocketFactory.java:344)
    at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666)
    at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:318)
    ... 28 more
java.lang.ExceptionInInitializeError
位于com.liferay.portal.kernel.resilience.mpi.MPIHelperUtil.(MPIHelperUtil.java:471)
位于com.liferay.portal.events.StartupAction.doRun(StartupAction.java:96)
位于com.liferay.portal.events.StartupAction.run(StartupAction.java:68)
位于com.liferay.portal.servlet.MainServlet.processStartupEvents(MainServlet.java:1238)
位于com.liferay.portal.servlet.MainServlet.init(MainServlet.java:206)
位于javax.servlet.GenericServlet.init(GenericServlet.java:160)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
位于org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
位于org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
位于org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
位于org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:744)
原因:java.rmi.server.ExportException:端口已在使用中:0;嵌套异常是:
java.net.BindException:权限被拒绝
位于sun.rmi.transport.tcp.tcpttransport.listen(tcpttransport.java:329)
位于sun.rmi.transport.tcp.tcpttransport.exportObject(tcpttransport.java:237)
位于sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411)
位于sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
位于sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:207)
位于java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:310)
位于java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:252)
位于com.liferay.portal.kernel.resilience.mpi.MPIHelperUtil.(MPIHelperUtil.java:468)
... 还有21个
原因:java.net.BindException:权限被拒绝
位于java.net.PlainSocketImpl.socketBind(本机方法)
位于java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
位于java.net.ServerSocket.bind(ServerSocket.java:376)
位于java.net.ServerSocket.(ServerSocket.java:237)
位于java.net.ServerSocket。(ServerSocket.java:128)
位于sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(RMIDirectSocketFactory.java:45)
位于sun.rmi.transport.proxy.rmismastersocketfactory.createServerSocket(rmismastersocketfactory.java:344)
位于sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666)
位于sun.rmi.transport.tcp.tcpttransport.listen(tcpttransport.java:318)
... 28多

它试图绑定到一个临时端口,该端口超出了我的可访问端口范围(这就是我的猜测)。是否有其他配置的属性可用于设置RMI端口?因此,我无法让Liferay运行。

看起来像是权限问题。使用root(或admin)用户启动服务器。

使用netstat命令检查正在使用的所有端口,并验证在端口0上运行的进程端口0不是真正的端口,它表示“任何可用端口”。我找到了产生错误的代码行,端口0是硬编码的。这就把问题变成了:在openshift中,我如何获得一个在我的合法范围内的自由端口?Zero应该给你一个你可以使用的端口。我认为你根本没有权限绑定到任何端口。