Here is the sample:

*
http://www.fileconvoy.com/dfl.php?id=g9c64757621dc468115011126f019deb361277a
*
*
*
Deployed under apps/Test.ear it should give the following errors:

On Deployment I get this exception: which however I have already noticed in
other web app, but it doesn't seems to effect the CDI injection later when
the app is running. In the other web app I get similar exception but it's
only on deployment and then the @Inject works.

http://pastebin.com/qvqn3WsD

After deployment, If I try to establish the websocket connection and I get:

Sep 25, 2012 4:36:42 PM
org.pokernuvola.galaxy.gametable.WebSocketGametableServlet
createWebSocketInbound
INFO: CREATE connection...FAIL
Sep 25, 2012 4:36:42 PM
org.pokernuvola.galaxy.gametable.GametableMessageInbound onOpen
INFO: Opening the connection |1|
Sep 25, 2012 4:36:42 PM
org.pokernuvola.galaxy.gametable.WebSocketGametableServlet
addGametableConnection
INFO: add connection...FAIL
Sep 25, 2012 4:36:52 PM
org.pokernuvola.galaxy.gametable.GametableMessageInbound onTextMessage
INFO: Got a message text! |Ping|
Sep 25, 2012 4:36:52 PM
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler process
SEVERE: Error reading request, ignored
java.lang.NullPointerException
        at
org.pokernuvola.galaxy.gametable.WebSocketGametableServlet.processTextCommand(WebSocketGametableServlet.java:74)
        at
org.pokernuvola.galaxy.gametable.GametableMessageInbound.onTextMessage(GametableMessageInbound.java:35)
        at
org.apache.catalina.websocket.MessageInbound.onTextData(MessageInbound.java:74)
        at
org.apache.catalina.websocket.StreamInbound.doOnTextData(StreamInbound.java:186)
        at
org.apache.catalina.websocket.StreamInbound.onData(StreamInbound.java:134)
        at
org.apache.coyote.http11.upgrade.UpgradeProcessor.upgradeDispatch(UpgradeProcessor.java:83)
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:583)
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)



On Tue, Sep 25, 2012 at 3:43 PM, Romain Manni-Bucau
<[email protected]>wrote:

> can you share the sample please?
>
> *Romain Manni-Bucau*
> *Twitter: @rmannibucau*
> *Blog: **http://rmannibucau.wordpress.com/*<
> http://rmannibucau.wordpress.com/>
> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
>
>
>
>
> 2012/9/25 Luca Merolla <[email protected]>
>
> > Hi everyone,
> >
> > I have noticed this blog entry
> >
> >
> http://rmannibucau.wordpress.com/2012/05/15/tomee-or-how-to-use-websocket-with-cdi/
> > and
> > I have compared to my solution which is very similar but on my case since
> > CDI was not working I had to put some code in the init() method of my
> > servlet to retrieve the Beans, like this:
> >
> > jsonProvider = (JsonProviderBean) getServletContext().getAttribute(
> > GalaxyConstants.JSON_PROVIDER_BEAN);
> > processor = WebSocketConnectionProcessor.getInstance(jsonProvider);
> >
> > the jsonProvider was created in my ServletContextListener class and the
> > servlet was simply retrieving it. For the WebSocketConnectionProcessor I
> > opted to make the class singleton and in this way it was working.
> >
> > Despite this solution, I have tried to follow the example from the blog
> of
> > Romain because I would like to inject the processor.
> >
> > @WebServlet(urlPatterns = "/gametable", asyncSupported = true,
> > loadOnStartup = 1)
> > public class WebSocketGametableServlet extends WebSocketServlet
> implements
> > IWebSocketServlet {
> >
> > private static final long serialVersionUID = -6573757123424131706L;
> >
> > protected final Logger LOGGER = LoggerFactory.getLogger(getClass()
> > .getName());
> >
> > @Inject
> > private WebSocketGametableProcessor processor;
> > private JsonProviderBean jsonProvider;
> >
> > public void init() throws ServletException {
> > LOGGER.info("Initialize Lobby WebSocket servlet");
> > super.init();
> >
> > initializeWebSocketProcessor();
> > LOGGER.info("Web Socket connection processor initialized");
> > }
> >
> > /**
> >  * Get the JSON provider bean from the servlet context and retrieve the
> >  * {@link WebSocketGametableProcessor} instance
> >  */
> > private void initializeWebSocketProcessor() {
> > LOGGER.info("Getting the json provider bean");
> > jsonProvider = (JsonProviderBean) getServletContext().getAttribute(
> > GalaxyConstants.JSON_PROVIDER_BEAN);
> >
> > // LOGGER.info("Getting the websocker processor instance");
> > // processor = WebSocketGametableProcessor.getInstance(jsonProvider);
> > }
> >
> > /*
> >  * (non-Javadoc)
> >  *
> >  * @see
> >  * org.apache.catalina.websocket.WebSocketServlet#createWebSocketInbound
> >  * (java.lang.String, javax.servlet.http.HttpServletRequest)
> >  */
> > @Override
> > protected StreamInbound createWebSocketInbound(String arg0,
> > HttpServletRequest request) {
> > return new GametableMessageInbound(this,
> > (Long) request.getAttribute(WebSocketConstants.SESSION_ID));
> > }
> >
> > @Override
> > public void addConnection(LobbyKey lobbyKey,
> > AbstractMessageInbound lobbyConnection) {
> > if (processor == null)
> > LOGGER.info("add connection...FAIL");
> > else
> > LOGGER.info("add connection...");
> > }
> >
> > @Override
> > public void removeConnection(LobbyKey lobbyKey,
> > AbstractMessageInbound lobbyConnection) {
> > if (processor == null)
> > LOGGER.info("remove connection...FAIL");
> > else
> > LOGGER.info("remove connection...");
> > }
> >
> > @Override
> > public void processTextCommand(String jsonCommand) {
> > processor.processWebsocketCommand(jsonCommand);
> > }
> > }
> >
> > The WebSocketGametableProcessor has no other dependencies
> >
> > public class WebSocketGametableProcessor {
> >
> > private static final Logger LOGGER = LoggerFactory
> > .getLogger(WebSocketGametableProcessor.class);
> >
> > private WebSocketGametableProcessor() {
> >
> > }
> >
> > public void processWebsocketCommand(String jsonCommand) {
> > LOGGER.info("Received json command |{}|", jsonCommand);
> > }
> > }
> >
> > And as result I have that the WebSocketGametableProcessor is null in the
> > servlet. I was using the snapshot from last week, I have just run the
> > latest 1.5.1-SNAPSHOT and the issue persist.
> >
> > Luca
> >
>

Reply via email to