2013-05-20 35 views
5

Tôi đang chạy máy chủ tin nhắn activemq được nhúng trong ứng dụng của tôi trên openshift. Theo số this, bạn chỉ có thể liên kết trên 15000 - 35530. Tôi đã thử làm như sau, nhưng nó ném một lỗi nghiêm trọng. Điều gì có thể là vấn đề?Không thể liên kết với một cổng trên Openshift

Tôi đang sử dụng spring. Đây là một phần trong tôi 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> 

Đây là lỗi mà tôi đang gặp

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

Cổng có thể đang được sử dụng, người dùng bạn sử dụng để thực thi OpenShift không có đủ đặc quyền để mở cổng mới hoặc có một ứng dụng khác chặn bạn mở cổng. –

+0

@LuiggiMendoza Theo tài liệu Openshift, tôi tự do ràng buộc trên cổng đó trong ứng dụng của tôi. Không có ràng buộc nào khác trên cổng '15001'. Tôi vẫn còn bối rối vì sao nó không được phép. –

+0

Một lần nữa, đây không phải là một vấn đề OpenShift, nó là một vấn đề người dùng/ứng dụng bên ngoài chặn OpenShift để mở một cổng mới. Ví dụ, một tường lửa có thể chặn ứng dụng của bạn để ràng buộc một cổng mới vì mục đích bảo mật. Bằng cách biết điều này, vấn đề của bạn thậm chí không liên quan trực tiếp đến lập trình. –

Trả lời

0

Trong OpenShift, bạn chỉ có thể liên kết với cổng mà máy chủ phân bổ cho bạn. Thông thường đó là giá trị của biến môi trường $ OPENSHIFT_JBOSS_PORT (nó thay đổi giữa các hộp mực) và giá trị khác nhau giữa các bánh răng. Liên kết với bất kỳ cổng nào khác sẽ được báo cáo là vi phạm chính sách SELinux và bị từ chối.

+0

Cổng thường là 8080 mà tomcat của tôi đã sử dụng. Tôi thực sự sử dụng 'diy'. Trong 'diy' của tôi, tôi có cả' activemq' và 'tomcat'. 'Activemq' được thiết lập để chạy trên' tcp' port '16005' theo' openshift' được mở. Tôi phát hiện ra rằng 'activemq' không bắt đầu tôi đoán đó là lý do tôi có quyền' từ chối ngoại lệ 'trừ khi có bất kỳ lý do nào khác. Vì vậy, tôi không nghĩ rằng tôi có thể ràng buộc trên cùng một cổng '8080' hai lần. –

+0

Tôi đã tạo một ứng dụng khác cho máy chủ thư bằng cách sử dụng ví dụ tại https://www.openshift.com/blogs/activemq-on-paas. Máy chủ thư bắt đầu, nhưng ứng dụng của tôi chạy trong tomcat không thể kết nối với nó. Tôi đã thử kết nối với 'tcp 15005' và' http 8080' nhưng không thể kết nối. Chữ “tcp 15005” đầu tiên đã ném ra ngoại lệ 'java.net.NoRouteToHostException' và 'Quyền hạn bị từ chối' thứ hai. –

+0

@Uchenna Nwanyanwu: Bạn đã giải quyết được vấn đề này chưa? Tôi cũng vậy. http://stackoverflow.com/questions/39314900/how-to-open-tcp-port-in-openshift –

Các vấn đề liên quan