redis+tomcat8.5.x

使用Redisson实现Tomcat Session共享
本文介绍如何使用Redisson在Tomcat集群中实现Session共享。通过下载并配置特定的JAR包,修改context.xml引入Redisson配置,以及设置正确的读写模式,可以将Session数据存储在Redis中,实现高可用性和负载均衡。

使用开源方案:redisson

github地址:

https://github.com/redisson/redisson/tree/master/redisson-tomcat

redisson.conf 文件配置:

https://github.com/redisson/redisson/wiki/2.-Configuration#26-single-instance-mode

 

使用方法:

第一步:下载对应的jdk、tomcat版本jar包,一共两个:redisson-all-VERSION.jar、redisson-tomcat-VERSION.jar

第二步:将下载好的jar包上传到tomcat的lib目录下: /usr/local/src/tomcat8/lib

第三步:在/usr/local/src/tomcat8/conf/context.xml 配置redisson.conf 文件目录

<Manager className="org.redisson.tomcat.RedissonSessionManager"

configPath="${catalina.base}/conf/redisson.conf" readMode="REDIS" updateMode="DEFAULT"/>

 

备注:配置属性里的readMode和updateMode需要注意(选用redis存储session时,需要将readMode改为REDIS):

readMode - read attributes mode. Two modes are available:

  • MEMORY - read attributes stored in local Tomcat Session. Default mode.
  • REDIS - read directly from Redis.

updateMode - attributes update mode. Two modes are available:

  • DEFAULT - session attributes are stored into Redis only through setAttribute method. Default mode.
  • AFTER_REQUEST - all session attributes are stored into Redis after each request.

第四步:配置redisson需要的数据信息 redisson.conf (参考redisson的wiki文档,我使用的单节点模式,找到相应的配置内容):

{
   "singleServerConfig":{
      "address": "redis://127.0.0.1:6379",
      "password":"****your password***",
      "database":0,
      "idleConnectionTimeout":10000,
      "pingTimeout":1000,
      "connectTimeout":10000,
      "timeout":3000,
      "retryAttempts":3,
      "retryInterval":1500,
      "subscriptionsPerConnection":5,
      "clientName":null,
      "subscriptionConnectionMinimumIdleSize":1,
      "subscriptionConnectionPoolSize":50,
      "connectionMinimumIdleSize":32,
      "connectionPoolSize":64,
      "dnsMonitoringInterval":5000
   },
   "threads":0,
   "nettyThreads":0,
   "codec":{
      "class":"org.redisson.codec.JsonJacksonCodec"
   },
   "transportMode":"NIO"
}

第五步:重启tomcat后就可以看到redis里有redisson为key的session缓存数据了

 

参考文章:https://yq.aliyun.com/articles/597340

<think>我们有两个问题需要解决:1.MySQL5.5.45+SSL连接警告的解决方案2.Tomcat8.5.83manager应用部署问题首先,我们解决第一个问题:MySQLSSL连接警告。根据用户之前的问题和我们的回答,我们知道这个警告是由于MySQL连接时未正确配置SSL导致的。在SSM项目中,我们通常在数据库连接配置中添加参数来禁用SSL或禁用证书验证。但是,用户现在提到了MySQL5.5.45+,并且引用[2]中提到了MySQLConnector/J8.0驱动。所以我们需要确认驱动版本和配置。解决方案步骤:1.在数据库连接URL中添加参数:`useSSL=false`和`verifyServerCertificate=false`。注意:在MySQLConnector/J8.0中,`useSSL`参数已经被`ssl-mode`替代,但为了向后兼容,仍然可以使用`useSSL`。2.如果使用MySQLConnector/J8.0,推荐使用`ssl-mode=DISABLED`来替代`useSSL=false`。因此,在jdbc.properties中,我们可以这样配置:jdbc.url=jdbc:mysql://localhost:3306/dbname?useSSL=false&verifyServerCertificate=false&serverTimezone=UTC或者(推荐对于Connector/J8.0+):jdbc.url=jdbc:mysql://localhost:3306/dbname?ssl-mode=DISABLED&serverTimezone=UTC注意:在properties文件中,多个参数用`&`连接,不需要转义。如果在XML配置文件中,则`&`需要写成`&`。第二个问题:Tomcat8.5.83manager应用部署问题。引用[1]和引用[3]提到了Tomcat的配置,特别是引用[3]中提到了在`server.xml`中配置Context。但是,manager应用是Tomcat自带的,部署manager应用通常不需要手动部署,而是需要配置用户权限。步骤:1.确保Tomcat的webapps目录下有manager应用(通常有manager目录)。2.配置用户角色和权限,在`conf/tomcat-users.xml`文件中添加具有manager角色的用户。例如:```xml<tomcat-users><rolerolename="manager-gui"/><userusername="admin"password="password"roles="manager-gui"/></tomcat-users>```3.注意:从Tomcat7开始,manager应用默认只允许本地访问。如果需要远程访问,需要修改manager应用的context配置。在Tomcat8.5.83中,可以在`conf/Catalina/localhost/manager.xml`(如果没有则创建)中添加:```xml<Contextprivileged="true"antiResourceLocking="false"docBase="${catalina.home}/webapps/manager"><ValveclassName="org.apache.catalina.valves.RemoteAddrValve"allow="^.*$"/></Context>```或者,更安全的方式是只允许特定的IP地址。但是,更常见的做法是修改`webapps/manager/META-INF/context.xml`中的Valve配置,将allow的规则改为允许远程IP。默认情况下,该文件中的配置是:```xml<ValveclassName="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>```我们可以修改allow属性,例如允许所有IP:`allow=".*"`(不推荐)或者添加允许的IP段。注意:修改后需要重启Tomcat。另外,如果遇到403AccessDenied错误,可能是用户角色配置不正确。manager应用需要`manager-gui`角色。总结两个问题的解决方案:一、MySQLSSL警告-在数据库连接URL中添加:`useSSL=false&verifyServerCertificate=false`或`ssl-mode=DISABLED`二、Tomcatmanager部署-配置用户角色(manager-gui)并设置用户名密码-配置远程访问权限(如果需要远程访问)下面,我们将按照用户要求,将回答结构化,并自然地添加引用标记。</think>### 解决MySQL SSL连接警告与Tomcat Manager部署问题 #### 一、MySQL 5.5.45+ SSL连接警告解决方案 **问题原因**: MySQL 5.5.45+ 默认要求SSL加密连接,但SSM项目中未正确配置SSL参数,导致出现警告`Establishing SSL connection without server's identity verification is not recommended`。 **解决步骤**: 1. **修改JDBC连接配置** 在SSM项目的数据库配置文件(如`jdbc.properties`)中添加SSL参数: ```properties # 开发环境推荐配置(禁用SSL) jdbc.url=jdbc:mysql://localhost:3306/your_db?useSSL=false&verifyServerCertificate=false&serverTimezone=Asia/Shanghai # 生产环境推荐配置(启用SSL) # jdbc.url=jdbc:mysql://localhost:3306/your_db?useSSL=true&requireSSL=true&verifyServerCertificate=true ``` - `useSSL=false`:完全禁用SSL加密 - `verifyServerCertificate=false`:跳过证书验证 - `serverTimezone=Asia/Shanghai`:避免时区错误(必须与服务器时区一致)[^2] 2. **检查MySQL驱动版本** 确保使用兼容的MySQL Connector/J驱动: - MySQL 5.7+ 推荐驱动:`com.mysql.cj.jdbc.Driver` - 在`pom.xml`中确认版本: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <!-- 兼容MySQL 5.5+ --> </dependency> ``` 3. **生产环境SSL配置(可选)** 如需启用SSL: ```properties jdbc.url=jdbc:mysql://localhost:3306/prod_db?useSSL=true&trustCertificateKeyStoreUrl=file:/path/to/truststore.jks ``` - 需先生成信任证书库: ```bash keytool -import -alias mysql -file server-cert.pem -keystore truststore.jks ``` **效果验证**: 重启应用后警告消失,可通过日志检查连接参数是否生效[^1]。 --- #### 二、Tomcat 8.5.83 Manager应用部署问题 **常见问题及解决方案**: 1. **403 Access Denied错误** **原因**:未配置manager-gui角色用户 **解决**: 修改`conf/tomcat-users.xml`: ```xml <tomcat-users> <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="admin" password="your_secure_pwd" roles="manager-gui,admin-gui"/> </tomcat-users> ``` 2. **远程访问限制** **原因**:默认只允许localhost访问 **解决**: 修改`webapps/manager/META-INF/context.xml`: ```xml <!-- 注释掉IP限制 --> <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> ``` 3. **应用部署失败** **可能原因**: - 应用路径未配置 - 权限不足 **解决**: 在`conf/server.xml`中添加Context配置: ```xml <Context path="/manager" docBase="/opt/tomcat/webapps/manager" privileged="true" antiResourceLocking="false"/> ``` 确保`webapps/manager`目录权限: ```bash chown -R tomcat:tomcat /opt/tomcat/webapps/manager ``` 4. **Session同步问题** **若使用Redis会话共享**(引用[1]): 在`context.xml`中添加Redis配置: ```xml <Manager className="org.apache.catalina.session.PersistentManager"> <Store className="org.apache.catalina.session.RedisStore"/> </Manager> ``` **部署验证**: 访问 `http://server_ip:8080/manager/html`,使用配置的用户名密码登录,应显示应用管理界面[^3]。 --- ### 关键注意事项 1. **安全警告**: - 生产环境禁用SSL(`useSSL=false`)存在安全风险,建议通过防火墙限制数据库端口访问 - Manager应用开放远程访问需配合IP白名单 2. **版本兼容性**: - Tomcat 8.5.x 兼容JDK 1.8+(引用[1]) - MySQL Connector/J 8.x 驱动类名为`com.mysql.cj.jdbc.Driver`(引用[2]) 3. **配置生效**: 修改后需重启Tomcat服务: ```bash systemctl restart tomcat ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值