GWTP处理程序是线程安全的吗?

时间:2012-05-30 08:24:05

标签: gwt gwt-platform

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

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

现在问题是2个浏览器已经使用处理程序中的第一个接收数据进行了更新。

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

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

有什么建议吗?

提前致谢...

3 个答案:

答案 0 :(得分:1)

也许......

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

顺便问一下,你能发布一个行动的例子吗?

答案 1 :(得分:1)

使用2个浏览器,您应该有2个不同的应用实例正在运行。在onModuleLoad()中,只需输入System.out.println(this);即可。您应该看到不同的结果,这意味着您有不同的实例。

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

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

答案 2 :(得分: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;
    }
}

请找到我的行动类代码