Spring boot 3.x 加上wicket 10 跑在k8s或是其他cluster的環境。
1 .由於wicket 會將page的歷史與快取資料存到於伺服器的暫存資料夾,所以必須將此資料改存於第三方共同的儲存,以利同步化。若是採用memcached的話可進行以下設定。
在pom.xml加入wicketstuff-datastore-memcached。
<dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-datastore-memcached</artifactId>
<version>${wicket.version}</version>
</dependency>
並加入memcached的設定檔
@Bean
public DataStoreMemcachedProperties prop() {
DataStoreMemcachedProperties p = new DataStoreMemcachedProperties();
p.setServerNames("xxx.xxx.xxx.xxx");
return p;
}
這樣在wicket 啟用後,即會自動載入並啟用
※若無法自動,請檢查pom是否有載入wicket-spring-boot-starter這個元件。
2.若環境無法設定粘滯會話(Sticky Sessions),則需進一步做下列設定,將tomcat的產生的session也一併存入第三方。例如以下memcached例子說明:
@Configuration
public class TomcatSessionConfig {
@Bean
public TomcatContextCustomizer tomcatContextCustomizer() {
return context -> {
try {
String host = "xxx.xxx.xxx.xxx";
MemcachedBackupSessionManager manager = new MemcachedBackupSessionManager();
manager.setMemcachedNodes(host + ":11211");
manager.setSticky(false);
manager.setSessionBackupAsync(false);
manager.setLockingMode("none");
context.setManager(manager);
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
}
以上即會在啟動時,tomcat自動將session存到memcached