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/