【问题标题】:Java RMI port binding error in openshiftopenshift中的Java RMI端口绑定错误
【发布时间】:2013-04-28 21:07:41
【问题描述】:

我开发了一个基于 Spring 的小型 Web 应用程序来测试 Spring RMI。在那里,我创建了一个简单的服务来根据输入参数生成问候消息并将其返回给客户端。我的 spring 上下文文件如下所示:

<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"
/>

首先,我在运行 tomcat server 7 的本地电脑上部署了这个应用程序,并且部署成功。 然后我把这个应用的war文件上传到了Openshift tomcat 7 DIY服务器。但它没有部署我的应用程序并在日志文件中给出了这个错误。

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

如何修复此错误并在 Openshift 中部署此应用程序?

谢谢!

【问题讨论】:

    标签: java spring tomcat rmi openshift


    【解决方案1】:

    端口已在使用:4777

    使用尚未使用的端口。

    或者在重新启动之前确保您的应用程序确实已停止。

    【讨论】:

    • 我已经运行“netstat a | grep $OPENSHIFT_INTERNAL_IP”来检查当前运行的端口。但端口 4447 不存在。而且我也随机尝试了不同的端口(1099,9999 等)。但他们没有工作。尝试所有不同的端口是不切实际的。您是否看到 Permission denied 异常。所以我想这是关于openshift服务器中端口绑定的许可。有什么想法吗?
    • 错误信息中的端口号是4777,但是'permission denied'意味着你需要设置一个Windows防火墙规则。
    • 感谢您的帮助!是的,可能是防火墙的问题。但我认为我们无权以用户身份更改 openshift 服务器中的防火墙设置。
    【解决方案2】:

    在 OpenShift 中,可以使用端口范围绑定到内部 IP:15000 - 35530。因此,您不能使用 4477。请使用 15000-35530 之间的任何内容。此外,请了解这些是内部端口,这意味着您只能在应用程序中使用它们。阅读更多https://www.openshift.com/kb/kb-e1038-i-cant-bind-to-a-port

    【讨论】:

    • 但我也尝试了端口范围之间的几个端口:15000 - 35530 在此之后,我得到了相同的结果(java.net.BindException:权限被拒绝)。是的,我知道我无法从外部访问这些端口。但首先我想成功部署我的应用程序。然后我必须找到一种方法将我的 rmi 端口转发到外部可访问的端口。
    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2021-08-03
    相关资源
    最近更新 更多