Bonjour,

J'ai un petit souci pour injecter un managed bean en @ApplicationScoped dans une ressource web socket de primefaces :

code XHTML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<p:socket channel="/app/35"/>
code du managedBean :
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");
    }
 
}
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
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");
 
    }
 
 
 
}
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 :


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