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吧!
分享到:
相关推荐
2. **创建DWR配置文件**:`dwr.xml`,在这个文件中,我们需要定义哪些Java类和方法可以被浏览器直接调用。 3. **部署DWRServlet**:在Web应用的`web.xml`配置文件中配置DWR的Servlet,通常是`/dwr/*`。 4. **生成...
标题 "DWR与SPRING 集成" 涉及到的是两个在Web开发中常用的开源框架——Direct Web Remoting (DWR) 和 Spring。DWR允许在浏览器和服务器之间进行实时、异步的数据交换,而Spring是Java企业级应用的全面解决方案,...
这种方式是在DWR的配置文件dwr.xml中指定业务对象的创建方式为Spring,并提供该对象在Spring容器中的ID。具体步骤如下: 1. **配置Spring容器**:首先确保Spring容器已经被正确配置并在应用程序启动时加载。 2. **...
spring-dwr-2.0.xsd spring 与 DWR进行配置
DWR的配置文件通常是`dwr.xml`,但在与Spring集成时,配置主要通过Spring的XML文件进行。不过,你仍然可以使用`dwr.xml`文件来覆盖或补充Spring的配置,例如设置安全性、转换器等。 ### 性能优化 1. **缓存控制**:...
【标题】"jsp源码2.zip"所包含的是多个基于Java技术栈的Web应用程序源代码,这些项目主要使用了Java Server Pages (JSP)、Servlet、Spring、Hibernate和Struts等框架,展现了Java在Web开发中的广泛应用。这些源码...
接着,在DWR的配置文件(`dwr.xml`)中,声明这个Java类,使其可以被DWR识别和暴露: ```xml <param name="class" value="com.example.UserService.UserServiceInterface"/> ``` 现在,前端JavaScript可以轻松...
在"spring+dwr.rar_dwr_dwr SPRING_spring dwr"这个项目中,我们将看到如何整合这两个工具,以实现一个简单的功能:验证用户名是否存在。这个功能通常用于注册或登录页面,防止用户选择已被占用的用户名。 步骤如下...
4. **配置DWR映射**:在`dwr.xml`配置文件(通常位于`WEB-INF`目录下)中,你需要指定哪些Java类和方法可以被远程调用。例如: ```xml <dwr> <param name="class" value="com.example.MyService" /> </...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行...在实际开发中,了解并掌握DWR2与Spring2的集成方式和最佳实践,对于提升Web应用的开发效率和质量具有重要意义。
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-...
在IT领域,DWR(Direct Web Remoting)、Spring和Hibernate是三个至关重要的技术组件,它们分别在Web应用程序的远程调用、依赖注入和对象关系映射方面发挥着核心作用。将这三个框架整合在一起,可以构建出高效、灵活...
- **性能优化**:每个版本迭代通常都会带来性能上的提升,3.0版本尤其在处理大量数据和请求时有显著改进。 4. **使用场景**: - **2.0.x**:适用于那些需要基本的Ajax功能,且对系统兼容性有较高要求的项目。 - ...
为了使DWR能够识别带有`@RemoteProxy`和`@RemoteMethod`注解的类和方法,我们需要在Spring的配置文件(如`applicationContext.xml`)中启用DWR的注解扫描: ```xml <bean id="dwrConfiguration" class="org....
- **DWR配置**: 在`dwr.xml`文件中,映射刚刚创建的接口到JavaScript对象。 ```xml <class>com.example.MyService</class> <method>getData ``` - **客户端调用**: 最后,在JavaScript中,可以像...
3. 在DWR的`dwr.xml`中定义远程方法和JavaScript接口,并将其引用到Spring配置中。 4. 在Spring MVC的配置中添加DWR的Servlet映射。 5. 在JavaScript中使用DWR提供的API调用服务器端的方法。 通过以上整合,开发者...
具体到这个示例的文件结构,"JavaSource"可能包含了Spring的配置文件(如`applicationContext.xml`)、服务接口和实现类,以及DWR的配置(如`dwr.xml`)。"WebContent"目录则可能包含了EXT的JS库、CSS样式、HTML模板...
在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(Direct Web Remoting)四个主要组件。这个项目的具体实现是通过...
1. **配置DWR Spring集成**:在Spring配置文件中定义DWR相关的bean,如`DWRConfig`和`SpringContextUtil`,以便让DWR能够访问Spring的bean。 2. **Spring托管的Java类暴露给JavaScript**:通过Spring的`@Service`或...