我正在使用gwt-platform进行应用程序开发。
我打开了2个运行相同应用程序的浏览器,我使用不同的数据进行了2次相同的操作,但现在同一视图上的浏览器访问类似的处理程序操作
现在问题是2个浏览器已经使用处理程序中的第一个接收数据进行了更新。
我不明白为什么不能识别发送请求的浏览器...所以这意味着它不是Threadsafe ......?
我在Guice中看到@RequestedScope注释在我使用Handler的execute()时很有用
有什么建议吗?
提前致谢...
答案 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;
}
}
请找到我的行动类代码