首页 > 解决方案 > 如何设置嵌入式 Jetty 以使用 JDBC 会话

问题描述

我正在使用嵌入式码头(组:'org.eclipse.jetty',名称:'jetty-webapp',版本:'9.4.27.v20200227')并且我正在尝试以编程方式将其设置为使用 JDBC 进行会话存储。我能找到的所有文档/示例都是关于独立码头的。

你知道怎么设置吗?

标签: sessionjetty

解决方案


我不太了解 JDBC 或会话存储,但查看文档Persistent Sessions: JDBC for Standalone jetty,它告诉您启用模块session-store-jdbc。通过查看session-store-jdbc.mod可以看到它使用etc/sessions/jdbc/session-store.xml并且可以将这些 XML 文件直接翻译成 java 代码。

因此,它看起来像是将 aJDBCSessionDataStoreFactory作为 bean 添加到服务器上。因此,您可以尝试的一些等效代码如下所示:

// Configure a JDBCSessionDataStoreFactory.
JDBCSessionDataStoreFactory sessionDataStoreFactory = new JDBCSessionDataStoreFactory();
sessionDataStoreFactory.setGracePeriodSec(3600);
sessionDataStoreFactory.setSavePeriodSec(0);
sessionDataStoreFactory.setDatabaseAdaptor(...);

JDBCSessionDataStore.SessionTableSchema schema = new JDBCSessionDataStore.SessionTableSchema();
schema.setAccessTimeColumn("accessTime");
schema.setContextPathColumn("contextPath");
// ... more configuration here
sessionDataStoreFactory.setSessionTableSchema(schema);

// Add the SessionDataStoreFactory as a bean on the server.
server.addBean(sessionDataStoreFactory);

推荐阅读