[
https://jira.jboss.org/browse/WELD-737?page=com.atlassian.jira.plugin.sys...
]
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/w...
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