開發項目重用是很重要的開發手段,正直開發一個SSH項目,其中有一功能可重用之前的整個Flex項目(通過BlazeDS與java端交互,所需服務和servlet等有spring和springMVC來管控)。其實Flex項目同其他項目整合原理很簡單,就相當於在其他項目中嵌入Flash,不過此處還要考慮通過BlazeDS同Java端通信的問題。下面簡述下由Flex項目向SSH項目進行整合時所遇到的問題描述。
flex項目和SSH項目整合過程:
將Flex項目編譯生成的swf文件盒相應的Html文件以及相關聯的樣式文件等拷貝到SSH項目中,同時將flex項目所用Java類和Spring配置文件放到了SSH對應目錄下,並配置了web.XML文件。部分截圖如下所示:
現象:
1.在flex項目中,編譯swf文件時,如果不改變.flexPropertIEs文件中的相關配置:serverContextRoot="/Flex項目名" serverRootURL="http://localhost:8080//Flex項目名" ,直接使用編譯好的swf文件進行整合,則前台提示send failed,控制台沒有輸出任何消息。該問題是沒有找到BlazeDS通道的原因,提示見下圖:
2.如果改變.flexPropertIEs 文件中的相關配置:serverContextRoot="/ SSH項目名" serverRootURL="http://localhost:8080/ SSH項目名" ,直接使用編譯好的swf文件進行整合。但根據配置文件存放位置不同,目前有兩種現象:
1)將Flex所需配置文件放到上圖中紅色所示位置時,web.XML如下圖所示配置時,
登錄時,flex端提示:
控制台提示:
[BlazeDS]HttpFlexSession has not been registered as a listener in web.xml for this application so no events will be dispatched to FlexSessionAttributeListeners or FlexSessionBindingListeners. To correct this, register flex.messaging.HttpFlexSession as a listener in web.XML.
[BlazeDS]Channel endpoint my-amf received request.
[BlazeDS]Channel endpoint my-amf received request.
[BlazeDS]Channel endpoint my-amf received request.
第二次點擊登錄時flex端提示:
控制台僅多了一條提示:
[BlazeDS]Channel endpoint my-amf received request.
2)當將Flex所需配置文件放到下圖中紅色所示位置時,
web.XML配置文件如下圖所示配置時
登錄時,flex端提示:
控制台提示:
[BlazeDS]HttpFlexSession has not been registered as a listener in web.xml for this application so no events will be dispatched to FlexSessionAttributeListeners or FlexSessionBindingListeners. To correct this, register flex.messaging.HttpFlexSession as a listener in web.XML.
[BlazeDS]Channel endpoint my-amf received request.
[BlazeDS]Channel endpoint my-amf received request.
[BlazeDS]Channel endpoint my-amf received request.
第二次點擊登錄時同樣是這個問題
本文僅簡短的描述了整合過程極有可能遇到的問題現象,並沒有實質性的解決這個問題,但上文能反應出兩個問題,一個是Flex同Java交互的通道問題,另一個是即便能通信了,但仍舊有些配置需要做改善,以使其能有正確調用所需服務。暫做記錄,後續會跟蹤此問題。
原文鏈接:http://blog.csdn.Net/dongzi87/article/details/7521762
【編輯推薦】