我正在使用gwt平台进行应用程序开发。
我打开了 2 个运行相同应用程序的浏览器,我对不同的数据执行了 2 个相同的操作,但现在浏览器在同一视图上访问类似的处理程序操作
现在的问题是 2 个浏览器已更新为从处理程序首次接收的数据。
我不明白为什么无法识别发送请求的浏览器......所以这意味着它不是线程安全的...?
我在 Guice 中看到@RequestedScope注释当我在处理程序的 execute() 上使用时它很有用
吗有什么建议吗?
提前感谢...
也许...
您必须使操作线程安全。(attrs 有 final,例如,注入构造函数),也许你的逻辑也必须是线程安全的。
顺便说一句,你能发布一个你的行动的例子吗?
浏览器,您应该运行 2 个不同的应用程序实例。在你的onModuleLoad()
,只要放一个System.out.println(this);
.您应该看到不同的结果,这意味着您有不同的实例。
如果从浏览器 1 运行操作,则该操作将仅在浏览器 1 中执行。我不知道您的操作在做什么,但如果它更新数据存储(或数据库)中的数据,并且由于两个实例共享持久性层,您也将在浏览器 2 中看到新数据。
在浏览器1 中触发的操作不太可能在两个浏览器上执行。这意味着它们共享相同的事件总线。
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;
}
}
请找到我的操作类代码