当前位置: 首页 > 知识库问答 >
问题:

Spring GWT集成

闻人嘉颖
2023-03-14

我正在使用GWT和Spring集成为控制台编写代码。我已经学习了GWT教程,并阅读了一些关于如何使用spring qith GWT的论坛。

服务:

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

}

异步:

public interface GestionUserServiceAsync {
    void dameTablaUsuarios(String entidad,AsyncCallback<Collection<Usuario>> 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<Usuario> dameTablaUsuarios(String entidad) {
    GWT.log("Log");
    logger.info("He llegado al IMPL dameTablaUsuarios.======================="+entidad);
    logger.info("UtilDB "+utilDB.toString());
    return utilDB.getDao().getUsuarios(entidad);
}
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='userConsole'>
    <!-- Inherit the core Web Toolkit stuff. -->
    <inherits name='com.google.gwt.user.User' />

    <!-- Compilar solamente para Firefox -->
    <!--<set-property name="user.agent" value="gecko1_8"></set-property> -->

    <inherits name='com.google.gwt.user.theme.standard.Standard' />
    <inherits name="com.google.gwt.i18n.I18N" />

    <!-- Specify the app entry point class. -->
    <entry-point class='com.santander.bam.comun.userconsole.client.GestionUsers' />


    <!-- English language, independent of country -->
    <extend-property name="locale" values="es_ES" />
    <extend-property name="locale" values="en_US" />
    <extend-property name="locale" values="de_DE" />

    <!-- Specify the application specific style sheet. -->
    <stylesheet src='UserConsole.css' />

    <!-- Specify the paths for translatable code -->
    <source path='client' />
    <source path='client/services' />
    <source path='db/bean' />
</module>
<beans>

    <!-- Activates scanning of @Autowired -->
    <context:annotation-config />   
    <context:component-scan base-package="com.santander.bam.comun.userconsole" />

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

    <import resource="config.xml" />

    <util:constant id="VARCHAR" static-field="java.sql.Types.VARCHAR" />

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="myDataSource"/>
    </bean>

    <bean id="GestionUserService" class="com.santander.bam.comun.userconsole.server.GestionUsersConsultImpl"></bean>

    <bean id="utilDB" class="com.santander.bam.comun.userconsole.db.UserConsoleDBUtil">
        <property name="dao" ref="UserConsoleDAO" />
        <property name="transactionManager" ref="transactionManager"/>
    </bean>

</beans>
<beans >


    <bean id="UserConsoleDAO" class="com.santander.bam.comun.userconsole.db.UserConsoleDAO">
        <property name="dataSource" ref="myDataSource" />

        <!-- Definicion de consultas -->
        <property name="sqlUsuarios"
            value=" SELECT DISTINCT (IDUSER) IDUser,
                                    NOMBRE Nombre,
                                    IDPerfil IDPerfil,
                                    FECHAALTA FechaAlta,
                                    FECHABAM FechaBAM,
                                    FECHACON FechaConsola
                                FROM
                                    A_APAMA.USERS
                                WHERE
                                    EMPRESA=?" />

        <property name="sqlUsuarios2"
            value=" SELECT DISTINCT (IDUSER) IDUser
                                FROM
                                    A_APAMA.USERS
                                WHERE
                                    EMPRESA=?" />
    </bean>

    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver" />
        <property name="url"
            value="jdbc:db2://udisapma.isban.dev.corp:60090/udisapma" />
        <property name="username" value="a_apama" />
        <property name="password" value="********" />
    </bean>

    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="myDataSource" />
    </bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

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

    <servlet>
        <servlet-name>springGwtRemoteServiceServlet</servlet-name>
        <servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>gestionUsersConsultImpl</servlet-name>
        <servlet-class>com.santander.bam.comun.userconsole.server.GestionUsersConsultImpl</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>springGwtRemoteServiceServlet</servlet-name>
        <url-pattern>/springGwtServices/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>gestionUsersConsultImpl</servlet-name>
        <url-pattern>/userConsole/GestionUserService</url-pattern>
    </servlet-mapping>

    <!-- Default page to serve -->
    <welcome-file-list>
        <welcome-file>GestionUsers.html</welcome-file>
    </welcome-file-list>

    <!-- Paginas de error -->
    <error-page>
        <error-code>401</error-code>
        <location>/accessDeny.html</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/serverError.html</location>
    </error-page>
</web-app>
AsyncCallback<Collection<Usuario>> getUserID2 = new AsyncCallback<Collection<Usuario>>() {
            // Failure: muestra error
            public void onFailure(Throwable caught) {
                whatever;
            }

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

编辑:如果有用,这里是错误:

com.google.gwt.user.server.rpc.unceptionedException:服务方法'public abstract java.util.collection com.santander.bam.comun.userconsole.client.gestionuserservice.dameta.lang.string)'引发意外异常:java.lang.nullpointerException(java.lang.rpc.rpc.encoderesponseForFailure(rpc.java.java:378)位于com.google.gwt.user.server.rpc.remoteserviceservlet.processPost(remoteserviceservlet.java:243)com.google.gwt.user.server.rpc.abstractremoteservlet.java:62)javax.servlet.http.httpservlet.Service(httpservlet.java:637)javax.servlet.http.httpservlet.Service(httpservlet.java:717)org.mortbay.jetty.servlet.servlet.handle(servletholder.handle der.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.handle handle(requestloghandler.java:49)在org.mortbay.jetty.handlerwrapper.handlerwrapper.handlerwrapper.handlerwrapper.handlerwrapper.handlerwrapper.handlerwrapper.java:152)在org.mortbay.jetty.server.handler(handlerwrapper.java:152),在org.mortbay.jetty.httpconnection.handler(server.java:324)在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)由:java.lang.nullpointerexception:null在com.santander.bam.comun.userconsole.server.gestionusersconsultimpl.dametablausuarios(GestionUsersConsultimpl.java:31)在sun.reflect.nativeMethodAccessorimpl.java:31)在orimpl.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.java:243)在tremoteServiceServlet.java:62)位于javax.servlet.http.httpservlet.service(httpservlet.javA:637)在javax.servlet.http.httpservlet.service(httpservlet.java:717)在org.mortbay.jetty.servlet.servlet.servletholder.handle(servletholder.java:487)在org.mortbay.jetty.servlet.servlethandler.handle(servlethandler.java:362)在org.mortbay.jetty.security.securityhandler.handle(securityhandler.java:216)在thandler.java:729)在org.mortbay.jetty.webapp.webappcontext.handle(webappcontext.java:405)在org.mortbay.jetty.handler.handlerWrapper.handle(handlerWrapper.java:152)在org.mortbay.jetty.handler.java:49)在org.mortbay.jetty.handler.handle(requestLoghandler.handle(handlerWrapper.handle(handlerWrapper.java:pconnection.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

编辑2:这里是我的日志所说的:

2013-02-25 16:20:02,424信息[org.springframework.web.context.contextloader]-根WebApplicationContext:初始化开始2013-02-25 16:20:02,453信息[org.springframework.web.context.support.xmlWebApplicationContext]-刷新根WebApplicationContext:启动日期[Mon 2月25日16:20:02 CET 2013];上下文层次结构的根2013-02-25 16:20:02,496信息[org.springframework.beans.factory.XML.xmlBeanDefinitionReader]-从ServletContext资源[/WEB-INF/applicationContext.XML]中加载XML bean定义2013-02-25 16:20:02,696信息[org.springframework.beans.factory.XML.xmlBeanDefinitionReader]-从ServletContext资源[/WEB-INF/config.XML]中加载XML bean定义Manager“:用[Generic bean:class[org.springframework.jdbc.datasource.datasourceTransactionManager]替换[Generic bean:class[org.springframework.jdbc.datasource.datasourceTransactionManager];scope=;abstract=false;lazyinit=false;autowiremode=0;dependencycheck=0;autowiremode=true;primary=false;factorybeanname=nullr];scope=;abstract=false;lazyinit=false;autowiremode=0;dependencycheck=0;autowirecandidate=true;primary=false;factorybeanname=null;factorymethodname=null;factorymethodname=null;initmethodname=null;destroymethodname=null;在ServletContext资源[/WEB-INF/applicationcontext.xml]]2013-02-25 16:20:02,724 console.server.gestionusersconsultimpl];scope=singleton;abstract=false;lazyinit=false;autowiremode=0;dependencycheck=0;autowirecandidate=true;primary=false;factorybeanname=null;factorymethodname=null;factorymethodname=null;destroymethodname=null;在文件usersConsultimpl];scope=;abstract=false;lazyinit=false;autowiremode=0;dependencycheck=0;autowirecandidate=true;primary=false;factorybeanname=null;factorymethodname=null;factorymethodname=null;initmethodname=null;destroymethodname=null;在ServletContext资源中定义[/WEB-INF/applicationcontext.xml]]2013-02-25 16:20:02,803@3F96EE:定义beans[org.springframework.context.annotation.internalconfigurationannotationprocessor,org.springframework.context.annotation.internalautowiredanNotationprocessor,org.springframework.context.annotation.internalrequiredanNotationprocessor,org.springframework.context.annotation.internalcommonannotationprocessor,t WebApplicationContext:初始化在466 ms完成2013-02-25 16:20:10,020 INFO[com.santander.bam.comun.userconsole.server.gestionusersconsultimpl]-He llegado al IMPL DametaBlausuarios.===============================3293

共有1个答案

有德业
2023-03-14

似乎在方法Dametablausuarios(String entidad)

logger.info(“utildb”+utildb.tostring());导致nullpointer异常.utildbnull

 类似资料:
  • 我是新点燃的。 步骤1:我在两个VM(ubuntu)中安装了Ignite 2.6.0,在一个VM中启动了节点。下面有COMAND。bin/ignite.sh examples/config/example-ignite.xml 步骤2:我的所有配置都在example-default.xml中 步骤3:在其他VM中执行包含datagrid逻辑的client.jar(该VM既是客户机也是节点)。 步骤

  • 我创建了一个新示例,并将代码分为客户端和服务器端。 完整的代码可以在这里找到。 服务器端有3个版本。 服务器无Spring Boot应用程序,使用Spring Integration RSocket InboundGateway 服务器引导重用Spring RSocket autconfiguration,并通过serverrsocketmessagehandler创建ServerRSocketC

  • 可运行和可调用 如果你在Runnable或Callable中包含你的逻辑,就可以将这些类包装在他们的Sleuth代表中。 Runnable的示例: Runnable runnable = new Runnable() { @Override public void run() { // do some work } @Override public String toString()

  • Jinja2 提供了一些代码来继承到其它工具,诸如框架、 Babel 库或你偏好的编辑器 的奇特的代码高亮。这里是包含的这些的简要介绍。 帮助继承的文件在 这里 可 用。 Babel 集成 Jinja 提供了用 Babel 抽取器从模板中抽取 gettext 消息的支持,抽取器的接入点 名为 jinja2.ext.babel_extract 。 Babel 支持的被作为 i18n 扩展 的 一部分

  • Jinja2 提供了一些代码来继承到其它工具,诸如框架、 Babel 库或你偏好的编辑器 的奇特的代码高亮。这里是包含的这些的简要介绍。 帮助继承的文件在 这里 可 用。 Babel 集成 Jinja 提供了用 Babel 抽取器从模板中抽取 gettext 消息的支持,抽取器的接入点 名为 jinja2.ext.babel_extract 。 Babel 支持的被作为 i18n 扩展 的 一部分

  • 我有一个redis集群,有主服务器、从服务器和3个哨兵服务器。主从映射到dns名称node1-redis-dev.com、node2-redis-dev.com。redis服务器版本为2.8 我在application.properties文件中包含以下内容。 但是,当我检查StringRedisTemplate时,在JedisConnectionFactory的hostName属性下,我看到的是

  • sdiff key1 key2...keyN 返回所有给定key的差集 sdiffstore dstkey key1...keyN 同sdiff,并同时保存差集到dstkey下

  • sunion key1 key2...keyN 返回所有给定key的并集 sunionstore dstkey key1...keyN 同sunion,并同时保存并集到dstkey下