关于DWR+spring出现的问题,求解!!!

bryand24 2012-01-04 05:20:23
在项目中用到了DWR和spring的整合,无奈一直访问不到bean,也就是在http://localhost:8080/项目名/dwr中进去,看不到方法
用的DWR3.0+Spring2.5.大家帮忙看看

页面相关部分:
<script src="${pageContext.request.contextPath}/dwr/interface/userService.js"></script>
<script src="${pageContext.request.contextPath}/dwr/engine.js"></script>
<script src="${pageContext.request.contextPath}/dwr/util.js"></script>
...
function validateUserInfo(){
var userName=dwr.util.getValue('userName');
var password=dwr.util.getValue('password');
var user={userName:userName,password:password};
userService.validateUserInfo(user,resultHandle);//到这里出错,自然了,方法都没暴露出来
}

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext-database.xml,/WEB-INF/classes/applicationContext-hibernate.xml</param-value>
</context-param>

<!-- spring 监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- 编码过滤器 -->
<filter>
<display-name>encodingFilter</display-name>
<filter-name>encodingFilter</filter-name>
<filter-class>com.hb.crm.base.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>

<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<!-- 页面缓存清除过滤器 -->
<filter>
<filter-name>pageCacheFilter</filter-name>
<filter-class>com.hb.crm.base.filter.PageCacheFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>pageCacheFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

<!-- struts2监听 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>

<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>

<display-name>ajaxDWR</display-name>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.dwr</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
default-lazy-init="true">

<!-- Hibernate SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>
com/hb/crm/roles/entity/Roles.hbm.xml
</value>
<value>
com/hb/crm/user/entity/User.hbm.xml
</value>
</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
<prop key="hibernate.query.substitutions">
true 1, false 0, yes 'Y', no 'N'
</prop>
<prop key="hibernate.c3p0.minPoolSize">100</prop>
<prop key="hibernate.c3p0.maxPoolSize">200</prop>
<prop key="hibernate.c3p0.timeout">1200</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
<prop key="hibernate.c3p0.acquire_increment">100</prop>
<prop key="hibernate.c3p0.testConnectionOnCheckout">
false
</prop>
<prop key="hibernate.max_fetch_depth">1</prop>
<prop key="hibernate.cache.region_prefix">
hibernate.test
</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.OSCacheProvider

</prop>
<prop key="hibernate.show_sql">
${hibernate.show_sql}
</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
</bean>

<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 配置事务特性,配置save,delete,update开始的方法,事务传播特性为required -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>


<!--配置事物管理方法 service包下以Service结尾的 -->
<aop:config>
<aop:advisor id="managerTx" advice-ref="txAdvice"
pointcut="execution(* *..service.*Service.*(..))" order="0" />
</aop:config>

<!-- DAO -->
<bean id="userDao" class="com.hb.crm.user.dao.impl.UserDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="rolesDao" class="com.hb.crm.roles.dao.impl.RolesDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- service -->
<bean id="userService" class="com.hb.crm.user.service.impl.UserService">
<property name="userDao" ref="userDao" />
</bean>
</beans>

dwr.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://www.getahead.ltd.uk/dwr/dwr30.dtd">
<dwr>
<allow>
<create creator="spring" javascript="userService">
<param name="beanName" value="userService" />
<include method="validateUserInfo" />
</create>
<convert converter="bean"
match="com.hb.crm.user.bean.UserBean">
<param name="include" value="userName,password" />
</convert>
</allow>
</dwr>

bean的创建换成new就没问题,但是就失去了整合的意义。换成spring就找不到bean
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ascendlin 2012-01-05
  • 打赏
  • 举报
回复
其实大家也不是不给你解答,只是看着你这一堆一堆的代码,你又不format一下,不是有代码的格式吗,╮(╯▽╰)╭
bryand24 2012-01-05
  • 打赏
  • 举报
回复
自己解决了,原来是因为spring的事物配置问题,把spring的代理改为基于cglib的代理:
< aop:config proxy-target-class="true"> 然后就OK了。
bryand24 2012-01-04
  • 打赏
  • 举报
回复
dwr的版本也换了好几次了,不是这个问题
bryand24 2012-01-04
  • 打赏
  • 举报
回复
自己先顶下,搞了半天了 坐等高手!

81,087

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧