Thanks a lot, Gerhard, I just created https://issues.apache.org/jira/browse/DELTASPIKE-1135. Cheers.
2016-04-27 0:48 GMT-05:00 Gerhard Petracek <[email protected]>: > hi juan, > > InitFacesContext causes the issue outside a http-request. > (to support your use-case) we need to check for an active request before > using FacesContext#getApplication. > -> please file a jira-ticket (i'll provide a workaround at that ticket). > > regards, > gerhard > > http://www.irian.at > > Your JavaEE powerhouse - > JavaEE Consulting, Development and > Courses in English and German > > Professional Support for Apache > MyFaces, DeltaSpike and OpenWebBeans > > > > 2016-04-27 7:34 GMT+02:00 Juan Pablo <[email protected]>: > > > Hi. I'm running into a problem when trying to use DS' typesafe messages > in > > a observer method that runs upon initialization of the application > scope. > > > > Code (relevant methods only): > > > > @Dependent > > @MessageBundle > > // (Messages.properties is has been set-up correctly) > > public interface Messages { > > > > String administrador(); > > } > > > > @Dependent > > public class StartupBean implements Serializable { > > > > @Inject > > private Messages msgs; > > > > public void runOnStartup(@Observes @Initialized(ApplicationScoped.class) > > ServletContext payload) { > > this.log.info(this.msgs.administrador()); > > } > > > > } > > > > When the observer method is executed, I'm being presented with this > > stacktrace, and deployment of application is aborted: > > > > 23:56:34,238 SEVERE [faces] (FactoryFinderInstance.java:177) Unable to > > obtain InjectionProvider from init time FacesContext. Does this container > > implement the Mojarra Injection SPI? > > 23:56:34,239 SEVERE [faces] (FactoryFinderInstance.java:494) La > aplicación > > no se ha inicializado correctamente durante el inicio, no se encuentra la > > fábrica: javax.faces.application.ApplicationFactory. Attempting to find > > backup. > > 23:56:34,239 ERROR [fail] (ServiceControllerImpl.java:1955) MSC000001: > > Failed to start service > > jboss.undertow.deployment.default-server.default-host./hg: > > org.jboss.msc.service.StartException in service > > jboss.undertow.deployment.default-server.default-host./hg: 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:1142) > > [rt.jar:1.8.0_77] > > at > > > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > > [rt.jar:1.8.0_77] > > at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_77] > > Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: > > Could not find backup for factory > > javax.faces.application.ApplicationFactory. > > at > > > > > io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:222) > > at > > > > > org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:87) > > at > > > > > org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:72) > > at > > > > > org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) > > [jboss-msc-1.2.2.Final.jar:1.2.2.Final] > > at > > > > > org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) > > [jboss-msc-1.2.2.Final.jar:1.2.2.Final] > > ... 3 more > > Caused by: java.lang.IllegalStateException: Could not find backup for > > factory javax.faces.application.ApplicationFactory. > > at > > > > > javax.faces.FactoryFinderInstance.getFactory(FactoryFinderInstance.java:500) > > at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:287) > > at > > > > > com.sun.faces.config.InitFacesContext.getApplication(InitFacesContext.java:142) > > at > > > > > org.apache.deltaspike.jsf.impl.message.JsfMessageResolver.getMessageSources(JsfMessageResolver.java:45) > > at > > > > > org.apache.deltaspike.core.impl.message.DefaultMessageResolver.getMessage(DefaultMessageResolver.java:52) > > at > > > > > org.apache.deltaspike.core.impl.message.DefaultMessage.toString(DefaultMessage.java:115) > > at > > > > > org.apache.deltaspike.core.impl.message.DefaultMessage.toString(DefaultMessage.java:95) > > at > > > > > org.apache.deltaspike.core.impl.message.MessageBundleInvocationHandler.invoke(MessageBundleInvocationHandler.java:123) > > at com.sun.proxy.$Proxy1079.administrador(Unknown Source) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > [rt.jar:1.8.0_77] > > at > > > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > [rt.jar:1.8.0_77] > > at > > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > [rt.jar:1.8.0_77] > > at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_77] > > at > > > > > org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38) > > at > > > > > org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100) > > at > > > > > org.jboss.weld.proxies.Messages$Serializable$981322000$Proxy$_$$_WeldClientProxy.administrador(Unknown > > Source) > > at com.app.core.StartupBean.runOnStartup(StartupBean.java:178) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > [rt.jar:1.8.0_77] > > at > > > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > [rt.jar:1.8.0_77] > > at > > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > [rt.jar:1.8.0_77] > > at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_77] > > at > > > > > org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:90) > > at > > > > > org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:271) > > at > > > > > org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:258) > > at > > > org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:237) > > at org.jboss.weld.event.FastEvent.fire(FastEvent.java:125) > > at > > > > > org.jboss.weld.servlet.HttpContextLifecycle.contextInitialized(HttpContextLifecycle.java:132) > > at > > > > > org.jboss.weld.servlet.WeldInitialListener.contextInitialized(WeldInitialListener.java:101) > > at > > > > > io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:173) > > at > > > > > io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:193) > > ... 7 more > > > > The stacktrace says something about a FacesContext, I thought messages > > independent from JSF... Messages work normally in any other situation, > even > > in a RESTful endpoint: > > > > @Path("svctest") > > @RequestScoped > > public class SvcTest { > > > > @Inject > > private Messages messages; > > > > @GET > > @Path("administrador") > > public String run() { > > // look Mom, no FacesContext! ;) > > return this.messages.administrador(); > > } > > } > > > > Result of invocation: > > > > GET HTTP/1.1 http://localhost:8080/app/services/svctest/administrador > > > > Administrador > > > > What am I doing wrong here? What can I do to run code that needs to use > > typesafe messages at application startup? I'm using Java 1.8.0_77-b03, > > Wildfly 8.2.0, DeltaSpike 1.6.0 (v1.4.1 has the same issue, updated to > > latest to make sure it issue was not caused by an already fixed bug). If > > you need additional details please let me know. Thanks for your > attention. > > > > > > -- > > Atte. > > > > Juan Pablo Angamarca > > > -- Atte. Juan Pablo Angamarca
