`
adapterofcoms
  • 浏览: 75469 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

DWR在和spring集成时的bug,SpringCreator.getType???

阅读更多

DWR在和spring集成时,在dwr.xml中将设置creator="spring",告诉dwr将使用dwr的org.directwebremoting.spring.SpringCreator来创建对象实例,但是SpringCreator.getType地处理是不适当的,让我们来看看它的源码[dwr-3.0.0.116]:

public Class<?> getType()
    {
        if (clazz == null)
        {
            try
            {
                clazz = getInstance().getClass();
            }
            catch (InstantiationException ex)
            {
                log.error("Failed to instansiate object to detect type.", ex);
                return Object.class;
            }
        }

        return clazz;
    }

我们再来看看它的getInstance,最终由spring来创建实例.

public Object getInstance() throws InstantiationException
    {
        try
        {
            if (overrideFactory != null)
            {
                return overrideFactory.getBean(beanName);
            }

            if (factory == null)
            {
                factory = getBeanFactory();
            }

            if (factory == null)
            {
                log.error("DWR can't find a spring config. See following info logs for solutions");
                log.info("- Option 1. In dwr.xml, <create creator='spring' ...> add <param name='location1' value='beans.xml'/> for each spring config file.");
                log.info("- Option 2. Use a spring org.springframework.web.context.ContextLoaderListener.");
                log.info("- Option 3. Call SpringCreator.setOverrideBeanFactory() from your web-app");
                throw new InstantiationException("DWR can't find a spring config. See the logs for solutions");
            }

            return factory.getBean(beanName);
        }
        catch (InstantiationException ex)
        {
            throw ex;
        }
        catch (Exception ex)
        {
            throw new InstantiationException("Illegal Access to default constructor on " + clazz.getName() + " due to: " + ex);
        }
    }

getInstance将返回由spring来创建的实例,很明显SpringCreator.getType有点多此一举,它先创建了实例,再从实例的getClass获取对象的类型,而spring的beanFactory.getType同样有此功能,但它不需要先创建实例.

也许写这位代码的仁兄是不知道spring beanFactory.getType这个方法吧!


我把SpringCreator.getType改正后的代码 如下:

public Class<?> getType()
    {
        if (clazz == null)
        {
            try
            {
                if(overrideFactory != null){
                    clazz=overrideFactory.getType(beanName);
                }else {
                    if(factory == null)
                       factory = getBeanFactory();
                    clazz=factory.getType(beanName);
                }
               
            }
            catch (Exception ex)
            {
                log.error("Failed to detect type.", ex);
                return Object.class;
            }
        }

        return clazz;
    }

 

如果出现 Error loading class for creator ...... 那么就修改SpringCreator吧!

1
0
分享到:
评论

相关推荐

    DWR示例与spring集成

    2. **创建DWR配置文件**:`dwr.xml`,在这个文件中,我们需要定义哪些Java类和方法可以被浏览器直接调用。 3. **部署DWRServlet**:在Web应用的`web.xml`配置文件中配置DWR的Servlet,通常是`/dwr/*`。 4. **生成...

    DWR与SPRING 集成

    标题 "DWR与SPRING 集成" 涉及到的是两个在Web开发中常用的开源框架——Direct Web Remoting (DWR) 和 Spring。DWR允许在浏览器和服务器之间进行实时、异步的数据交换,而Spring是Java企业级应用的全面解决方案,...

    dwr与spring集成的方式

    这种方式是在DWR的配置文件dwr.xml中指定业务对象的创建方式为Spring,并提供该对象在Spring容器中的ID。具体步骤如下: 1. **配置Spring容器**:首先确保Spring容器已经被正确配置并在应用程序启动时加载。 2. **...

    spring-dwr-2.0.xsd

    spring-dwr-2.0.xsd spring 与 DWR进行配置

    dwr+spring集成配置

    DWR的配置文件通常是`dwr.xml`,但在与Spring集成时,配置主要通过Spring的XML文件进行。不过,你仍然可以使用`dwr.xml`文件来覆盖或补充Spring的配置,例如设置安全性、转换器等。 ### 性能优化 1. **缓存控制**:...

    jsp源码2.zip????

    【标题】"jsp源码2.zip"所包含的是多个基于Java技术栈的Web应用程序源代码,这些项目主要使用了Java Server Pages (JSP)、Servlet、Spring、Hibernate和Struts等框架,展现了Java在Web开发中的广泛应用。这些源码...

    dwr和spring集成简单例子

    接着,在DWR的配置文件(`dwr.xml`)中,声明这个Java类,使其可以被DWR识别和暴露: ```xml &lt;param name="class" value="com.example.UserService.UserServiceInterface"/&gt; ``` 现在,前端JavaScript可以轻松...

    spring+dwr.rar_dwr_dwr SPRING_spring dwr

    在"spring+dwr.rar_dwr_dwr SPRING_spring dwr"这个项目中,我们将看到如何整合这两个工具,以实现一个简单的功能:验证用户名是否存在。这个功能通常用于注册或登录页面,防止用户选择已被占用的用户名。 步骤如下...

    将dwr集成到spring mvc(dwr的配置是基于xml)

    4. **配置DWR映射**:在`dwr.xml`配置文件(通常位于`WEB-INF`目录下)中,你需要指定哪些Java类和方法可以被远程调用。例如: ```xml &lt;dwr&gt; &lt;param name="class" value="com.example.MyService" /&gt; &lt;/...

    关于dwr2与spring2集成

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行...在实际开发中,了解并掌握DWR2与Spring2的集成方式和最佳实践,对于提升Web应用的开发效率和质量具有重要意义。

    dwr包.rar dwr.jar engine.js util.js dwr-noncla.jar readme.txt

    dwr包.rar dwr.jar engine.js util.js dwr-noncla.jar readme.txt JAR File: dwr.jar (1.08Mb) To DWR enable your web-app WAR File: dwr.war (4.62Mb) Demos/Examples of what DWR can do Sources: dwr-...

    dwr+spring+hibernate模板.zip

    在IT领域,DWR(Direct Web Remoting)、Spring和Hibernate是三个至关重要的技术组件,它们分别在Web应用程序的远程调用、依赖注入和对象关系映射方面发挥着核心作用。将这三个框架整合在一起,可以构建出高效、灵活...

    dwr2.0.5.jar&dwr2.0.6.jar&dwr3.rc1.jar

    - **性能优化**:每个版本迭代通常都会带来性能上的提升,3.0版本尤其在处理大量数据和请求时有显著改进。 4. **使用场景**: - **2.0.x**:适用于那些需要基本的Ajax功能,且对系统兼容性有较高要求的项目。 - ...

    配置整合DWR3.0和Spring2.5使用annotation注解

    为了使DWR能够识别带有`@RemoteProxy`和`@RemoteMethod`注解的类和方法,我们需要在Spring的配置文件(如`applicationContext.xml`)中启用DWR的注解扫描: ```xml &lt;bean id="dwrConfiguration" class="org....

    Spring与DWR集成

    - **DWR配置**: 在`dwr.xml`文件中,映射刚刚创建的接口到JavaScript对象。 ```xml &lt;class&gt;com.example.MyService&lt;/class&gt; &lt;method&gt;getData ``` - **客户端调用**: 最后,在JavaScript中,可以像...

    DWR2.0 整合Spring2.0

    3. 在DWR的`dwr.xml`中定义远程方法和JavaScript接口,并将其引用到Spring配置中。 4. 在Spring MVC的配置中添加DWR的Servlet映射。 5. 在JavaScript中使用DWR提供的API调用服务器端的方法。 通过以上整合,开发者...

    ext-dwr-spring集成Demo

    具体到这个示例的文件结构,"JavaSource"可能包含了Spring的配置文件(如`applicationContext.xml`)、服务接口和实现类,以及DWR的配置(如`dwr.xml`)。"WebContent"目录则可能包含了EXT的JS库、CSS样式、HTML模板...

    dwr和ssh的集成源码

    在IT领域,DWR(Direct Web Remoting)和SSH(Struts + Spring + Hibernate)是两种常见的Java Web开发框架。本资源提供了一个简单的DWR与SSH集成的源代码示例,虽然可能在规范性上存在一些不足,但其主要目的是为了...

    ext2+spring+hibernate+dwr.rar_dwr MenuManage.js_ext2 ja

    标题 "ext2+spring+hibernate+dwr.rar_dwr MenuManage.js_ext2 ja" 提示我们这是一个关于集成技术的项目,其中包含了ext2、Spring、Hibernate和DWR(Direct Web Remoting)四个主要组件。这个项目的具体实现是通过...

    DWR与SPRING,DWR与STRUTS2的整合

    1. **配置DWR Spring集成**:在Spring配置文件中定义DWR相关的bean,如`DWRConfig`和`SpringContextUtil`,以便让DWR能够访问Spring的bean。 2. **Spring托管的Java类暴露给JavaScript**:通过Spring的`@Service`或...

Global site tag (gtag.js) - Google Analytics