[英]flex mobile project : using Blazeds to access data from java class
[英]Flex + Java + BlazeDS: Some java class instances already created on the server are unavailable from Flex!
感謝您提供所有文檔和出色的論壇。
我對Java工廠有疑問; 我在某處讀到:“ ... JavaFactory將檢查范圍內是否已存在實例,然后將其返回。如果對象不可用,則將實例化...”,但我不理解表達式“如果對象不可用”?
我在查找和/或將已在服務器中實例化(由另一個類)的類分配給聲明的目的地時遇到了麻煩。
這是場景 :
我正在用Java開發應用程序:
有兩個處理客戶端(Flex)交互的Java類 ,分別是ApplicationClass和UserApplicationClass :
在ApplicationClass上設置屬性User之后,立即實例化UserApplicationClass。
**//Java Code**
public class ApplicationClass {
private User user = null;
private UserApplicationClass userApplicationClass = null;
...
public ApplicationClass {}
...
public void setUser(User user) {
this.user = user;
this.userApplicationClass = new UserApplicationClass(user);
}
...
}
到目前為止,一切都很好:
從Flex客戶端,我可以使用ApplicationClass方法,設置其User並從ApplicationClass獲取UserApplicationClass屬性。
但這是問題所在 :
當我嘗試使用UserApplicationClass的任何方法時, 它沒有找到已經在服務器上創建的類 ,而是實例化了一個全新的類 (通過使用默認構造函數將其所有屬性設置為null)。
我如何確保目標指向服務器上由另一個類創建的指定實例,而不實例化一個新實例?
**// Flex Client Code**
<mx:Application
...
creationComplete="invokeService()">
...
<mx:Script>
<![CDATA[
import application.UserApplicationClass;
...
private var userApplicationClass :UserApplicationClass;
...
private function invokeService():void
{
applicationClassRemoteObject.getUser(); // Ok
userApplicationClass.getUser(); // Ok
userApplicationClassRemoteObject.getUser(); **// Fails; user null; the JavaFactory
//doesn't find the UserApplicationClass instance on the
//server and creates a new instance.**
}
...
private function applicationClass_getUser(event:ResultEvent):void
{
// Validate null ResultEvent ...
userApplicationClass = UserApplicationClass(event.result);
}
...
]]>
</mx:Script>
<mx:RemoteObject
id="applicationClassRemoteObject"
destination="***ApplicationClass***Destination"
showBusyCursor="true">
...
<mx:method
name="getUserApplicationClass"
result="applicationClass_getUser(event)"
/>
</mx:RemoteObject>
<mx:RemoteObject
id="userApplicationClassRemoteObject"
destination="***UserApplicationClass***Destination"
showBusyCursor="true">
<mx:method
name="getUser"
result="userApplicationClass_getUser(event)"
/>
...
</mx:RemoteObject>
...
</mx:Application>
注意:兩個目標上的scope屬性(在remoting-config.xml上)都設置為session。
我希望我已經清楚了。 如果您能幫助我,我將不勝感激。
提前致謝,
上午
JoseVelas,甚至我也遇到了您提到的相同問題。 在匯總中進行谷歌搜索之后,我發現了remote-config文件的問題。如果嘗試在Java Factory中提供以下代碼,
<destination id=”my-destination”>
<properties>
<source>flex.samples.EmployeeService </source>
**<scope>application</scope>**
</properties>
</destination>
這對我來說可以。 示波器在這里起着主要作用,希望對您有所幫助。
您應該尋找在BlazeDS中實現穩定服務的方法。 查找服務的可用范圍。 例如,您可以讓所有用戶使用相同的ApplicationClass,或為每個用戶使用一個。
默認情況下,它是無狀態的,因為將為每個請求實例化一個新對象。 如果目標配置包含有狀態標志,則將在HTTP會話中搜索對象的現有實例,因此將在有狀態組件上調用來自同一客戶端的多個請求。 從類JavaAdapter
我希望這些鏈接能為您指明方向: http : //flexuniverse.wordpress.com/2010/05/20/setting-up-gilead-for-blazeds-in-statefull-mode/ http://sujitreddyg.wordpress.com / 2009/01/20 / how-remoting-service-in-blazeds-works /
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.