しろがねによる技術日記

メインはIT日記的な感じで書きますが、ほかにもいろいろ書きます

TERASOLUNA による初期構築

概要

TERASOLUNA 使って開発しようとしたときにいつも忘れるので備忘録

TERASOLUNAって?

NTT DATAさんがつくってる spring fw のライブラリ群
ガイドラインもしっかり作ってるので参考にしてます。
terasolunaorg.github.io

mybatis の genrator-plugin とがないのでその辺はいつもの自前のものを流用

初期構築

こんな感じの bat ファイルでさくっと作成

cd %~dp0
mvn archetype:generate -DinteractiveMode=false ^
                       -DgroupId=sample.group ^
                       -DartifactId=sample ^
                       -Dversion=1.0.0-SNAPSHOT ^
                       -Dpackage=sample.package ^
                       -DarchetypeGroupId=org.terasoluna.gfw.blank ^
                       -DarchetypeArtifactId=terasoluna-gfw-multi-web-blank-mybatis3-archetype ^
                       -DarchetypeVersion=5.0.1.RELEASE

追加項目

pom.xml

pom.xml に spring-session追加して、kvs とかでセッション管理。
kvsが使えないときは自前で拡張したDBセッションとかで管理

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session</artifactId>
    <version>1.0.2.RELEASE</version>
</dependency>

web.xml

session とか、listenerとかよしなに追加

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    <listener-class>org.terasoluna.gfw.web.logging.HttpSessionEventLoggingListener</listener-class>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <!-- Root ApplicationContext -->
    <param-value>
        classpath*:META-INF/spring/applicationContext.xml
        classpath*:META-INF/spring/spring-security.xml
        classpath*:META-INF/spring/spring-session.xml
    </param-value>
</context-param>

<filter>
    <filter-name>requestContextFilter</filter-name>
    <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>requestContextFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

あとは、特に考えなくても動いてくれる。