前些日子看了一篇關于在Spring 2中整合DWR 2的文章《AJAX,
DWR and Spring》。最近,想動手試一下,就下載其源代碼回來看看,依葫蘆畫瓢做了一遍。在運行時,得到XML驗證錯誤。經過一翻折騰,終于把問題解決。
Spring 2基于XML Schema的配置
眾所周知,Spring 2通過XML Schema配置方式極大地簡化的其配置,而且使得第三方擴展變為可能。配置如下代碼所示:
<?
xml version="1.0"
encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
? ? xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
? ? xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
? ?
? ??
? ?
<!--
<bean /> definitions here
-->
? ??
</
beans
>
清單1 applicationContext.xml
不知大家有沒有想過spring-beans-2.0.xsd位置在那里?其實,大家可以用Eclipse打開Spring的jar包,展開META-INF,并雙擊打開其中的spring.schemas文件,內容如下:
http\://www.springframework.org/schema/beans/spring-beans-
2.0
.xsd
=
org/springframework/beans/factory/xml/spring-beans-
2.0
.xsd
http\://www.springframework.org/schema/tool/spring-tool-
2.0
.xsd
=
org/springframework/beans/factory/xml/spring-tool-
2.0
.xsd
http\://www.springframework.org/schema/util/spring-util-
2.0
.xsd
=
org/springframework/beans/factory/xml/spring-util-
2.0
.xsd
http\://www.springframework.org/schema/aop/spring-aop-
2.0
.xsd
=
org/springframework/aop/config/spring-aop-
2.0
.xsd
http\://www.springframework.org/schema/lang/spring-lang-
2.0
.xsd
=
org/springframework/scripting/config/spring-lang-
2.0
.xsd
http\://www.springframework.org/schema/tx/spring-tx-
2.0
.xsd
=
org/springframework/transaction/config/spring-tx-
2.0
.xsd
http\://www.springframework.org/schema/jee/spring-jee-
2.0
.xsd
=
org/springframework/ejb/config/spring-jee-
2.0
.xsd
http\://www.springframework.org/schema/beans/spring-beans.xsd
=
org/springframework/beans/factory/xml/spring-beans-
2.0
.xsd
http\://www.springframework.org/schema/tool/spring-tool.xsd
=
org/springframework/beans/factory/xml/spring-tool-
2.0
.xsd
http\://www.springframework.org/schema/util/spring-util.xsd
=
org/springframework/beans/factory/xml/spring-util-
2.0
.xsd
http\://www.springframework.org/schema/aop/spring-aop.xsd
=
org/springframework/aop/config/spring-aop-
2.0
.xsd
http\://www.springframework.org/schema/lang/spring-lang.xsd
=
org/springframework/scripting/config/spring-lang-
2.0
.xsd
http\://www.springframework.org/schema/tx/spring-tx.xsd
=
org/springframework/transaction/config/spring-tx-
2.0
.xsd
http\://www.springframework.org/schema/jee/spring-jee.xsd
=
org/springframework/ejb/config/spring-jee-
2.0
.xsd
清單2 spring.schemas
從以上的文件中,可以看出XML Sechema文件在類包中位置。
DWR 2.0 RC 2中的XML Schema文件
根據上面的描述,我打開DWR的jar包中spring.schemas文件,內容如下:
http\://www.directwebremoting.org/schema/spring-dwr-
2.0
.xsd
=
org/directwebremoting/spring/spring-dwr-
2.0
.xsd
然后,按照上面的路徑打開spring-dwr-2.0.xsd文件,內容如下:
<?
xml version="1.0"
encoding="UTF-8" standalone="no"
?>
<!--
省略了版權信息
-->
<
xsd:schema
xmlns
="http://www.directwebremoting.org/schema/spring-dwr"
? ? ? ? ? ? xmlns:xsd
="http://www.w3.org/2001/XMLSchema"
? ? ? ? ? ? targetNamespace
="http://www.directwebremoting.org/schema/spring-dwr"
? ? ? ? ? ? elementFormDefault
="qualified"
? ? ? ? ? ? attributeFormDefault
="unqualified"
>
<!--
省略了具體的定義
-->
</
xsd:schema
>
清單3 spring-dwr-2.0.xsd
文件spring-dwr-2.0.xsd告訴我們,其名稱空間應為“http://www.directwebremoting.org/schema/spring-dwr”,所以我們在配置Spring
2時,應使用以上的名稱空間,如下面的代碼片段所示:
<?
xml version="1.0"
encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
? ? xmlns:dwr
="http://www.directwebremoting.org/schema/spring-dwr"
? ? xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
? ? xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
? ? ? ?http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd"
>
? ?
<
dwr:configuration
>
? ? ? ?
<
dwr:convert
class
="net.blogjava.max.pws.domain.Album"
type
="bean"
>
? ? ? ? ? ?
<
dwr:exclude
method
="photos"
/>
? ? ? ?
</
dwr:convert
>
? ? ? ?
<
dwr:convert
class
="net.blogjava.max.pws.domain.Photo"
type
="bean"
>
? ? ? ? ? ?
<
dwr:exclude
method
="original, poster,
thumb, full, album"
/>
? ? ? ?
</
dwr:convert
>
? ?
</
dwr:configuration
>
? ?
<
bean
id
="ajaxFacade"
? ? ? ? class
="net.blogjava.max.pws.web.ajax.AjaxFacade"
>
? ? ? ?
<
dwr:remote
javascript
="AjaxFacade"
/>
? ? ? ?
<
property
name
="personalWebSite"
ref
="personalWebSite"
/>
? ?
</
bean
>
</
beans
>
清單3 ajaxContext.xml
WEB-INF/web.xml配置
通過上面的配置,我們可以省去dwr.xml配置,不過在web.xml配置dwr的Servlet時,要使用新的Servlet類。配置代碼片段如下:
<
servlet
>
? ?
<
servlet-name
>
dwr
</
servlet-name
>
? ?
<
servlet-class
>
org.directwebremoting.spring.DwrSpringServlet
</
servlet-class
>
? ?
<
init-param
>
? ? ? ?
<
param-name
>
debug
</
param-name
>
? ? ? ?
<
param-value
>
true
</
param-value
>
? ?
</
init-param
>
? ?
<
load-on-startup
>
1
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
? ?
<
servlet-name
>
dwr
</
servlet-name
>
? ?
<
url-pattern
>
/dwr/*
</
url-pattern
>
</
servlet-mapping
>
清單4 web.xml
總結
通過在Spring 2整合DWR 2配置,可以集中管理應用程序的配置,從一定程度上解決JavaEE開發中的配置文件泛濫的問題。
posted on 2007-01-31 16:45
Max 閱讀(17384)
評論(6) 編輯 收藏 所屬分類:
方法與技巧(Tips & tricks)