2013-05-20 88 views
5

我在openshift的应用程序中运行嵌入式activemq消息服务器。根据this,您只能在15000 - 35530上绑定。我试着做了以下,但它是一个严重的错误。可能是什么问题?无法绑定到Openshift上的端口

我正在使用弹簧。这是部分在我applicationContext.xml

<amq:broker brokerName="tentacle-broker" start="true"> 
    <amq:persistenceAdapter> 
     <amq:amqPersistenceAdapter directory="/var/lib/openshift/username/jbossews-2.0/jbossews-2.0/activemq2" maxFileLength="32mb"/> 
    </amq:persistenceAdapter> 
    <amq:transportConnectors> 
     <amq:transportConnector uri="tcp://127.10.180.129:15001"/> 
    </amq:transportConnectors> 
</amq:broker> 

这是我遇到

WARNING: could not generate unique stub 
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 org.apache.activemq.util.IdGenerator.<clinit>(IdGenerator.java:54) 
     at org.apache.activemq.broker.region.RegionBroker.<clinit>(RegionBroker.java:81) 
     at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:1830) 
     at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:1824) 
     at org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:1781) 
     at org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:766) 
     at org.apache.activemq.broker.BrokerService.start(BrokerService.java:497) 
     at org.apache.activemq.broker.BrokerService.autoStart(BrokerService.java:463) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProces 
r.java:293) 
va:130) 
ava:394) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1405) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) 
     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
     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.deployWAR(HostConfig.java:963) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1600) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
: 
+1

该端口可能正在使用中,您用于执行OpenShift的用户没有足够的权限来打开新的端口,或者有另一个应用程序阻止您打开该端口。 –

+0

@LuiggiMendoza根据Openshift文档,我可以在我的应用程序中自由绑定该端口。在端口'15001'上没有其他绑定。我仍然困惑为什么不允许。 –

+0

同样,这不是OpenShift问题,它是阻止OpenShift打开新端口的用户/外部应用程序问题。例如,出于安全目的,防火墙可以阻止您的应用绑定新的端口。通过了解这一点,您的问题甚至不与编程直接相关。 –

回答

0

在Openshift错误,则只能绑定到服务器分配给你的端口。通常情况下,这是环境变量$ OPENSHIFT_JBOSS_PORT的值(它在不同的盒式磁带之间有所不同),并且各个齿轮之间的值有所不同。绑定到任何其他端口将作为SELinux策略违规进行报告并被拒绝。

+0

我的tomcat已经在使用的端口通常是8080。我实际上使用了'diy'。在我的'diy'中,我有'activemq'和'tomcat'。 'activemq'设置为在'tcp'端口'16005'上运行,根据'openshift'打开。我发现'activemq'没有启动,我想这就是我有权限拒绝异常的原因,除非有任何其他原因。所以我不认为我可以在同一个端口'8080'上绑定两次。 –

+0

我使用https://www.openshift.com/blogs/activemq-on-paas上的示例为消息服务器创建了另一个应用程序。消息服务器已启动,但在tomcat中运行的应用程序无法连接到它。我尝试连接到'tcp 15005'和'http 8080',但无法连接。第一个例如'tcp 15005'抛出了'java.net.NoRouteToHostException'异常,第二个'Permission denied exception'。 –

+0

@Uchenna Nwanyanwu:你解决了这个问题吗?我也一样。 http://stackoverflow.com/questions/39314900/how-to-open-tcp-port-in-openshift –