2013-03-15 4 views
0

Я испытываю это с SDK, работающим локально на моем Mac. Я пытаюсь установить обработку присутствия. Я создал простой сервлет, который ничего не делает, кроме журнала. Тем не менее, я получаю следующее исключение любого соединения и разъединения события (хотя каналы по всей видимости, будут работать иначе) ...Ошибки исключения обработчика канала Google App Engine

Mar 14, 2013 8:04:25 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: /_ah/channel/disconnected/: javax.servlet.UnavailableException: java.lang.InstantiationException 
Mar 14, 2013 8:04:38 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: /_ah/channel/connected/: javax.servlet.UnavailableException: java.lang.InstantiationException 

Я зарегистрировал этот сервлет как для подключения и отключения каналов в моей сети .xml ...

<servlet> 
    <servlet-name>ChannelPresence</servlet-name> 
    <servlet-class>com.readyposition.gaetestbed.ChannelPresenceServlet   
    </servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>ChannelPresence</servlet-name> 
    <url-pattern>/_ah/channel/connected/</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
    <servlet-name>ChannelPresence</servlet-name> 
    <url-pattern>/_ah/channel/disconnected/</url-pattern> 
    </servlet-mapping>                

обработчик (сервлет) сам по себе является довольно основной ...

package com.readyposition.gaetestbed; 

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

import com.google.appengine.api.channel.ChannelPresence; 
import com.google.appengine.api.channel.ChannelService; 
import com.google.appengine.api.channel.ChannelServiceFactory; 

@SuppressWarnings("serial") 
public abstract class ChannelPresenceServlet extends HttpServlet { 
    final static Logger logger = 
      LoggerFactory.getLogger(ChannelPresenceServlet.class); 

    @Override 
    public void doGet(final HttpServletRequest req, 
      final HttpServletResponse resp) 
        throws IOException, ServletException 
    { 
     processCommand(req, resp); 
    } 

    @Override 
    public void doPost(final HttpServletRequest req, 
      final HttpServletResponse resp) 
        throws IOException, ServletException 
    { 
     processCommand(req, resp); 
    } 

    public void processCommand(final HttpServletRequest req, 
      final HttpServletResponse resp) 
        throws IOException, ServletException 
    { 
     final ChannelService channelService = 
       ChannelServiceFactory.getChannelService(); 
     final ChannelPresence presence = channelService.parsePresence(req); 

     logger.info("Channel Presence - clientId={}, isConnected={}", 
       presence.clientId(), presence.isConnected()); 
    } 
} 

Любая помощь будет оценена.

ответ

1

Как смущающе. Вырезать и вставить ошибку. Мой класс сервлета был ошибочно абстрактным. Вздох. Исправлена.

Я видел несколько других людей, жалующихся на одно и то же исключение при разных обстоятельствах и по крайней мере одно, относящееся к присутствию канала. Если другой человек понимает, что они ошибочно оставили класс сервлета абстрактным, я полагаю, что это было бы полезно.

Спасибо всем, кто пытался следовать за мной по крысиной дыре.

+0

Если я должен удалить весь этот пост, дайте мне знать. – Chuck