2024年8月23日 星期五

wicket 10 要能跑在clusters環境下之設定

 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





沒有留言:

張貼留言