Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-14514

Upgrade Confluence to use Felix >=1.4.0 to allow EJB call on JavaEE server

    XMLWordPrintable

Details

    • Suggestion
    • Resolution: Timed out
    • None
    • None
    • We collect Confluence feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

    Description

      NOTE: This suggestion is for Confluence Server. Using Confluence Cloud? See the corresponding suggestion.

      We use Confluence on top of JOnAS 4.8.6 that includes Tomcat 5.5.17.

      The previous version of Confluence work fine and the 2.9.2 version is in production.

      However we can't use Confluence 2.10 and 2.10.1 because those versions prevent our application server to call external EJB. In fact, this is a critical issue for us because all of our security model relies on EJB and RemoteLoginModule.
      For instance when I try to login on Confluence I get the following exception :
      javax.naming.NamingException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:

      java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
      java.io.IOException: unknown protocol: felix]
      at org.objectweb.carol.cmi.jndi.FlatCtx.lookup(FlatCtx.java:236)
      at org.objectweb.carol.cmi.jndi.FlatCtx.lookup(FlatCtx.java:250)
      at javax.naming.InitialContext.lookup(InitialContext.java:355)
      at org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
      at org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
      at javax.naming.InitialContext.lookup(InitialContext.java:351)
      at javax.naming.InitialContext.lookup(InitialContext.java:351)
      at org.objectweb.jonas.security.auth.spi.RemoteLoginModule.findRemoteResource(RemoteLoginModule.java:274)
      at org.objectweb.jonas.security.auth.spi.RemoteLoginModule.login(RemoteLoginModule.java:186)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
      at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
      at org.objectweb.jonas.security.realm.web.catalina55.JAAS.authenticate(JAAS.java:149)
      at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:257)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
      at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:107)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
      at websecurity.filter.AuthenticationValve.invoke(AuthenticationValve.java:97)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)

      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
      java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
      java.io.IOException: unknown protocol: felix
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:325)
      at sun.rmi.transport.Transport$1.run(Transport.java:153)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
      at java.lang.Thread.run(Thread.java:595)
      at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
      at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
      at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
      at org.objectweb.carol.cmi.RegistryImpl_Stub.lookup(Unknown Source)
      at org.objectweb.carol.cmi.RegistryClient.lookup(RegistryClient.java:89)
      at org.objectweb.carol.cmi.jndi.FlatCtx.lookup(FlatCtx.java:219)
      ... 34 more
      Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
      java.io.IOException: unknown protocol: felix
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:282)
      at sun.rmi.transport.Transport$1.run(Transport.java:153)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
      ... 1 more
      Caused by: java.io.IOException: unknown protocol: felix
      at java.net.URL.readObject(URL.java:1217)
      at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
      at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1634)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
      at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:290)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:279)
      ... 6 more

      The issue seems to come from Felix.
      After few researches, I've found that Confluence use twice almost the same library of Felix :
      org.apache.felix.framework-1.2.1-atlassian-3.jar
      org.apache.felix.main-1.2.1-atlassian-3.jar

      For me, the 1st one is useless.

      The JOnAS experts told me that upgrading to the latest version of Felix (1.4.0) could solve the problem.

      So after upgrading to Felix 1.4.0 I can login. However several plugins doesn't deploy any more :
      2009-02-05 11:44:35,988 * INFO * Initialising the plugin system [com.atlassian.plugin.DefaultPluginManager]
      2009-02-05 11:44:39,324 * ERROR * Exception calling listener method [com.atlassian.plugin.event.impl.DefaultPluginEventManager]
      java.lang.NoSuchMethodError: org.apache.felix.framework.Felix.<init>(Lorg/apache/felix/framework/Logger;Ljava/util/Map;Ljava/util/List;)V

      2009-02-05 11:44:42,428 * ERROR * Unable to deploy plugin 'com.atlassian.confluence.extra.widgetconnector', file Unit: /opt/appserver/exo/Lab650701C_linurge1_Jon48_WIKIADM/confluence-data/bundled-pl
      ugins/widgetconnector-1.0.1.jar (1233830646000) [com.atlassian.plugin.loaders.DirectoryPluginLoader]
      java.lang.IllegalArgumentException: The host component registrations are required

      2009-02-05 11:44:42,499 * ERROR * Unable to deploy plugin 'confluence.repository.client', file Unit: /opt/appserver/exo/Lab650701C_linurge1_Jon48_WIKIADM/confluence-data/bundled-plugins/atlassian-pl
      ugin-repository-confluence-plugin-2.1.1.jar (1233830646000) [com.atlassian.plugin.loaders.DirectoryPluginLoader]
      java.lang.IllegalArgumentException: The host component registrations are required

      2009-02-05 11:44:42,612 * ERROR * Unable to deploy plugin 'confluence.extra.dynamictasklist2', file Unit: /opt/appserver/exo/Lab650701C_linurge1_Jon48_WIKIADM/confluence-data/bundled-plugins/dynamic
      tasklist2-3.1.1.jar (1233830646000) [com.atlassian.plugin.loaders.DirectoryPluginLoader]
      java.lang.IllegalArgumentException: The host component registrations are required

      Finally, my request is that I'd like Confluence to be upgraded with Felix >=1.4.0 for the next releases.

      Attachments

        Issue Links

          Activity

            People

              barconati BillA
              786e64edcb07 Xavier MOGHRABI
              Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: