简体   繁体   English

Openshift中的Java RMI端口绑定错误

[英]Java RMI port binding error in openshift

I have developed a small Spring based web application to test Spring RMI. 我已经开发了一个基于Spring的小型Web应用程序来测试Spring RMI。 There I have created a simple service to generate a greeting message based on the input parameter and return it back to the client. 在那里,我创建了一个简单的服务,可以根据输入参数生成问候消息,并将其返回给客户端。 My spring context file looks like this: 我的春季上下文文件如下所示:

<bean id="registry" 
class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">

  <property name="port" value="4777"/>

</bean>

<bean id="greetingService" class="com.greeting.GreetingServiceImpl" >
</bean>

<bean class="org.springframework.remoting.rmi.RmiServiceExporter"
      p:service-ref="greetingService"
      p:serviceName="greetingRmiService"
      p:serviceInterface="com.greeting.GreetingService"
      p:registry-ref="registry"
/>

First I have deployed this application in my local pc running tomcat server 7 and it deployed successfully. 首先,我已经在运行tomcat服务器7的本地PC中部署了此应用程序,并且部署成功。 Then I have uploaded the war file of this application to Openshift tomcat 7 DIY server. 然后,我已将此应用程序的war文件上载到Openshift tomcat 7 DIY服务器。 But It doesn't deploy my application and gave this error in the log file. 但是它没有部署我的应用程序,并在日志文件中给出了此错误。

SEVERE: Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registry' defined in ServletCo ntext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.rmi.serve r.ExportException: Port already in use: 4777; nested exception is: java.net.BindException: Permission denied at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowir eCapableBeanFactory.java:1420) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireC apableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCap ableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanReg istry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListab leBeanFactory.java:567) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractAppl icationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285) 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:618) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) 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:722) Caused by: java.rmi.server.ExportException: Port already in use: 4777; nested exception is: java.net.BindException: Permission denied at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:328) at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:236) 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 sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:123) at sun.rmi.registry.RegistryImpl.(RegistryImpl.java:109) at java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:203) at org.springframework.remoting.rmi.RmiRegistryFactoryBean.getRegistry(RmiRegistryFactoryBean.java:267) at org.springframework.remoting.rmi.RmiRegistryFactoryBean.getRegistry(RmiRegistryFactoryBean.java:236) at org.springframework.remoting.rmi.RmiRegistryFactoryBean.getRegistry(RmiRegistryFactoryBean.java:193) at org.springframework.remoting.rmi.RmiRegistryFactoryBean.afterPropertiesSet(RmiRegistryFactoryBean.java:164) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAuto wireCapableBeanFactory.java:1477) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowir eCapableBeanFactory.java:1417) ... 26 more Caused by: java.net.BindException: Permission denied

How to fix this error and getting deployed this application in Openshift? 如何解决此错误并在Openshift中部署此应用程序?

Thanks! 谢谢!

Port already in use: 4777 已使用的端口:4777

Use a port that isn't already in use. 使用尚未使用的端口。

OR make your sure application is really stopped before you restart it. 或者,在重新启动应用程序之前,确保它已真正停止。

In OpenShift it is possible to bind to the internal IP with port range: 15000 - 35530. So, you can't use 4477. Use anything between 15000-35530. 在OpenShift中,可以使用以下端口范围绑定到内部IP:15000-35530。因此,您不能使用4477。请使用15000-35530之间的任何值。 Also, understand that these are internal ports which means you can only use them from within application. 另外,请了解这些是内部端口,这意味着您只能在应用程序内部使用它们。 Read more at https://www.openshift.com/kb/kb-e1038-i-cant-bind-to-a-port https://www.openshift.com/kb/kb-e1038-i-cant-bind-to-a-port上阅读更多内容

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM