Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.0-m1
    • Component/s: None
    • Labels:
      None

      Description

      ActiveMQ jars are already OSGified, but we may want to create a bundle that would create a broker by default and registering a pooled connection factory in OSGi maybe. That way, everyone could use the ConnectionFactory registered in OSGi.

        Activity

        Guillaume Nodet created issue -
        Rob Davies made changes -
        Field Original Value New Value
        Assignee Rob Davies [ rajdavies ]
        Guillaume Nodet made changes -
        Assignee Rob Davies [ rajdavies ] Jeff Yu [ jeff.yu ]
        Jeff Yu made changes -
        Status Open [ 1 ] In Progress [ 3 ]
        Hide
        Jeff Yu added a comment -

        With this little patch:
        1. It will start an embedded broker.
        2. Register the pooledConnectionFactory (provided by activemq) in the OSGi container.
        3. Add a system test in the itest module.

        In this bundle.
        1) import the commons-pool jar, and export it. ( for right now, it doesn't have the commons-pool bundle available).
        2) import the javax.transaction package, although the geronimo_jta-1.1_spec is a bundle, but It complains that can't find the javax.transaction even I install that bundle.. so I use the <Private-Package> to import this jta-spec.

        Show
        Jeff Yu added a comment - With this little patch: 1. It will start an embedded broker. 2. Register the pooledConnectionFactory (provided by activemq) in the OSGi container. 3. Add a system test in the itest module. In this bundle. 1) import the commons-pool jar, and export it. ( for right now, it doesn't have the commons-pool bundle available). 2) import the javax.transaction package, although the geronimo_jta-1.1_spec is a bundle, but It complains that can't find the javax.transaction even I install that bundle.. so I use the <Private-Package> to import this jta-spec.
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15893 ]
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15893 ]
        Hide
        Jeff Yu added a comment -

        updated version.

        Show
        Jeff Yu added a comment - updated version.
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15894 ]
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15894 ]
        Hide
        Jeff Yu added a comment -

        updated this by using "svn diff" command.

        Show
        Jeff Yu added a comment - updated this by using "svn diff" command.
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15895 ]
        Hide
        Freeman Fang added a comment -

        all tests passed, apply it on behalf of Jeff Yu.

        Show
        Freeman Fang added a comment - all tests passed, apply it on behalf of Jeff Yu.
        Hide
        Guillaume Nodet added a comment -

        Great, thx a lot Jeff !
        I'm wondering if we could enhance it a bit more to provide a ConnectionFactory with auto-enlistement and that would work with the transaction manager (only if it is available).
        We also need to make sure the transaction manager is aware of the JMS broker so that the recovery process can take place correctly.

        For the auto-enlistment connection factory, I suggest we use the jencks one, which works nicely with the geronimo transaction manager / jca connector.
        See http://jencks.codehaus.org/AMQPool

        Show
        Guillaume Nodet added a comment - Great, thx a lot Jeff ! I'm wondering if we could enhance it a bit more to provide a ConnectionFactory with auto-enlistement and that would work with the transaction manager (only if it is available). We also need to make sure the transaction manager is aware of the JMS broker so that the recovery process can take place correctly. For the auto-enlistment connection factory, I suggest we use the jencks one, which works nicely with the geronimo transaction manager / jca connector. See http://jencks.codehaus.org/AMQPool
        Hide
        Guillaume Nodet added a comment -

        Also, it would be nice to include the activemq bundle in the final distribution along with the property file so that users can customize those easily.

        Show
        Guillaume Nodet added a comment - Also, it would be nice to include the activemq bundle in the final distribution along with the property file so that users can customize those easily.
        Hide
        Jeff Yu added a comment -

        Thanks for Guillaume's comments, these makes perfect sense... I would add these in my next patch..

        Show
        Jeff Yu added a comment - Thanks for Guillaume's comments, these makes perfect sense... I would add these in my next patch..
        Hide
        Jeff Yu added a comment -

        with this patch:
        1. Using jencks jcaPooledConnectionFactory with transaction aware.
        2. Externalized the broker configuration.
        3. Add the activemq module in the distribution, add a configuration file in conf folder.
        4. Remove some duplicated package in the apache-servicemix module pom file.

        Still one thing left:
        establish connection between the transaction manager and the message broker.

        Show
        Jeff Yu added a comment - with this patch: 1. Using jencks jcaPooledConnectionFactory with transaction aware. 2. Externalized the broker configuration. 3. Add the activemq module in the distribution, add a configuration file in conf folder. 4. Remove some duplicated package in the apache-servicemix module pom file. Still one thing left: establish connection between the transaction manager and the message broker.
        Jeff Yu made changes -
        Attachment SM-1065-2.patch [ 15909 ]
        Jeff Yu made changes -
        Attachment SM-1065-2.patch [ 15909 ]
        Hide
        Jeff Yu added a comment - - edited

        Update the patch. Merged updates against latest 4.0 branch code.


        For the transaction, actually, the jcaPoolConnectionFactory will enlist the broker's xaResource into the transactionManager, if users provided the transaction manager.

        if users want to create a session, with the transactionManager, it will populate xaResource in following code in XaConnectionPool:

        session.setIgnoreClose(true);
        transactionManager.getTransaction().registerSynchronization(new Synchronization(session));
        incrementReferenceCount();
        transactionManager.getTransaction().enlistResource(createXaResource(session));

        So, the jcaPoolConnectionFactory will know the this broker resource manager, if it is RecoverableTransactionManager, it can loop the resources, and invoke: recoverResourceManager(NamedXAResourceManager) accordingly.

        Show
        Jeff Yu added a comment - - edited Update the patch. Merged updates against latest 4.0 branch code. For the transaction, actually, the jcaPoolConnectionFactory will enlist the broker's xaResource into the transactionManager, if users provided the transaction manager. if users want to create a session, with the transactionManager, it will populate xaResource in following code in XaConnectionPool: session.setIgnoreClose(true); transactionManager.getTransaction().registerSynchronization(new Synchronization(session)); incrementReferenceCount(); transactionManager.getTransaction().enlistResource(createXaResource(session)); So, the jcaPoolConnectionFactory will know the this broker resource manager, if it is RecoverableTransactionManager, it can loop the resources, and invoke: recoverResourceManager(NamedXAResourceManager) accordingly.
        Jeff Yu made changes -
        Attachment SMX-1065-2.patch [ 15915 ]
        Hide
        Guillaume Nodet added a comment -

        Hi Jeff, a few comments on this patch.

        • Including the activemq.xml using a classpath can be a problem because users won't be able to change it easily. Maybe we could put it outside the bundle in the ./conf /activemq.xml location in the binary distribution and use the $ {servicemix.home}/conf/activemq.xml inside the spring config ? It should work as ${servicemix.home}

          should be resolved as a system property.

        • You should use xbean 3.3-SNAPSHOT. Those jars are now OSGi bundles, so there is no need to put them inside our activemq bundle. For jencks, I suppose a better solution would be to provide a patch so that they also become bundles (but it can wait a bit)

        About the transaction manager, I think you missed a point. The code you point will make sure the session is enlisted as an xa resource in the transaction manager. The recovery process is another unrelated thing which occurs when the system restarts. If a transaction was in progress, the transaction manager needs to handle those *recovered transactions. For that, it needs to have the list of transactions that were in progress.
        This is done when the transaction manager calls
        XaResource.recover()
        But we need to give the transaction manager an XaResource at start time (only one) so that it can retrieve the transaction ids.

        So when the broker is started, I think we need an additional bean that will do:

        ((RecoverableTransactionManager) txManager).recoverResourceManager(namedXaRes)

        where namedXaRes is a wrapper that could be created by the jcaPooledConnection (it has to have the same name)

        AFAIK, noone calls recoverResourceManager automatically, so we have to do it outselves.
        Did I miss somehting ?

        Show
        Guillaume Nodet added a comment - Hi Jeff, a few comments on this patch. Including the activemq.xml using a classpath can be a problem because users won't be able to change it easily. Maybe we could put it outside the bundle in the ./conf /activemq.xml location in the binary distribution and use the $ {servicemix.home}/conf/activemq.xml inside the spring config ? It should work as ${servicemix.home} should be resolved as a system property. You should use xbean 3.3-SNAPSHOT. Those jars are now OSGi bundles, so there is no need to put them inside our activemq bundle. For jencks, I suppose a better solution would be to provide a patch so that they also become bundles (but it can wait a bit) About the transaction manager, I think you missed a point. The code you point will make sure the session is enlisted as an xa resource in the transaction manager. The recovery process is another unrelated thing which occurs when the system restarts. If a transaction was in progress, the transaction manager needs to handle those *recovered transactions. For that, it needs to have the list of transactions that were in progress. This is done when the transaction manager calls XaResource.recover() But we need to give the transaction manager an XaResource at start time (only one) so that it can retrieve the transaction ids. So when the broker is started, I think we need an additional bean that will do: ((RecoverableTransactionManager) txManager).recoverResourceManager(namedXaRes) where namedXaRes is a wrapper that could be created by the jcaPooledConnection (it has to have the same name) AFAIK, noone calls recoverResourceManager automatically, so we have to do it outselves. Did I miss somehting ?
        Jeff Yu made changes -
        Attachment SMX-1065-2.patch [ 15915 ]
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15895 ]
        Hide
        Jeff Yu added a comment -

        with this patch:

        1. Add a ActiveMQResourceManager which will recover resource when it starts activemq.
        2. put $

        {servicemix.home}

        /conf/activemq.xml inside the spring config, so users can easily update the activemq.xml without recompile bundle.

        Show
        Jeff Yu added a comment - with this patch: 1. Add a ActiveMQResourceManager which will recover resource when it starts activemq. 2. put $ {servicemix.home} /conf/activemq.xml inside the spring config, so users can easily update the activemq.xml without recompile bundle.
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15919 ]
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15919 ]
        Hide
        Jeff Yu added a comment -

        1. Using servicemix.home from system environment.
        2. Add a log warning if recoverable() is false.
        3. Take out the genronimo transaction from the private-package.
        4. Remove the xbean-spring jar from servicemix.active bundle, by using pure spring xml syntax, this bundle doesn't need to import xbean-spring. But need to install the xbean-spring bundle, because activemq-core bundle needs it in order to externalize the activemq config file.

        Show
        Jeff Yu added a comment - 1. Using servicemix.home from system environment. 2. Add a log warning if recoverable() is false. 3. Take out the genronimo transaction from the private-package. 4. Remove the xbean-spring jar from servicemix.active bundle, by using pure spring xml syntax, this bundle doesn't need to import xbean-spring. But need to install the xbean-spring bundle, because activemq-core bundle needs it in order to externalize the activemq config file.
        Jeff Yu made changes -
        Attachment SM-1065.patch [ 15921 ]
        Hide
        Guillaume Nodet added a comment -

        I have applied the patch with a few fixes.
        Your 4th point was caused by a missing spring-jms bundle in the distribution. These bundles are now started, however something it still wrong. To see what happens when they start, launch the following commands in the shell console:

        osgi/stop 21
        osgi/start 21

        Here is the output I have

        Exception in thread "SimpleAsyncTaskExecutor-18" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activemqBroker' defined in OSGi res[/META-INF/spring/servicemix-activemq.xml|id=21|symName=org.apache.servicemix.activemq]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:917)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:873)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:514)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
                at java.security.AccessController.doPrivileged(Native Method)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
                at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
                at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
                at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:407)
                at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:735)
                at org.springframework.osgi.internal.context.support.AbstractDelegatedExecutionApplicationContext.postRefresh(AbstractDelegatedExecutionApplicationContext.java:218)
                at org.springframework.osgi.internal.extender.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:131)
                at java.lang.Thread.run(Thread.java:613)
        Caused by: java.lang.NoClassDefFoundError
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
                at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:83)
                at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:911)
                ... 14 more
        
        Show
        Guillaume Nodet added a comment - I have applied the patch with a few fixes. Your 4th point was caused by a missing spring-jms bundle in the distribution. These bundles are now started, however something it still wrong. To see what happens when they start, launch the following commands in the shell console: osgi/stop 21 osgi/start 21 Here is the output I have Exception in thread "SimpleAsyncTaskExecutor-18" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activemqBroker' defined in OSGi res[/META-INF/spring/servicemix-activemq.xml|id=21|symName=org.apache.servicemix.activemq]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:917) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:873) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:407) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:735) at org.springframework.osgi.internal.context.support.AbstractDelegatedExecutionApplicationContext.postRefresh(AbstractDelegatedExecutionApplicationContext.java:218) at org.springframework.osgi.internal.extender.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:131) at java.lang. Thread .run( Thread .java:613) Caused by: java.lang.NoClassDefFoundError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:83) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:911) ... 14 more
        Hide
        Guillaume Nodet added a comment -

        For an unkown reason, I now have a better exception:

        Exception in thread "SimpleAsyncTaskExecutor-12" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activemqBroker' defined in OSGi res[/META-INF/spring/servicemix-activemq.xml|id=21|symName=org.apache.servicemix.activemq]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/xbean/spring/context/impl/URIEditor
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:917)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:873)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:514)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
                at java.security.AccessController.doPrivileged(Native Method)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
                at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
                at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
                at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:407)
                at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:735)
                at org.springframework.osgi.internal.context.support.AbstractDelegatedExecutionApplicationContext.postRefresh(AbstractDelegatedExecutionApplicationContext.java:218)
                at org.springframework.osgi.internal.extender.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:131)
                at java.lang.Thread.run(Thread.java:613)
        Caused by: java.lang.NoClassDefFoundError: org/apache/xbean/spring/context/impl/URIEditor
                at org.apache.activemq.xbean.BrokerFactoryBean.<clinit>(BrokerFactoryBean.java:46)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
                at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:83)
                at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:911)
                ... 14 more
        
        Show
        Guillaume Nodet added a comment - For an unkown reason, I now have a better exception: Exception in thread "SimpleAsyncTaskExecutor-12" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activemqBroker' defined in OSGi res[/META-INF/spring/servicemix-activemq.xml|id=21|symName=org.apache.servicemix.activemq]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/xbean/spring/context/impl/URIEditor at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:917) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:873) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:407) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:735) at org.springframework.osgi.internal.context.support.AbstractDelegatedExecutionApplicationContext.postRefresh(AbstractDelegatedExecutionApplicationContext.java:218) at org.springframework.osgi.internal.extender.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:131) at java.lang. Thread .run( Thread .java:613) Caused by: java.lang.NoClassDefFoundError: org/apache/xbean/spring/context/impl/URIEditor at org.apache.activemq.xbean.BrokerFactoryBean.<clinit>(BrokerFactoryBean.java:46) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:83) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:911) ... 14 more
        Hide
        Jeff Yu added a comment -

        With https://issues.apache.org/jira/browse/XBEAN-99 patch, now we should finish this task.

        Show
        Jeff Yu added a comment - With https://issues.apache.org/jira/browse/XBEAN-99 patch, now we should finish this task.
        Jeff Yu made changes -
        Fix Version/s 4.0-m1 [ 11842 ]
        Status In Progress [ 3 ] Resolved [ 5 ]
        Fix Version/s 4.0 [ 11845 ]
        Resolution Fixed [ 1 ]
        Jeff Turner made changes -
        Project Import Sat Nov 27 00:46:19 EST 2010 [ 1290836779991 ]
        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open In Progress In Progress
        52d 6h 50m 1 Jeff Yu 12/Nov/07 02:42
        In Progress In Progress Resolved Resolved
        16d 3h 53m 1 Jeff Yu 28/Nov/07 06:36

          People

          • Assignee:
            Jeff Yu
            Reporter:
            Guillaume Nodet
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development