2013-05-20 12 views
5

Sto eseguendo un server di messaggi activemq incorporato nella mia applicazione su openshift. Secondo this, è possibile eseguire il binding solo su 15000 - 35530. Ho provato a fare quanto segue, ma sta generando un errore grave. Quale potrebbe essere il problema?Impossibile collegarsi a una porta su Openshift

Sto usando la primavera. Questa è una parte della mia 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> 

Questo è l'errore che sto avendo

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

La porta potrebbe essere in uso, l'utente che si utilizza per eseguire OpenShift non dispone di privilegi sufficienti per aprire una nuova porta o c'è un'altra applicazione che blocca la propria per aprire la porta. –

+0

@LuiggiMendoza Secondo la documentazione di Openshift, sono libero di collegarmi a quella porta all'interno della mia applicazione. Non ci sono altri vincoli sulla porta '15001'. Sono ancora confuso perché non è permesso. –

+0

Ancora, questo non è un problema di OpenShift, è un problema di utente/applicazione esterna che blocca OpenShift per aprire una nuova porta. Ad esempio, un firewall può bloccare la tua applicazione per legare una nuova porta per motivi di sicurezza. Conoscendo questo, il tuo problema non è nemmeno direttamente correlato alla programmazione. –

risposta

0

In OpenShift, si può associare solo alla porta che il server alloca per voi. In genere questo è il valore della variabile di ambiente $ OPENSHIFT_JBOSS_PORT (varia tra le cartucce) e il valore è diverso da ingranaggi. Il collegamento a qualsiasi altra porta verrà segnalato come violazione della politica SELinux e negato.

+0

La porta è in genere 8080 che il mio tomcat sta già utilizzando. In realtà ho usato 'fai da te '. Nel mio 'diy', ho sia' activemq' che 'tomcat'. L''activemq' è stato configurato per funzionare su 'tcp' port' 16005' che secondo 'openshift' è aperto. Ho scoperto che l''activemq' non parte suppongo che sia la ragione per cui ho avuto il permesso di negare l'autorizzazione a meno che non ci sia un altro motivo. Quindi non penso di poter legare sulla stessa porta '8080' due volte. –

+0

Ho creato un'altra applicazione per il server dei messaggi utilizzando l'esempio su https://www.openshift.com/blogs/activemq-on-paas. Il server messaggi è stato avviato, ma la mia applicazione in esecuzione in tomcat non è riuscita a connettersi ad essa. Ho provato a connettermi a 'tcp 15005' e' http 8080' ma non ho potuto ottenere la connessione. La prima i.e 'tcp 15005' ha lanciato l'eccezione' java.net.NoRouteToHostException' e la seconda 'Permission denied exception'. –

+0

@Uchenna Nwanyanwu: hai risolto questo problema? Sto diventando lo stesso. http://stackoverflow.com/questions/39314900/how-to-open-tcp-port-in-openshift –