[ 
https://issues.apache.org/jira/browse/KARAF-5054?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16102939#comment-16102939
 ] 

Jean-Baptiste Onofré commented on KARAF-5054:
---------------------------------------------

It sounds like a race condition where the configuration is loaded after the 
activator start. Let me try to reproduce.

> Default rmiRegistryPort 1099 is used always besides different configuration
> ---------------------------------------------------------------------------
>
>                 Key: KARAF-5054
>                 URL: https://issues.apache.org/jira/browse/KARAF-5054
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-management
>    Affects Versions: 4.1.0
>         Environment: Windows 7 64bit, karaf 4.1.0 binary distribution, java 
> 1.8.0_121, clean start
>            Reporter: Jens Vagts
>            Assignee: Jean-Baptiste Onofré
>             Fix For: 4.1.2
>
>
> When starting a _clean_ karaf instance (either very first first start or with 
> {{clean}} command line parameter) the karaf management feature always tries 
> to open the default port {{1099}} before opening the configured port 
> resulting in a confusing exception in the {{karaf.log}}:
> {noformat}
> 2017-03-22T08:08:51,523 | WARN  | pool-23-thread-1 | Activator                
>         | 38 - org.apache.karaf.management.server - 4.1.0 | Error starting 
> activator
> java.rmi.server.ExportException: Port already in use: 1099; nested exception 
> is: 
>       java.net.BindException: Address already in use: JVM_Bind
>       at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:341) 
> [?:?]
>       at 
> sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:249) [?:?]
>       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:234) [?:?]
>       at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:195) [?:?]
>       at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:180) [?:?]
>       at 
> java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:203) [?:?]
>       at 
> org.apache.karaf.management.RmiRegistryFactory.init(RmiRegistryFactory.java:128)
>  [38:org.apache.karaf.management.server:4.1.0]
>       at 
> org.apache.karaf.management.internal.Activator.doStart(Activator.java:104) 
> [38:org.apache.karaf.management.server:4.1.0]
>       at 
> org.apache.karaf.util.tracker.BaseActivator.run(BaseActivator.java:242) 
> [38:org.apache.karaf.management.server:4.1.0]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  [?:?]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  [?:?]
>       at java.lang.Thread.run(Thread.java:745) [?:?]
> Caused by: java.net.BindException: Address already in use: JVM_Bind
>       at java.net.DualStackPlainSocketImpl.bind0(Native Method) ~[?:?]
>       at 
> java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
>  ~[?:?]
>       at 
> java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) ~[?:?]
>       at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190) ~[?:?]
>       at java.net.ServerSocket.bind(ServerSocket.java:375) ~[?:?]
>       at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[?:?]
>       at java.net.ServerSocket.<init>(ServerSocket.java:128) ~[?:?]
>       at 
> sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(RMIDirectSocketFactory.java:45)
>  ~[?:?]
>       at 
> sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(RMIMasterSocketFactory.java:345)
>  ~[?:?]
>       at 
> sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) ~[?:?]
>       at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:330) 
> ~[?:?]
>       ... 15 more
> {noformat}
> if the port is already used by another process (e.g. another karaf instance).
> The configured port {{rmiRegistryPort = 1100}} in the config file  
> {{org.apache.karaf.management.cfg}} will be nevertheless applied afterwards.
> This can easily reproduced by creating two instances of the standard karaf 
> {{4.1.0}} binary distributions and applying above configuration to the second 
> instance.
> This occurs on _Windows_ (7 64 bit tested) only, and can *not* be reproduced 
> on _Linux_ OS!
> The same behavior (of using the default port before the differently 
> configured one) has been observed for other ports as of: rmi server port 
> ({{rmiServerPort}} in {{org.apache.karaf.management.cfg}}) and ssh 
> ({{sshPort}} in {{org.apache.karaf.shell.cfg}}. Depending on the logging 
> configuration the failing usage of the default ports can be seen before the 
> configured ports are taken into account.
> Re-configuring the ports at runtime via the configuration properties works 
> fine!
>  



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to