Убедитесь, что вы "включили" Spring Session для Pivotal GemFire во всех экземплярах приложения (Spring Boot), которые вы развернули в WebLogic и TomcatEE. Это так просто, как показано ниже:
@SpringBootApplication
@EnableGemFireHttpSession
class MySpringBootWebApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class, args);
}
...
}
@EnableGemFireHttpSession
является ключевым. Также убедитесь, что экземпляры приложений, развернутые в каждом из WebLogic и TomcatEE, совместно используют один и тот же регион в базовом кластере Pivotal GemFire, при условии, что в WebLogic и TomcatEE существует один кластер GemFire, обслуживающий приложения.
Например, если вы явно задали регион, используя:
@EnableGemFireHttpSession(regionName = "MySessionRegion")
Убедитесь, что все экземпляры приложения используют одно и то же имя региона (т.е. «MySessionRegion»). Кроме того, начиная с SSDG 2.0.5.RELEASE
имя региона можно настроить с помощью свойства в файле application.properties
Spring Boot:
spring.session.data.gemfire.session.region.name=MySessionRegion
Кроме того, убедитесь, что все приложения настроены для взаимодействия с одним и тем же кластером GemFire. Это зависит от Pool
, который регион Spring Session использует для связи с кластером GemFire. Имя пула настраивается с помощью аннотации, например:
@EnableGemFireHttpSession(..., poolName = "SessionPool")
Затем необходимо настроить пул для всех экземпляров приложения для подключения к одному и тому же кластеру GemFire, в идеале с локаторами, например:
@ Конфигурация
Класс MyGemFireConfiguration {
@Bean("SessionPool")
PoolFactoryBean sessionPool() {
PoolFactoryBean sessionPool = new PoolFactoryBean();
sessionPool.setName("SessionPool");
sessionPool.setLocators(Arrays.asList(new ConnectionEndpoint("host1", port1),
new ConnectionEndpoint("host2", port2),
...,
new ConnectionEndpoint("hostN", portN));
return sessionPool;
}
...
}
В качестве альтернативы, вы можете настроить пул GemFire «DEFAULT», предполагая, что настроенное клиентское состояние сеанса, в котором сохраняется область PROXY, использует пул «DEFAULT», который будет использоваться, когда пул явно не настроен / не назван. Для пример .
Последнее, о чем следует помнить, - это если вы используете топологию GemFire WAN с несколькими сайтами, где каждый сайт обслуживает определенную коллекцию приложений, разделенных сервером приложений, например (то есть WebLogic против TomcatEE). Затем вы должны убедиться, что вы настроили GemFire WAN для координации между несколькими кластерами GemFire. Это выходит за рамки этого ответа, и поэтому я призываю вас взглянуть на это .
Не стесняйтесь делиться любыми примерами кода, конфигурации и / или тестами, которые у вас есть, которые могут пролить свет на проблемы, с которыми вы столкнулись.