Spring Boot的各种配置

Spring Boot的配置各种各样的备忘录

在使用Spring Boot开发应用程序并将其投入生产环境时,简要记录下配置等内容,以免忘记。

组成

    • OpenJDK 1.8

 

    • Spring Boot 1.3.3 (Embedded Tomcat8)

 

    MySQL 5.6

构建工具-Gradle

云计算服务中的应用服务器
亚马逊云计算(Amazon EC2)(亚马逊 Linux AMI)

使用Service启动Spring Boot。

想以往常的方式来启动应用程序,即使用java -jar application_name.jar命令。但是从Spring Boot 1.3开始,似乎实现了可以通过Service来启动的功能,所以我尝试使用该功能进行适配。

请点击以下链接查看详细信息:
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html#deployment-service

应对的事情

1. 更改build.gradle的配置。

bootRepackage {
    executable = true
}

添加
※这可能是可选的。
我还没有验证即使没有它也可以正常启动。

使用Gradle的bootRepackage来创建一个JAR文件。

在执行应用程序的服务器上上传jar文件并创建符号链接。按照官方文档的说明,将SpringBoot应用程序转换为jar文件,并将其上传到应用程序服务器的某个位置,例如/var/app/something.jar。

在/etc/init.d/目录下创建一个符号链接
ln -s /var/app/something.jar /etc/init.d/something
请注意,如果没有正确地设置执行权限等等,它不会启动。

通过以下命令即可启动或停止应用程序:
启动:
/etc/init.d/something start
停止:
/etc/init.d/something stop

若想在启动应用程序时添加JVM参数、更改日志文件的输出位置或附加其他选项,可以在放置JAR文件的位置准备一个名为”jar名.conf”(例如:something.conf)的文件。这样在启动时会自动读取该文件。

例)
LOG_FOLDER=/var/log/xxxx/
JAVA_OPTS="-Xms512m"

使用Spring Boot + MySQL时连接断开。

有用户报告说应用程序在运行但无法搜索数据,经查看日志发现出现以下消息。

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

听说如果是在MySQL上运行的话,如果一段时间没有访问,它会自动断开连接。

已采取行动

我稍微查了一下,已经有类似情况的信息了,基本上可以按照那里的解决方案来处理。
参考信息:

http://stackoverflow.com/questions/22684807/spring-boot-jpa-configuring-auto-reconnect

在以下情况下,进行了一些更改:
除了spring.datasource.time-between-eviction-runs-millis=xxxxxx之外,
还添加了spring.datasource.min-evictable-idle-time-millis=xxxx作为参数。

这样一来,将针对达到 min-evictable-idle-time-millis 以上空闲的连接,每隔 time-between-eviction-runs-millis 时间进行监视。

将Elastic Cacahe集成到Spring Boot中。

由于在将会话信息永久化到Elastic Cache(memcached)时,无法通过属性来有效设置,所以只能通过JavaConfiguration来处理这部分内容。

应对这件事

我搜索了一下,发现了类似的信息,可以直接参考。
http://stackoverflow.com/questions/25788969/memcached-with-spring-boot
真的非常感谢Stack Overflow。

为使用Elastic Cache的应用程序的build.gradle文件中添加用于管理memcached的jar
https://github.com/magro/memcached-session-manager

    • memcached-session-manager

 

    memcached-session-manager-tc8(Embedded Tomcat8で動いているので)

为了能够管理Memcached,需要添加Java配置。

@Bean
public EmbeddedServletContainerFactory tomcat() {
    return new TomcatEmbeddedServletContainerFactory() {
        @Override
        protected void postProcessContext(Context context) {
            MemcachedBackupSessionManager manager = new MemcachedBackupSessionManager();
            manager.setMemcachedNodes("Elastic Cache Endpoint");
            manager.setRequestUriIgnorePattern(".*\\.(ico|png|gif|jpg|css|js)$");
            context.setManager(manager);
        }
    };
}
广告
将在 10 秒后关闭
bannerAds