Интеграция Spring GWT

Я пишу код для консоли с использованием интеграции GWT и Spring. Я последовал за GWT-учебником и прочитал некоторые форумы о том, как использовать Spring Qith GWT.

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

Обслуживание:

@RemoteServiceRelativePath("GestionUserService")
public interface GestionUserService extends RemoteService {
    Collection dameTablaUsuarios(String entidad);

}

асинхронный:

public interface GestionUserServiceAsync {
    void dameTablaUsuarios(String entidad,AsyncCallback> callback);

}

Impl:

@SuppressWarnings("serial")
@Service("GestionUserService")
public class GestionUsersConsultImpl extends RemoteServiceServlet implements GestionUserService {

@Autowired
UserConsoleDBUtil utilDB;
Logger logger = Logger.getLogger(GestionUsersConsultImpl.class);

@SuppressWarnings("unchecked")
public Collection dameTablaUsuarios(String entidad) {
    GWT.log("Log");
    logger.info("He llegado al IMPL dameTablaUsuarios.======================="+entidad);
    logger.info("UtilDB "+utilDB.toString());
    return utilDB.getDao().getUsuarios(entidad);
}

}

* Gwt.xml:

<?xml version="1.0" encoding="UTF-8"?>

    <!-- Inherit the core Web Toolkit stuff. -->
    

    <!-- Compilar solamente para Firefox -->
    <!-- -->

    
    

    <!-- Specify the app entry point class. -->
    


    <!-- English language, independent of country -->
    
    
    

    <!-- Specify the application specific style sheet. -->
    

    <!-- Specify the paths for translatable code -->
    
    
    

applicationContext.xml:



    <!-- Activates scanning of @Autowired -->
       
    

    <!--  FIN Agregado de la consola gwt-spring -->

    

    

    
        
    

    

    
        
        
    


config.xml




    
        

        <!-- Definicion de consultas -->
        

        
    

    
        
        
        
        
    

    
        
    

И, наконец, мой web.xml

<?xml version="1.0" encoding="UTF-8"?>



    
        contextConfigLocation
        /WEB-INF/applicationContext.xml
    

    <!-- Loads and makes available the context defined in springconfig-service.xml -->
    
        org.springframework.web.context.ContextLoaderListener
    

    
        springGwtRemoteServiceServlet org.spring4gwt.server.SpringGwtRemoteServiceServlet 

    
        gestionUsersConsultImpl com.santander.bam.comun.userconsole.server.GestionUsersConsultImpl 

    
        springGwtRemoteServiceServlet
        /springGwtServices/*
    

    
        gestionUsersConsultImpl
        /userConsole/GestionUserService
    

    <!-- Default page to serve -->
    
        GestionUsers.html
    

    <!-- Paginas de error -->
    
        401
        /accessDeny.html
    
    
        500
        /serverError.html
    

В моем основном классе у меня есть это:

AsyncCallback> getUserID2 = new AsyncCallback>() {
           //Failure: muestra error
            public void onFailure(Throwable caught) {
                whatever;
            }

           //Succes: obtener usuario
            public void onSuccess(Collection Users) {
                Whatever;
            }
        };
        gestionUservc.dameTablaUsuarios("3293", getUserID2);

Изменить: В случае, если это полезно здесь, это ошибка:

com.google.gwt.user.server.rpc.UnexpectedException: метод службы 'public abstract java.util.Collection com.santander.bam.comun.userconsole.client.GestionUserService.dameTablaUsuarios (java.lang.String)' бросил неожиданный Исключение: java.lang.NullPointerException в com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure (RPC.java:378) в com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse (RPC.java : 581) в com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall (RemoteServiceServlet.java:207) в com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost (RemoteServiceServlet.java:243) в com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost (AbstractRemoteServiceServlet.java:62) в javax.servlet.http.HttpServlet.service (HttpServlet.java:637) в javax.servlet.http.HttpServlet.service ( HttpServlet.java:717) в org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487) в org.mortbay.jetty.servlet.ServletHandler.hand le (ServletHandler.java:362) в org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) в org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181) на org.mortbay .jetty.handler.ContextHandler.handle (ContextHandler.java:729) в org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java:405) в org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java : 152) в org.mortbay.jetty.handler.RequestLogHandler.handle (RequestLogHandler.java:49) в org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:152) на org.mortbay.jetty.Server. handle (Server.java:324) в org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:505) в org.mortbay.jetty.HttpConnection $ RequestHandler.content (HttpConnection.java:843) на org.mortbay.jetty .HttpParser.parseNext (HttpParser.java:647) в org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:211) в org.mortbay.jetty.HttpConnection.handle (HttpConne ction.java:380) в org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:395) в org.mortbay.thread.QueuedThreadPool $ PoolThread.run (QueuedThreadPool.java:488) Вызвано: java.lang .NullPointerException: null на com.santander.bam.comun.userconsole.server.GestionUsersConsultImpl.dameTablaUsuarios (GestionUsersConsultImpl.java:31) на sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) на sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в com.google.gwt.user.server.rpc.RPC .invokeAndEncodeResponse (RPC.java:562) в com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall (RemoteServiceServlet.java:207) в com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost (RemoteServiceServlet .java: 243) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.d oPost (AbstractRemoteServiceServlet.java:62) в javax.servlet.http.HttpServlet.service (HttpServlet.java:637) в javax.servlet.http.HttpServlet.service (HttpServlet.java:717) в org.mortbay.jetty.servlet .ServletHolder.handle (ServletHolder.java:487) в org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:362) в org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) в org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181) в org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:729) в org.mortbay.jetty.webapp.WebAppContext.handle ( WebAppContext.java:405) в org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:152) в org.mortbay.jetty.handler.RequestLogHandler.handle (RequestLogHandler.java:49) в org.mortbay.jetty .handler.HandlerWrapper.handle (HandlerWrapper.java:152) на org.mortbay.jetty.Server.handle (Server.java:324) на org.mortbay.jetty.HttpConnection.handleRe квест (HttpConnection.java:505) в org.mortbay.jetty.HttpConnection $ RequestHandler.content (HttpConnection.java:843) в org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:647) в org.mortbay.jetty .HttpParser.parseAvailable (HttpParser.java:211) в org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:380) в org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:395) в org. mortbay.thread.QueuedThreadPool $ PoolThread.run (QueuedThreadPool.java:488)

Изменить 2: И вот что говорит мой журнал:

2013-02-25 16: 20: 02,424 INFO [org.springframework.web.context.ContextLoader] - Root WebApplicationContext: начата инициализация 2013-02-25 16: 20: 02,453 INFO [org.springframework.web.context.support.XmlWebApplicationContext] - Обновление корневого WebApplicationContext: дата запуска [Mon Feb 25 16:20:02 CET 2013]; корень контекстной иерархии 2013-02-25 16: 20: 02,496 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Загрузка определений компонентов xml из ресурса ServletContext [/WEB-INF/applicationContext.xml] 2013-02-25 16: 20: 02,696 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Загрузка определений компонентов xml из ресурса ServletContext [/WEB-INF/config.xml] 2013-02-25 16: 20: 02,724 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - переопределение определения bean-компонента для bean-транзакционного менеджера: замена [Generic bean: class [org.springframework.jdbc.datasource.DataSourceTransactionManager ]; Объем =; абстрактные = ложь; lazyInit = ложь; autowireMode = 0; dependencyCheck = 0; autowireCandidate = TRUE; первичные = ложь; factoryBeanName = NULL; factoryMethodName = NULL; initMethodName = NULL; destroyMethodName = NULL; определенный в ресурсе ServletContext [/WEB-INF/config.xml]] с помощью [Generic bean: class [org.springframework.jdbc.datasource.DataSourceTransactionManager]; Объем =; абстрактные = ложь; lazyInit = ложь; autowireMode = 0; dependencyCheck = 0; autowireCandidate = TRUE; первичные = ложь; factoryBeanName = NULL; factoryMethodName = NULL; initMethodName = NULL; destroyMethodName = NULL; определенный в ресурсе ServletContext [/WEB-INF/applicationContext.xml]] 2013-02-25 16: 20: 02,724 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - переопределение определения bean-компонента для bean-сервера GestionUserService: замена [Generic bean: class [com.santander.bam.comun.userconsole .server.GestionUsersConsultImpl]; Объем = одноэлементный; абстрактные = ложь; lazyInit = ложь; autowireMode = 0; dependencyCheck = 0; autowireCandidate = TRUE; первичные = ложь; factoryBeanName = NULL; factoryMethodName = NULL; initMethodName = NULL; destroyMethodName = NULL; определен в файле [D: \ Workspace \ USER_CONSOLE \ target \ UserConsole \ WEB-INF \ classes \ com \ santander \ bam \ comun \ userconsole \ server \ GestionUsersConsultImpl.class]] с помощью [Generic bean: class [com.santander.bam .comun.userconsole.server.GestionUsersConsultImpl]; Объем =; абстрактные = ложь; lazyInit = ложь; autowireMode = 0; dependencyCheck = 0; autowireCandidate = TRUE; первичные = ложь; factoryBeanName = NULL; factoryMethodName = NULL; initMethodName = NULL; destroyMethodName = NULL; определенный в ресурсе ServletContext [/WEB-INF/applicationContext.xml]] 2013-02-25 16: 20: 02,803 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Предварительные экземпляры синглонов в org.s[email protected]3f96ee: определение beans [org.springframework .context.annotation.internalConfigurationAnnotationProcessor, org.springframework.context.annotation.internalAutowiredAnnotationProcessor, org.springframework.context.annotation.internalRequiredAnnotationProcessor, org.springframework.context.annotation.internalCommonAnnotationProcessor, GestionUserService, UserConsoleDAO, myDataSource, TransactionManager, УАКСНАК, utilDB]; корень фабричной иерархии 2013-02-25 16: 20: 02,890 INFO [org.springframework.web.context.ContextLoader] - Root WebApplicationContext: инициализация завершена в 466 мс 2013-02-25 16: 20: 10,020 INFO [com.santander.bam.comun.userconsole.server.GestionUsersConsultImpl] - Он llegado al IMPL dameTablaUsuarios. ================== ====== 3293

1
nl ja de

1 ответы

Кажется, в методе dameTablaUsuarios (String entidad)

Строка logger.info («UtilDB» + utilDB.toString ()); вызывает исключение nullpointer . utilDB - null code> .Проверьте это.

0
добавлено
Можете ли вы поставить точку останова и посмотреть ... что там происходит?
добавлено автор ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ, источник
Cheers :), это здорово, если вы нашли решение самостоятельно, извините за то, что вы не продвинулись дальше из-за ограничений по времени.
добавлено автор ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ, источник
Спасибо за быстрый ответ. Я добавил эту строку, чтобы убедиться, что мой DAO был нулевым, если я выйду из этой строки, я все равно получаю ту же ошибку, поэтому я думаю, что мой объект utilDB имеет значение null в этот момент, но я не понимаю, почему.
добавлено автор Borja, источник
Я бы сделал это, если бы мог, но я не могу заставить работать режим отладки, возможно, я делаю что-то rong, но я запускаю приложение в режиме отладки с точкой останова, когда я собираюсь сделать асинхронный вызов, и он, похоже, не запускает отладку, это то, что я получаю на консоли: прослушивание транспорта dt_socket по адресу: 8000, поэтому он остается там, ожидая, когда я что-то сделаю, но я не знаю, что.
добавлено автор Borja, источник
Хорошо, так что мне наконец удалось заставить его работать. Это мое решение: springGwtRemoteServiceServlet userConsole/springGwtServices/* @RemoteServiceRelativePath ("springGwtServices/GestionUserSer & zwnj; vice ») Большое спасибо за то, что потратили время, чтобы помочь мне, и извините за недостаток знаний. Это также помогло мне найти ответ:
добавлено автор Borja, источник
Spring Framework and more
Spring Framework and more
839 участник(ов)

чат о spring framework и связанных с ним технологиях. We're discussing: job, tech questions, beer meet up/networking: tech review ,LinkedIn skills, SOF q/a raise up& etc. languages: russian,java,eng.