[
https://jira.jboss.org/browse/WELD-737?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12559251#action_12559251
]
Sivakumar Thyagarajan commented on WELD-737:
--------------------------------------------
I understand your point about private constructors support and yes, as you
point out the CDI spec states in 5.4.1 that such beans are unproxyable.
Could you let me know when the javassist dependencies would be removed? Would
ProxyFactory at
http://bit.ly/94ghUf be replaced? If the javassist dependencies of the Proxy is
removed and the closure of all class references from the generated Proxy is in
the set of packages exported by the weld-osgi-bundle, then the generated proxy
could be loaded using the Classloader used to load the proxied bean type to
handle package-private constructors and beans.
If this is indeed the plan, we don't need the getClassLoader() method in the
ProxyServices SPI, right as to be compatible with the spec, weld should use the
classloader of the proxied bean type to load the proxy as well?
http://github.com/weld/api/blob/master/weld-spi/src/main/java/org/jboss/weld/serialization/spi/ProxyServices.java#L55
> Proxy instantiation fails with IllegalAccessError for Beans with package
> private constructor
> --------------------------------------------------------------------------------------------
>
> Key: WELD-737
> URL: https://jira.jboss.org/browse/WELD-737
> Project: Weld
> Issue Type: Bug
> Components: Proxies
> Affects Versions: 1.1.0.Beta1
> Reporter: Sivakumar Thyagarajan
> Attachments: package-private-constructor-issue.tar.bz2,
> ProxyServicesImpl.java
>
>
> For Beans with package private constructors, proxy instantiation fails with
> an Illegal access error as shown below. Since 1.1.0.Beta1 the proxy creation
> logic in ProxyFactory.addConstructors handles private constructors correctly
> but doesn't consider package private constructors.
> ----
> Caused by: java.lang.IllegalAccessError: tried to access method
> org.glassfish.tests.proxies.TestSessionScopedBean.<init>()V from class
> org.glassfish.tests.proxies.org$jboss$weld$bean-$export$work$workspaces$gfv3$v3$distributions$glassfish$target$glassfish3$glassfish$domains$domain1$applications$jsr88-1370237334428885039$-ManagedBean-class_org$glassfish$tests$proxies$TestSessionScopedBean_$$_WeldProxy
> at
> org.glassfish.tests.proxies.org$jboss$weld$bean-$export$work$workspaces$gfv3$v3$distributions$glassfish$target$glassfish3$glassfish$domains$domain1$applications$jsr88-1370237334428885039$-ManagedBean-class_org$glassfish$tests$proxies$TestSessionScopedBean_$$_WeldProxy.<init>(org$jboss$weld$bean-$export$work$workspaces$gfv3$v3$distributions$glassfish$target$glassfish3$glassfish$domains$domain1$applications$jsr88-1370237334428885039$-ManagedBean-class_org$glassfish$tests$proxies$TestSessionScopedBean_$$_WeldProxy.java)
> 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:513)
> at java.lang.Class.newInstance0(Class.java:355)
> at java.lang.Class.newInstance(Class.java:308)
> at
> org.jboss.weld.util.reflection.SecureReflections$16.work(SecureReflections.java:396)
> at
> org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
> at
> org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:216)
> at
> org.jboss.weld.util.reflection.SecureReflections.newInstance(SecureReflections.java:391)
> at
> org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:218)
> at
> org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:89)
> at
> org.jboss.weld.bean.proxy.ClientProxyProvider.access$000(ClientProxyProvider.java:40)
> at
> org.jboss.weld.bean.proxy.ClientProxyProvider$1.apply(ClientProxyProvider.java:53)
> at
> org.jboss.weld.bean.proxy.ClientProxyProvider$1.apply(ClientProxyProvider.java:44)
> at
> com.google.common.collect.ComputingConcurrentHashMap.compute(ComputingConcurrentHashMap.java:206)
> ----
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues