Juan Pablo Angamarca created DELTASPIKE-686:
-----------------------------------------------

             Summary: WELD-001408: Unsatisfied dependencies error message for 
type-safe messages @MessageBundle interface
                 Key: DELTASPIKE-686
                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-686
             Project: DeltaSpike
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.0.1
         Environment: Windows 7, Java 1.7.0_60 Java(TM) SE Runtime Environment 
(build 1.7.0_60-b19) Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed 
mode), Wildfly 8.1.0 Final.
            Reporter: Juan Pablo Angamarca
            Priority: Blocker


Application server: Wildfly 8.1.0
Deployment type: EAR, subdeployments not isolated, DeltaSpike jars in 
$EAR_ROOT/lib: deltaspike-core-api-1.0.1.jar, deltaspike-core-impl-1.0.1.jar.

I tried to use the typesafe messages feature of DS as described in the Core 
Module docs page. When trying to inject a @MessageBundle, the IDE (Eclipse 
Luna, JBoss Tools 4.2.0.Beta3) shows a warning: "No bean is eligible for 
injection to the injection point [JSR-299 §5.2.1]". When trying to deploy the 
app, deployment fails with a WELD-001408 error.

Full deployment log:

18:11:11,605 INFO  [deployment] (AbstractDeploymentUnitService.java:69)  
JBAS015876: Starting deployment of "demo.ear" (runtime-name: "demo.ear")
18:11:11,761 INFO  [deployment] (AbstractDeploymentUnitService.java:71)  
JBAS015973: Starting subdeployment (runtime-name: "demo-ejb.jar")
18:11:11,761 INFO  [deployment] (AbstractDeploymentUnitService.java:71)  
JBAS015973: Starting subdeployment (runtime-name: "demo-war.war")
18:11:12,142 INFO  [deployer] (BeanArchiveProcessor.java:102)  JBAS016002: 
Processing weld deployment demo.ear
18:11:12,212 INFO  [Version] (Version.java:27)  HV000001: Hibernate Validator 
5.1.0.Final
18:11:12,290 INFO  [deployer] (BeanArchiveProcessor.java:102)  JBAS016002: 
Processing weld deployment demo-war.war
18:11:12,290 INFO  [deployer] (BeanArchiveProcessor.java:102)  JBAS016002: 
Processing weld deployment demo-ejb.jar
18:11:12,298 INFO  [EjbJndiBindingsDeploymentUnitProcessor] 
(EjbJndiBindingsDeploymentUnitProcessor.java:183)  JNDI bindings for session 
bean named DummyEjb in deployment unit subdeployment "demo-ejb.jar" of 
deployment "demo.ear" are as follows:

        java:global/demo/demo-ejb/DummyEjb!demo.admin.DummyEjb
        java:app/demo-ejb/DummyEjb!demo.admin.DummyEjb
        java:module/DummyEjb!demo.admin.DummyEjb
        java:global/demo/demo-ejb/DummyEjb
        java:app/demo-ejb/DummyEjb
        java:module/DummyEjb

18:11:12,307 INFO  [deployer] (WeldDeploymentProcessor.java:131)  JBAS016005: 
Starting Services for CDI deployment: demo.ear
18:11:12,329 INFO  [Version] (WeldStartup.java:146)  WELD-000900: 2.1.2 (Final)
18:11:12,340 INFO  [deployer] (WeldBootstrapService.java:103)  JBAS016008: 
Starting weld service for deployment demo.ear
18:11:12,507 WARN  [Event] (ExtensionObserverMethodImpl.java:83)  WELD-000411: 
Observer method [BackedAnnotatedMethod] protected 
org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension.vetoBeans(@Observes
 ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated 
types. Consider restricting events using @WithAnnotations or a generic type 
with bounds.
18:11:12,537 WARN  [Event] (ExtensionObserverMethodImpl.java:83)  WELD-000411: 
Observer method [BackedAnnotatedMethod] protected 
org.apache.deltaspike.core.impl.message.MessageBundleExtension.detectInterfaces(@Observes
 ProcessAnnotatedType<Object>) receives events for all annotated types. 
Consider restricting events using @WithAnnotations or a generic type with 
bounds.
18:11:13,236 ERROR [fail] (ServiceControllerImpl.java:1955)  MSC000001: Failed 
to start service jboss.deployment.unit."demo.ear".WeldStartService: 
org.jboss.msc.service.StartException in service 
jboss.deployment.unit."demo.ear".WeldStartService: Failed to start service
        at 
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
 [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
[rt.jar:1.7.0_60]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
[rt.jar:1.7.0_60]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_60]
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: 
Unsatisfied dependencies for type Messages with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private 
demo.admin.ApplicationAuthenticator.messages
  at 
demo.admin.ApplicationAuthenticator.messages(ApplicationAuthenticator.java:0)

        at 
org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
        at 
org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
        at 
org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
        at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
        at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
        at 
org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
        at 
org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
        at 
org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
        at 
org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
[rt.jar:1.7.0_60]
        ... 3 more

18:11:13,240 ERROR [management-operation] (AbstractOperationContext.java:609)  
JBAS014613: Operation ("deploy") failed - address: ([("deployment" => 
"demo.ear")]) - failure description: {"JBAS014671: Failed services" => 
{"jboss.deployment.unit.\"demo.ear\".WeldStartService" => 
"org.jboss.msc.service.StartException in service 
jboss.deployment.unit.\"demo.ear\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: 
Unsatisfied dependencies for type Messages with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private 
demo.admin.ApplicationAuthenticator.messages
  at 
demo.admin.ApplicationAuthenticator.messages(ApplicationAuthenticator.java:0)
"}}
18:11:13,346 INFO  [server] (DeploymentHandlerUtil.java:135)  JBAS018559: 
Deployed "demo.ear" (runtime-name : "demo.ear")
18:11:13,346 INFO  [controller] (ContainerStateMonitor.java:69)  JBAS014774: 
Service status report
JBAS014777:   Services which failed to start:      service 
jboss.deployment.unit."demo.ear".WeldStartService: 
org.jboss.msc.service.StartException in service 
jboss.deployment.unit."demo.ear".WeldStartService: Failed to start service

Code used:

Client bean:

package demo.admin;

import java.io.Serializable;

import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Default;
import javax.inject.Inject;

import demo.i18n.Messages;

@Default
@Dependent
public class ApplicationAuthenticator implements Serializable {
        
        // Elided...
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        @Inject // IDE warns: "No bean is eligible for injection to the 
injection point [JSR-299 §5.2.1]"
        private Messages messages; 
        
        public String auth(final String login, final String password) {
        
                String msg = this.messages.invalidCredentials();
                
                // ...
                                
                return null;            
        }

}


MessageBundle interface: demo.i18n.Messages.java

package demo.i18n;

import org.apache.deltaspike.core.api.message.MessageBundle;
import org.apache.deltaspike.core.api.message.MessageTemplate;

@MessageBundle
public interface Messages {
        
        @MessageTemplate("{appdev.messages.invalidCredentials}")
        String invalidCredentials();

}

Messages files: demo.i18n.Messages_es.properties

demo.i18n.Messages.properties
demo.i18n.Messages_es.properties
demo.i18n.Messages_es_EC.properties

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd";
        version="2.2">

        <application>
                <message-bundle>demo.i18n.Messages</message-bundle>
                <locale-config>
                        <default-locale>es_EC</default-locale>
                        <supported-locale>es</supported-locale>
                </locale-config>
        </application>

</faces-config>


ApplicationAuthenticator and Messages are both in the EJB module. Deployable 
EAR sample attached (Java source included).





--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to