gpt4 book ai didi

java - Flex + Java + BlazeDS : Some java class instances already created on the server are unavailable from Flex!

转载 作者:行者123 更新时间:2023-12-01 15:56:28 25 4
gpt4 key购买 nike

感谢提供的所有文档和精彩的论坛。

我有一个关于 Java Factory 的问题;我在某处读到:“... JavaFactory 将检查范围内是否已经有一个实例并返回该实例。如果该对象不可用,则将其实例化...”,但我不明白表达式“如果对象不可用”?

我无法在服务器中查找和/或分配已实例化的类(由另一个类)到声明的目的地。

这是场景:

我正在用 Java 开发一个应用程序:

  • J2EE。
  • 我在 Tomcat 6 上运行它服务器
  • 我使用 BlazeDS 进行交流与 Flex。
  • 我正在使用RPC 的远程处理服务(通过RemoteObjects)

两个 java 类处理客户端 (Flex) 交互,例如 ApplicationClassUserApplicationClass:

  • ApplicationClass 有一个引用(属性)到 UserApplicationClass实例
  • ApplicationClass 应该是唯一的入口点(尽管BlazeDS 需要一个空的构造函数)来实例化一个**用户*ApplicationClass*;

UserApplicationClass 在 ApplicationClass 上设置 User 属性后立即实例化。

**//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的任何方法时,它找不到服务器上已创建的类<​​/strong>,而是实例化了一个品牌new one(使用默认构造函数将其所有属性设置为 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>

注意:两个目标上的范围属性(在 remoting-config.xml 上)均设置为 session 。

我希望我已经说清楚了;如果您能帮助我,我将不胜感激。

提前致谢,

上午

最佳答案

JoseVelas,即使我也遇到了你提到的同样的问题。经过谷歌搜索总结后,我发现了远程配置文件的问题。如果您尝试在 java Factory 中给出以下代码

<destination id=”my-destination”>

<properties>

<source>flex.samples.EmployeeService </source>

**<scope>application</scope>**

</properties>

</destination>

对我来说效果很好。范围在这里起着重要作用,我希望它可以对您有所帮助。

关于java - Flex + Java + BlazeDS : Some java class instances already created on the server are unavailable from Flex!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4960482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com