[
https://issues.jboss.org/browse/WFLY-12083?page=com.atlassian.jira.plugin...
]
Matěj Novotný commented on WFLY-12083:
--------------------------------------
To add some background, I talked this through a bit with [~jbaesner] and I think it is a
bean validation issue.
The archive, as is, is an explicit bean archive in accordance with CDI specification which
means the util class with private constructor will be considered a bean.
Since it has no scope annotation, it will become a {{@Dependent}} bean - which has no
proxy.
The catch is that someone, somewhere is trying to apply an interceptor (or decorator) to
this class - that enforces proxyability check and fails because CDI mandates that you
don't have private constructors for proxyable classes. Weld itself doesn't handle
{{@NotNull}} annotation in any way so it has to be bean validation trying some magic and
having assumptions on proxyability of those classes.
There is a simple workaround here - mark the {{PlaygroundToStringUtil}} class as
{{@Vetoed}} (FQCN {{javax.enterprise.inject.Vetoed}}) and CDI won't consider it a bean
at all therefore avoiding all the checks.
Deployment failure if an explicit bean archive contain a Pojo with
@NotNull annotation
--------------------------------------------------------------------------------------
Key: WFLY-12083
URL:
https://issues.jboss.org/browse/WFLY-12083
Project: WildFly
Issue Type: Bug
Components: Bean Validation
Affects Versions: 17.0.0.Alpha1
Reporter: Joerg Baesner
Assignee: Brian Stansberry
Priority: Major
Attachments: playground.zip
If an exlicit bean archive ({{META-INF}} contains an empty {{beans.xml}}) contain a Pojo
without any Bean defining annotations and it has {{@NotNull}} annotations, the deployment
of that module fails with:
{code}
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start
service jboss.deployment.unit."playground-jar.jar".WeldStartService:
org.jboss.msc.service.StartException in service
jboss.deployment.unit."playground-jar.jar".WeldStartService: Failed to start
service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1730)
at
org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1558)
at
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001436: Type
org.jboss.playground.PlaygroundToStringUtil is not proxyable because it has a private
constructor [EnhancedAnnotatedConstructorImpl] private
org.jboss.playground.PlaygroundToStringUtil() - class
org.jboss.playground.PlaygroundToStringUtil.
at
org.jboss.weld.injection.producer.InterceptionModelInitializer.init(InterceptionModelInitializer.java:117)
at
org.jboss.weld.injection.producer.BeanInjectionTarget.buildInterceptionModel(BeanInjectionTarget.java:94)
at
org.jboss.weld.injection.producer.BeanInjectionTarget.initializeInterceptionModel(BeanInjectionTarget.java:89)
at
org.jboss.weld.injection.producer.BeanInjectionTarget.initializeAfterBeanDiscovery(BeanInjectionTarget.java:99)
at
org.jboss.weld.injection.producer.InjectionTargetInitializationContext.initialize(InjectionTargetInitializationContext.java:42)
at
org.jboss.weld.injection.producer.InjectionTargetService.initialize(InjectionTargetService.java:63)
at org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:481)
at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:86)
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:97)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1738)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1700)
... 6 more
{code}
--
This message was sent by Atlassian Jira
(v7.12.1#712002)