<bean id="accountMgr"
class="org.springframework.aop.framework.
ProxyFactoryBean">
<property name="proxyInterfaces">
<list>
<value>
com.mybank.bizlogic.AccountMgr
</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>
securityInterceptor
</value>
</list>
</property>
<property name="target">
<ref bean="accountMgrTarget"/>
</property>
</bean>
. . .
</beans>
Web service實現和配置
FundsTransferServiceSoapBindingImpl類是Web service實現。其源代碼請參見參考資料部分。該類的框架由Axis生成,我們僅僅填寫方法來提供實現。請注意該類擴展了ServletEndpointSupport。這是Spring提供的便利類,可以用于JAX-RPC Web service實現,來獲取Spring應用程序上下文的引用。通過擴展該類,FundsTransferServiceSoapBindingImpl類可以訪問Spring上下文,來獲取先前所描述的accountMgr bean的引用。由于FundsTransferServiceSoapBindingImpl類由Axis管理,我們無法使用Spring的依賴性注入工具來自動獲取該bean的引用。因此,必須在onInit()方法中明確執行。不幸的是,這會將該類中的一些依賴性添加到特定于Spring的類中。好,這就是使用Spring和Acegi在得到受益的同時需要付出的小小代價。請注意在實際的方法transferFunds()中,代碼僅委派給accountMgr bean。
在Axis配置文件(deploy.wsdd和server-config.wsdd)中,需要確保將服務的實現類設置為該類FundsTransferServiceSoapBindingImpl,而不是由Axis生成的其他框架類(FundsTransferServiceSoapBindingSkeleton)。若要使Spring在與Axis相同的web應用程序中正確地工作,我們需要將下面的條目添加到web.xml文件中。context-param條目指定了放置Spring配置文件的位置。listener條目的設置用于在啟動時載入Spring配置和上下文。
<web-app>
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
/WEB-INF/spring-config.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.
ContextLoaderListener
</listener-class>
</listener>
. . .
</web-app>
Acegi安全配置
現在我們來討論如何在Spring配置文件中配置Acegi安全。如前所述,我們配置了業務邏輯bean,因此由securityInterceptor bean來偵聽方法調用,以執行安全檢查。下面我們來看看如何配置該bean。下面所示是securityInterceptor bean的部分Spring配置文件代碼。securityInterceptor bean是由名為MethodSecurityInterceptor的Acegi類提供的。正如其名稱所示,該類用于加強方法調用的安全,通過偵聽調用并檢查調用方是否經過認證和授權。
文章來源于領測軟件測試網 http://www.kjueaiud.com/