Pasos basicos para poner a andar DWR en una aplicacion basada en APPFUSE (1.8.2)
1. Añadir DWR jar en /lib/dwr-1.0
2. Añadir a /lib/lib.properties:
# DWR – https://dwr.dev.java.net/ (Direct Web Remoting)
#
dwr.version=1.0
dwr.dir=${lib.dir}/dwr-${dwr.version}
dwr.jar=${dwr.dir}/dwr.jar
3. Añadir al /properties.xml:
<path id=»web.compile.classpath»>
…
<pathelement location=»${dwr.jar}»/>
</path>
4. Añadir al /build.xml:
<target name=»package-web» depends=»compile-web,jsp-2″ description=»Package WAR»>
…>
<war destfile=»${webapp.dist}/${webapp.war}»
webxml=»${webapp.target}/WEB-INF/web.xml» compress=»true»>
…
<lib file=»${dwr.jar}»/>
</war>
</target>
5. Añadir servlet para DWR en /metadata/web/servlets.xml:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
6. Añadir DWR servlet mapping en /metadata/web/servlet-mappings.xml:
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
7(Opcional). Excluir DWR del sitemesh en /web/WEB-INF/classes/decorators.xml:
<pattern>/dwr/*</pattern>
</excludes>
8. Añadir la configuracion de DWR, /WEB-INF/dwr.xml:
<allow>
<convert converter=»bean» match=»com.queres.*»/>
<create creator=»spring» javascript=»userManager»>
<param name=»beanName» value=»userManager»/>
<include method=»getUser»/>
<include method=»getUsers»/>
</create>
</allow>
</dwr>
Si estas usando APPFUSE con la configuracion por defecto, tendras un error al intentar acceder a esta pagina,
para arerglarlo tienes asegurarte que spring deja acceder al metodo getUser, en el archivo
applicationContext-security.xml:
<bean id=»userManagerSecurity» class=»net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor»>
<property name=»authenticationManager» ref=»authenticationManager»/>
<property name=»accessDecisionManager» ref=»accessDecisionManager»/>
<property name=»objectDefinitionSource»>
<value>
com.queres.sgei.service.UserManager.getUsers=ADM
com.queres.sgei.service.UserManager.removeUser=ADM
</value>
</property>
</bean>
o bien las pruebas las puedes realizar con otros metodos que no sean getUser/getUsers.
Traducido y adaptado de : http://lifeasastruct.blogspot.com/