Oh sorry, you already made it ApplicationScoped with your second commit :)

2016-07-06 10:40 GMT+02:00 Thomas Andraschko <[email protected]>:

> Hi John,
>
> thanks for fixing it.
> The current solution will be very slow and we should make
> DelegateManualInvocationHandler and InterceptManualInvocationHandler
> ApplicationScoped.
> It would be still great if you could compare the performance e.g. for
> 10.000 calls with our old code (with static) vs
> ApplicationScoped+BeanProvider.
>
> 2016-07-06 4:12 GMT+02:00 John D. Ament <[email protected]>:
>
>> I ended up pushing a second commit which I think will make things better.
>> But still not 100% sure.  The problem is that the static invocation
>> handler
>> was holding a reference to InterceptorLookup, which gets lost between
>> container boots (or even, if there are multiple bean managers around for
>> some reason).
>>
>> On Tue, Jul 5, 2016 at 9:42 PM John D. Ament <[email protected]>
>> wrote:
>>
>> > Hi @Thomas and others
>> >
>> > This was a tricky one but I think I got it.  Don't have a good test for
>> it
>> > yet.
>> >
>> > Basically, in the case of web profile tests, we didn't see this as an
>> > issue as the classloader gets cleared, so its not a problem.
>> >
>> > However, if you test proxy based classes in an SE environment, the
>> static
>> > reference to the contextual instance may be loaded incorrectly.  In
>> those
>> > situations, we need to make sure its cleared.
>> >
>> > I removed the static reference.  I'm concerned about the performance
>> > implications.  Do you see any reason to not use an app scoped bean here
>> > instead of dependent?  I wouldn't consider this done, as the dependent
>> bean
>> > still leaks.
>> >
>> > John
>> >
>> >
>> > On Tue, Jul 5, 2016 at 9:37 PM <[email protected]> wrote:
>> >
>> >> Repository: deltaspike
>> >> Updated Branches:
>> >>   refs/heads/master 81b390e29 -> bc8c82e5b
>> >>
>> >>
>> >> DELTASPIKE-1179 Don't use a static reference to a contextual bean, in
>> the
>> >> case of beans being reloaded by multiple deployments.
>> >>
>> >>
>> >> Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
>> >> Commit:
>> http://git-wip-us.apache.org/repos/asf/deltaspike/commit/bc8c82e5
>> >> Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/bc8c82e5
>> >> Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/bc8c82e5
>> >>
>> >> Branch: refs/heads/master
>> >> Commit: bc8c82e5b68fb1d888fa6bac7494ed9870dca80d
>> >> Parents: 81b390e
>> >> Author: John D. Ament <[email protected]>
>> >> Authored: Tue Jul 5 21:36:41 2016 -0400
>> >> Committer: John D. Ament <[email protected]>
>> >> Committed: Tue Jul 5 21:37:07 2016 -0400
>> >>
>> >> ----------------------------------------------------------------------
>> >>  .../proxy/impl/invocation/DelegateManualInvocationHandler.java | 6
>> +++---
>> >>  .../impl/invocation/InterceptManualInvocationHandler.java      | 6
>> +++---
>> >>  .../apache/deltaspike/test/testcontrol/uc003/TestSuite.java    | 3 ---
>> >>  3 files changed, 6 insertions(+), 9 deletions(-)
>> >> ----------------------------------------------------------------------
>> >>
>> >>
>> >>
>> >>
>> http://git-wip-us.apache.org/repos/asf/deltaspike/blob/bc8c82e5/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/DelegateManualInvocationHandler.java
>> >> ----------------------------------------------------------------------
>> >> diff --git
>> >>
>> a/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/DelegateManualInvocationHandler.java
>> >>
>> b/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/DelegateManualInvocationHandler.java
>> >> index d247253..a4911f7 100644
>> >> ---
>> >>
>> a/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/DelegateManualInvocationHandler.java
>> >> +++
>> >>
>> b/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/DelegateManualInvocationHandler.java
>> >> @@ -18,6 +18,7 @@
>> >>   */
>> >>  package org.apache.deltaspike.proxy.impl.invocation;
>> >>
>> >> +import org.apache.deltaspike.core.api.provider.BeanProvider;
>> >>  import org.apache.deltaspike.proxy.spi.DeltaSpikeProxy;
>> >>
>> >>  import java.lang.reflect.InvocationHandler;
>> >> @@ -32,11 +33,10 @@ import javax.enterprise.inject.Typed;
>> >>  @Typed
>> >>  public class DelegateManualInvocationHandler extends
>> >> AbstractManualInvocationHandler
>> >>  {
>> >> -    private static final DelegateManualInvocationHandler INSTANCE =
>> new
>> >> DelegateManualInvocationHandler();
>> >> -
>> >>      public static Object staticInvoke(Object proxy, Method method,
>> >> Object[] parameters) throws Throwable
>> >>      {
>> >> -        return INSTANCE.invoke(proxy, method, parameters);
>> >> +        DelegateManualInvocationHandler handler =
>> >>
>> BeanProvider.getContextualReference(DelegateManualInvocationHandler.class);
>> >> +        return handler.invoke(proxy, method, parameters);
>> >>      }
>> >>
>> >>      @Override
>> >>
>> >>
>> >>
>> http://git-wip-us.apache.org/repos/asf/deltaspike/blob/bc8c82e5/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/InterceptManualInvocationHandler.java
>> >> ----------------------------------------------------------------------
>> >> diff --git
>> >>
>> a/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/InterceptManualInvocationHandler.java
>> >>
>> b/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/InterceptManualInvocationHandler.java
>> >> index 17e23ae..b4f7d7a 100644
>> >> ---
>> >>
>> a/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/InterceptManualInvocationHandler.java
>> >> +++
>> >>
>> b/deltaspike/modules/proxy/impl-asm5/src/main/java/org/apache/deltaspike/proxy/impl/invocation/InterceptManualInvocationHandler.java
>> >> @@ -18,6 +18,7 @@
>> >>   */
>> >>  package org.apache.deltaspike.proxy.impl.invocation;
>> >>
>> >> +import org.apache.deltaspike.core.api.provider.BeanProvider;
>> >>  import org.apache.deltaspike.proxy.api.DeltaSpikeProxyFactory;
>> >>
>> >>  import java.lang.reflect.InvocationTargetException;
>> >> @@ -31,11 +32,10 @@ import javax.enterprise.inject.Typed;
>> >>  @Typed
>> >>  public class InterceptManualInvocationHandler extends
>> >> AbstractManualInvocationHandler
>> >>  {
>> >> -    private static final InterceptManualInvocationHandler INSTANCE =
>> new
>> >> InterceptManualInvocationHandler();
>> >> -
>> >>      public static Object staticInvoke(Object proxy, Method method,
>> >> Object[] parameters) throws Throwable
>> >>      {
>> >> -        return INSTANCE.invoke(proxy, method, parameters);
>> >> +        InterceptManualInvocationHandler handler =
>> >>
>> BeanProvider.getContextualReference(InterceptManualInvocationHandler.class);
>> >> +        return handler.invoke(proxy, method, parameters);
>> >>      }
>> >>
>> >>      @Override
>> >>
>> >>
>> >>
>> http://git-wip-us.apache.org/repos/asf/deltaspike/blob/bc8c82e5/deltaspike/modules/test-control/impl/src/test/java/org/apache/deltaspike/test/testcontrol/uc003/TestSuite.java
>> >> ----------------------------------------------------------------------
>> >> diff --git
>> >>
>> a/deltaspike/modules/test-control/impl/src/test/java/org/apache/deltaspike/test/testcontrol/uc003/TestSuite.java
>> >>
>> b/deltaspike/modules/test-control/impl/src/test/java/org/apache/deltaspike/test/testcontrol/uc003/TestSuite.java
>> >> index 65e5015..5d26b70 100644
>> >> ---
>> >>
>> a/deltaspike/modules/test-control/impl/src/test/java/org/apache/deltaspike/test/testcontrol/uc003/TestSuite.java
>> >> +++
>> >>
>> b/deltaspike/modules/test-control/impl/src/test/java/org/apache/deltaspike/test/testcontrol/uc003/TestSuite.java
>> >> @@ -29,9 +29,6 @@ import
>> >> org.apache.deltaspike.test.testcontrol.shared.ApplicationScopedBean;
>> >>
>> >>  //Usually NOT needed! Currently only needed due to our
>> arquillian-setup
>> >>  @Category(SeCategory.class)
>> >> -
>> >> -
>> >> -
>> >>  @RunWith(CdiTestSuiteRunner.class) //starts container once (for the
>> >> whole suite)
>> >>  @Suite.SuiteClasses({
>> >>          RequestAndSessionScopePerTestMethodTest.class,
>> >>
>> >>
>>
>
>

Reply via email to