0

我正在使用 gwt-platform 进行应用程序开发。

我打开了 2 个运行同一个应用程序的浏览器,我用不同的数据做了 2 个相同的操作,但是现在同一个视图上的浏览器访问了类似的处理程序操作

现在的问题是 2 个浏览器已经更新了从处理程序接收到的第一个数据..

我不明白为什么它不能识别发送请求的浏览器......所以这意味着它不是线程安全的......?

我在 Guice 中看到 @RequestedScope 注释在我使用 Handler 的 execute() 时是否有用

有什么建议么?

提前致谢...

4

3 回答 3

1

也许...

您必须使您的操作线程安全。(attrs 具有 final,例如,在构造函数中注入),并且您的逻辑也必须是线程安全的。

顺便说一句,您可以发布您的操作示例吗?

于 2012-05-30T19:09:39.060 回答
1

使用 2 个浏览器,您应该运行 2 个不同的应用程序实例。在你的onModuleLoad(),只要放一个System.out.println(this);. 您应该看到不同的结果,这意味着您有不同的实例。

如果您从浏览器 1 运行操作,该操作将在浏览器 1 中执行。我不知道您的操作在做什么,但如果它更新数据存储(或数据库)中的数据,并且由于两个实例共享持久层,您还将在浏览器 2 中看到新数据。

在浏览器 1 中触发的操作不太可能在两个浏览器上执行。这意味着它们共享相同的事件总线。

于 2012-05-31T06:00:52.807 回答
0
public class InfoAction extends UnsecuredActionImpl<Response<ObjectTO>>
{   
    private List<OpenTO> request;
    private String machineId;
    private int actionType;
    private UserBean userBean;

    /**
     * This is been in the case of double dated flight.
     */
    private String orignalFpesLegId;

    public List<OpenTO> getRequest() {
        return request;
    }

    public void setRequest(List<OpenTO> request) {
        this.request = request;
    }

    public String getMachineId() {
        return machineId;
    }

    public void setMachineId(String machineId) {
        this.machineId = machineId;
    }

    /**
     * @return the actionType
     */
    public int getActionType() {
        return actionType;
    }

    /**
     * @param actionType the actionType to set
     */
    public void setActionType(int actionType) {
        this.actionType = actionType;
    }

    /**
     * @param userBean the userBean to set
     */
    public void setUserBean(UserBean userBean) {
        this.userBean = userBean;
    }

    /**
     * @return the userBean
     */
    public UserBean getUserBean() {
        return userBean;
    }
}

请找到我的动作类代码

于 2012-05-31T04:39:43.760 回答