英語に問題がありますので、お詫び申し上げます。
私はJavaプログラミングの初心者です。IntelliJIdeaをIDEとして使用し、Vaadinフレームワークを使用してGUIを作成し、TomcatをWebサーバーとして使用しています。プロジェクトはMavenで生成されました。アプリケーションを作成するには、例として次のソースを使用します。
Applicationクラス(com.vaadin.Application
継承ではありません)がありますが、シングルトンです。
package com.exadel.dinnerorders.vaadinwindow.application;
import com.exadel.dinnerorders.entity.Order;
import com.exadel.dinnerorders.entity.User;
import com.exadel.dinnerorders.service.TasksManagerService;
import com.google.common.eventbus.EventBus;
public class Application {
private EventBus eventBus = new EventBus();
private static Application INSTANCE = new Application();
private User user;
private Order order;
private TasksManagerService tasksManagerService = new TasksManagerService();
private Application() {
tasksManagerService.start();
}
public synchronized static Application getInstance(){
return INSTANCE;
}
public EventBus getEventBus() {
return eventBus;
}
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
public TasksManagerService getTasksManagerService() {
return tasksManagerService;
}
}
そしてWebApplicationController
、を拡張するクラスがありますcom.vaadin.Application
。
package com.exadel.dinnerorders.vaadinwindow.application;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.*;
import java.util.Collection;
public class WebApplicationController extends com.vaadin.Application {
private EventBus eventBus = Application.getInstance().getEventBus();
private Layout loginLayout;
private String datePattern = "YYYY-MM-DD";
@Override
public void init() {
createLayouts();
createMainWindow();
eventBus.register(this);
setTheme("apptheme");
}
//some another methods for initialization main window and layouts
}
したがって、私のアプリケーションは正常に動作しているようです。しかし、次の問題に直面しました。Tomcat7構成でアプリケーションをアイデアで実行します。問題なく起動します。ブラウザとしてOperaを開き、たとえばuser1としてログインします。すべてが正しく機能しているようです。次に、Google Chromeまたは別のブラウザを開き、user2としてログインします。また、Operaでウィンドウを更新すると、user2がログインしていることはわかりますが、user1は表示されません。別のコンピューターで同じことをしようとしましたが、同じ結果が得られました。(あるマシンではuser1としてログに記録され、別のマシンではuser2としてログに記録されます)。Firebugは、sessionsIDがブラウザごとに異なることを示しています。
問題は、サーブレットを構成するweb.xmlファイルにあるようです。しかし、私はさまざまな構成例を試しましたが、常に同じ結果が得られました。
残念ながら、私はグーグルや他のフォーラムで答えを見つけることができませんでした。