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

标签 java apache-flex flex3 jakarta-ee blazeds

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

我有一个关于 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/

相关文章:

java - 正则表达式电话号码模式

java - 扫描仪一开始就忽略空白

java - Textview 搞乱了阿拉伯字母

java - 我有 import org.apache.commons.io.FileUtils;在我的代码中,它可以在 Eclipse 上运行,但不能在命令行中运行

java - 而不是数组集合

apache-flex - 是否可以在不使用 Debug模式的情况下找到 ActionScript 3.0 中导致错误的函数和/或行号?

javascript - 动态加载 swf 后无法与 Flex 中的 Javascript 进行通信

css - 禁用组合框时更改填充颜色

actionscript-3 - 在 Flex AS3 中迭代模型列表