先說說注釋文法,省掉dwr.xml。(自從用了java 5 之後,現在越看一堆堆的設定檔越煩,越來越喜歡注釋方式來的直接簡單了)
首先下載最新的穩定版本的dwr.jar檔案放到你的工程中。(還有需要其它的嗎?不需要了,dwr就是這麼簡單)
然後在web.xml中添加如下一段
<!-- DWRServlet -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<!-- 預設為false,調試用,可以訪問http://地址:連接埠/上下文/dwr 來進行測試 -->
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!--這就是傳說中的DWR反轉調用的開關了,預設也是false -->
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<!--記錄層級不多說了-->
<init-param>
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
<!--這塊注意了,關鍵來了,把使用DWR注釋的類都要加在這裡,2.0的DWR好像還不支援包掃描,希望以後能提供這個功能,3.0我還沒注意有沒有這個功能,現在還沒出正式版-->
<init-param>
<param-name>classes</param-name>
<param-value>
org.relax.service.SectionManager,
org.relax.service..entity.Section
</param-value>
</init-param>
</servlet>
<!--這塊不用多說了吧,如果看不懂,哪涼快哪獃著去吧-->
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
在這裡再說明一下有的文章用的是uk.ltd.getahead.dwr.DWRServlet,其實他只是繼承了一下 org.directwebremoting.servlet.DwrServlet自己什麼也沒做,所以這兩個類用哪個都行(這麼做應該是為了相容以前的版本,猜的,1.0我沒用過)。
下面看具體的類吧。
@Service
@RemoteProxy(creator = SpringCreator.class, name = "sectionManager", creatorParams = @Param(name = "beanName", value = "sectionManager"))
public class SectionManager extends DefaultEntityManager<Section, Integer> {
@Autowired
OriginCollectDataManager originCollectDataManager;
@RemoteMethod
public Section get(Integer id) {
return super.get(id);
}
@RemoteMethod
public List<Section> getAll() {
return super.getAll();
}
}