You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Michael Taeschner (JIRA)" <ji...@apache.org> on 2015/08/28 10:02:45 UTC

[jira] [Updated] (KARAF-3887) JMXRMI over SSL - Exceptions on Karaf Shutdown

     [ https://issues.apache.org/jira/browse/KARAF-3887?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Taeschner updated KARAF-3887:
-------------------------------------
    Description: 
We are using JMXRMI over SSL connector as described at JBoss Fuse 6 documentation [1]. This has worked flawlessly with Karaf 2.4.1 (as base for ServiceMix 4.5.0) but causes exceptions on container shutdown for version 2.4.3. During runtime the SSL connector is working though as before.

Exceptions: StackTrace 1
{noformat}Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException: Could not start JMX connector server
        at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:272)
Caused by: java.io.IOException: Cannot bind to URL [rmi://0.0.0.0:1099/karaf-root]: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
        at javax.management.remote.rmi.RMIConnectorServer.newIOException(RMIConnectorServer.java:827)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:432)
        at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:259)
Caused by: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
        at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:147)
        at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:228)
        at javax.naming.InitialContext.bind(InitialContext.java:425)
        at javax.management.remote.rmi.RMIConnectorServer.bind(RMIConnectorServer.java:644)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:427)
        ... 1 more
Caused by: java.rmi.NoSuchObjectException: no such object in table
        at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:379)
        at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:141)
        ... 5 more
{noformat}
StackTrace 2
{noformat}
Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException:
Port already in use: 44444;
You may have started two containers.  If you need to start a second container or the default ports are already in use update the config file etc/org.apache.karaf.management.cfg and change the Registry Port and Server Port to unused ports
        at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:268)
{noformat}

etc/org.apache.karaf.management.cfg#ObjectName 
{code:none}
#
# The ObjectName used to register the JMXConnectorServer
#
objectName = connector:name=rmi
keyStoreAvailabilityTimeout = 5000
keyStore = karaf.keystore
# keyAlias maps to keystore.xml keyPasswords alias
keyAlias = local-test
secured = true
authenticatorType = password
trustStore = karaf.keystore
secureAlgorithm = default
secureProtocol = SSL
{code}

The issue can be recreated using stock Karaf download with the following steps:
- copy attached keystore.xml and org.apache.felix.fileinstall-keystore.cfg to ./etc folder
- copy self-signed keystore file (karaf.jmx.ssl.jks) to etc folder
- modify etc/org.apache.karaf.management.cfg as shown below (or use modified copy attached to issue)
- run container, check exceptions on shutdown

[1] https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.0/html/Security_Guide/files/ESBSecurityJmxSSL.html

  was:
We are using JMXRMI over SSL connector as described at JBoss Fuse 6 documentation [1]. This has worked flawlessly with Karaf 2.4.1 (as base for ServiceMix 4.5.0) but causes exceptions on container shutdown for version 2.4.3. During runtime the SSL connector is working though as before.

Exceptions: StackTrace 1
{noformat}Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException: Could not start JMX connector server
        at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:272)
Caused by: java.io.IOException: Cannot bind to URL [rmi://0.0.0.0:1099/karaf-root]: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
        at javax.management.remote.rmi.RMIConnectorServer.newIOException(RMIConnectorServer.java:827)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:432)
        at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:259)
Caused by: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
        at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:147)
        at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:228)
        at javax.naming.InitialContext.bind(InitialContext.java:425)
        at javax.management.remote.rmi.RMIConnectorServer.bind(RMIConnectorServer.java:644)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:427)
        ... 1 more
Caused by: java.rmi.NoSuchObjectException: no such object in table
        at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:379)
        at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:141)
        ... 5 more
{noformat}
StackTrace 2
{noformat}
Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException:
Port already in use: 44444;
You may have started two containers.  If you need to start a second container or the default ports are already in use update the config file etc/org.apache.karaf.management.cfg and change the Registry Port and Server Port to unused ports
        at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:268)
{noformat}

etc/org.apache.karaf.management.cfg#ObjectName 
{code:text}
#
# The ObjectName used to register the JMXConnectorServer
#
objectName = connector:name=rmi
keyStoreAvailabilityTimeout = 5000
keyStore = karaf.keystore
# keyAlias maps to keystore.xml keyPasswords alias
keyAlias = local-test
secured = true
authenticatorType = password
trustStore = karaf.keystore
secureAlgorithm = default
secureProtocol = SSL
{code}

The issue can be recreated using stock Karaf download with the following steps:
- copy attached keystore.xml and org.apache.felix.fileinstall-keystore.cfg to ./etc folder
- copy self-signed keystore file (karaf.jmx.ssl.jks) to etc folder
- modify etc/org.apache.karaf.management.cfg as shown below (or use modified copy attached to issue)
- run container, check exceptions on shutdown

[1] https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.0/html/Security_Guide/files/ESBSecurityJmxSSL.html


> JMXRMI over SSL - Exceptions on Karaf Shutdown
> ----------------------------------------------
>
>                 Key: KARAF-3887
>                 URL: https://issues.apache.org/jira/browse/KARAF-3887
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-management
>    Affects Versions: 2.4.3
>            Reporter: Michael Taeschner
>         Attachments: karaf.jmx.ssl.jks, keys.properties, keystore.xml, org.apache.karaf.management.cfg
>
>
> We are using JMXRMI over SSL connector as described at JBoss Fuse 6 documentation [1]. This has worked flawlessly with Karaf 2.4.1 (as base for ServiceMix 4.5.0) but causes exceptions on container shutdown for version 2.4.3. During runtime the SSL connector is working though as before.
> Exceptions: StackTrace 1
> {noformat}Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException: Could not start JMX connector server
>         at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:272)
> Caused by: java.io.IOException: Cannot bind to URL [rmi://0.0.0.0:1099/karaf-root]: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
>         at javax.management.remote.rmi.RMIConnectorServer.newIOException(RMIConnectorServer.java:827)
>         at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:432)
>         at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:259)
> Caused by: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
>         at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:147)
>         at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:228)
>         at javax.naming.InitialContext.bind(InitialContext.java:425)
>         at javax.management.remote.rmi.RMIConnectorServer.bind(RMIConnectorServer.java:644)
>         at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:427)
>         ... 1 more
> Caused by: java.rmi.NoSuchObjectException: no such object in table
>         at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
>         at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
>         at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:379)
>         at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
>         at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:141)
>         ... 5 more
> {noformat}
> StackTrace 2
> {noformat}
> Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException:
> Port already in use: 44444;
> You may have started two containers.  If you need to start a second container or the default ports are already in use update the config file etc/org.apache.karaf.management.cfg and change the Registry Port and Server Port to unused ports
>         at org.apache.karaf.management.ConnectorServerFactory$1.run(ConnectorServerFactory.java:268)
> {noformat}
> etc/org.apache.karaf.management.cfg#ObjectName 
> {code:none}
> #
> # The ObjectName used to register the JMXConnectorServer
> #
> objectName = connector:name=rmi
> keyStoreAvailabilityTimeout = 5000
> keyStore = karaf.keystore
> # keyAlias maps to keystore.xml keyPasswords alias
> keyAlias = local-test
> secured = true
> authenticatorType = password
> trustStore = karaf.keystore
> secureAlgorithm = default
> secureProtocol = SSL
> {code}
> The issue can be recreated using stock Karaf download with the following steps:
> - copy attached keystore.xml and org.apache.felix.fileinstall-keystore.cfg to ./etc folder
> - copy self-signed keystore file (karaf.jmx.ssl.jks) to etc folder
> - modify etc/org.apache.karaf.management.cfg as shown below (or use modified copy attached to issue)
> - run container, check exceptions on shutdown
> [1] https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.0/html/Security_Guide/files/ESBSecurityJmxSSL.html



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)