Bonjour,
J'ai un petit souci pour injecter un managed bean en @ApplicationScoped dans une ressource web socket de primefaces :
code XHTML :
code du managedBean :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<p:socket channel="/app/35"/>
Code de la resource web socket :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 package sav.twfjq.ejb.tool; import java.io.Serializable; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.enterprise.context.ApplicationScoped; import javax.inject.Named; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Named @ApplicationScoped public class UserConnectionManager implements Serializable { private final Logger logger = LoggerFactory.getLogger(UserConnectionManager.class); @PostConstruct public void postConstruct() { logger.info("UserConnectionManager Create"); } @PreDestroy public void preDestroy() { logger.info("UserConnectionManager Delete"); } public void test(){ logger.info("ICIIIIIIII"); } }
Tout se passe correctement jusqu'à l’exécution de la méthode "ucm.test();", (si j’enlève l'appel de cette méthode il n'y a plus de problème, j'ai l'impression qu'il n'arrive pas à injecter mon Managed Bean ) voici l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 package sav.twfjq.push; import javax.inject.Inject; import org.primefaces.push.EventBus; import org.primefaces.push.RemoteEndpoint; import org.primefaces.push.annotation.OnClose; import org.primefaces.push.annotation.OnOpen; import org.primefaces.push.annotation.PathParam; import org.primefaces.push.annotation.PushEndpoint; import org.primefaces.push.annotation.Singleton; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sav.twfjq.ejb.tool.UserConnectionManager; @PushEndpoint("/{app}/{user}") @Singleton public class MainResource { private final Logger logger = LoggerFactory.getLogger(MainResource.class); @PathParam("app") private String app; @PathParam("user") private String user; @Inject private UserConnectionManager ucm; @OnOpen public void onOpen(RemoteEndpoint r, EventBus eventBus) { logger.debug("Socket open : "+ user); ucm.test(); } @OnClose public void onClose(RemoteEndpoint r, EventBus eventBus) { logger.debug("Close"); } }
INFO: twfjq - 2014-12-25 17:28:17 - DEBUG MainResource:37 - Socket open : 35
INFO: twfjq - 2014-12-25 17:28:17 - ERROR Invoker:54 -
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.atmosphere.config.managed.Invoker.invokeMethod(Invoker.java:49)
at org.primefaces.push.impl.PushEndpointHandlerProxy.invokeOpenOrClose(PushEndpointHandlerProxy.java:378)
at org.primefaces.push.impl.PushEndpointHandlerProxy$3.onSuspend(PushEndpointHandlerProxy.java:171)
at org.atmosphere.cpr.AtmosphereResourceImpl.onSuspend(AtmosphereResourceImpl.java:692)
at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:625)
at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:598)
at org.atmosphere.cpr.AtmosphereResourceImpl.suspend(AtmosphereResourceImpl.java:417)
at org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor.postInspect(AtmosphereResourceLifecycleInterceptor.java:145)
at org.atmosphere.cpr.AsynchronousProcessor.postInterceptors(AsynchronousProcessor.java:344)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:213)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:104)
at org.atmosphere.container.GlassFishServ30WebSocketSupport.service(GlassFishServ30WebSocketSupport.java:60)
at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2079)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:570)
at org.atmosphere.websocket.DefaultWebSocketProcessor.open(DefaultWebSocketProcessor.java:215)
at org.atmosphere.container.GlassFishServ30WebSocketSupport$Grizzly2WebSocketApplication.onConnect(GlassFishServ30WebSocketSupport.java:144)
at org.glassfish.grizzly.websockets.SimpleWebSocket.onConnect(SimpleWebSocket.java:135)
at org.glassfish.grizzly.websockets.WebSocketEngine.upgrade(WebSocketEngine.java:216)
at org.glassfish.grizzly.extras.addons.WebSocketAddOnProvider$GlassfishWebSocketFilter.doServerUpgrade(WebSocketAddOnProvider.java:118)
at org.glassfish.grizzly.websockets.WebSocketFilter.handleServerHandshake(WebSocketFilter.java:87)
at org.glassfish.grizzly.websockets.WebSocketFilter.handleHandshake(WebSocketFilter.java:68)
at org.glassfish.grizzly.websockets.BaseWebSocketFilter.handleRead(BaseWebSocketFilter.java:197)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at sav.twfjq.push.MainResource.onOpen(MainResource.java:38)
... 40 more
Merci d'avance pour vos solutions![]()
Partager