Migration Guide 5.1.0_en - terasolunaorg/terasoluna-gfw GitHub Wiki

Guide for migration from 5.0.1 to 5.1.0

.. only:: html

 .. contents:: Table of contents
    :depth: 2
    :local:

Key changes in 5.1.0

The key changes in 5.1.0 are as below.

  • Updated the Spring Framework to 4.2.4
  • Updated Apache Commons Collections to 3.2.2
  • Updated Spring Security to 4.0.3
  • Updated the Spring IO Platform to 2.0.1
  • Updated MyBatis Spring to 1.2.3
  • Updated MyBatis to 3.3.0

Updating the Spring Framework to 4.2.4

The Spring Framework has been updated to 4.2.4.RELEASE to resolve the security vulnerability from 5.1.0.

  • [CVE-2015-5211] RFD Attack in Spring Framework ([SPR-13548] Protect against RFD exploits)
  • [CVE-2015-4852] [SPR-13656] SerializableTypeWrapper.MethodInvokeTypeProvider can be exploited for unsafe deserialization

Updating Apache Commons Collections to 3.2.2

Apache Commons Collections has been updated to 3.2.2 to resolve the security vulnerability from 5.1.0.

  • [CVE-2015-4852] [COLLECTIONS-580] Arbitrary remote code execution with InvokerTransformer

Updating Spring Security to 4.0.3

The Spring Framework has been updated to 4.0.3 RELEASE from 5.1.0.

Updating the Spring IO Platform to 2.0.1

The Spring IO Platform has been updated to 2.0.1.RELEASE from 5.1.0. This update has been performed to resolve the above 2 security vulnerabilities and also the following libraries have been updated as a result of it.

  • Updated Spring Data Commons to 1.11.2.RELEASE
  • Updated Spring Data JPA to 1.9.1.RELEASE
  • Updated AspectJ to 1.8.7
  • Updated Jackson to 2.6.4
  • Updated SLF4J to 1.7.13
  • Updated Hibernate ORM to 4.3.11.Final
  • Updated Hibernate Validator to 5.2.2.Final
  • Updated Jboss Logging to 3.3.0.Final
  • Updated Joda Time to 2.8.2
  • Updated Apache Commons Dbcp2 to 2.1.1
  • Updated Apache Commons Pool2 to 2.4.2
  • Updated Apache Commons Collections to 3.2.2

Updating MyBatis to 3.3.0

MyBatis has been updated to 3.3.0 to incorporate the following bug fixes from 5.1.0. MyBatis Spring has been updated to 1.2.3 along with this update.

  • [#464] Bug fix support for MyBatis unexpected NPE
Further, the default library to be used while "Lazy Load"ing the related Entity has been changed in line with this update. The default library has been changed from CGLIB to JAVASSIST.
Refer to 'Guideline - settings for Lazy Loading the related Entity <http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ArchitectureInDetail/DataAccessMyBatis3.html#entitylazy-load>'_ for the details.

Adding function to common library and changing some specifications

Function added to common library and some of the specifications changed, from 5.1.0. For implementation of common library, JDK1.6 compatible code was guaranteed. From 5.1.0, JDK1.7 compatible code is guaranteed.

  • [#364] Support @AliasFor in @TransactionTokenCheck
  • [#367] Add utility to interconvert fullwidth <-> halfwidh
  • [#372] Add constraints of Bean Validation
  • [#390] Add CodePoint-based validation
  • [#401] Add PARAMETER on @ExistInCodeList
  • [#402] Support CharSequence on @ExistInCodeList
  • [#436] Remove jsp/jstl dependencies from terasoluna-gfw-web
  • [#462] Deprecate RedirectAuthenticationHandler

Upgrading the blank project

Some configuration files in blank project have been upgraded from 5.1.0.

  • [single#136] Reflect changes of MyBatis 3.3.0
  • [single#137] Disable URL Rewriting by default with Servlet 3.0 config
  • [single#143] Polushing XML files
  • [single#159] Add validation messages
  • [single#162] Change dependency to terasoluna-gfw-web-jsp
  • [single#168] wrong spelling "plugi" at parent POM.xml
  • [multi#178] Reflect changes of MyBatis 3.3.0
  • [multi#179] Disable URL Rewriting by default with Servlet 3.0 config
  • [multi#185] Polushing XML files
  • [multi#193] Change configuration value of 'onError' option of sql-maven-plugin. (continue -> abort)
  • [multi#198] Add validation messages
  • [multi#201] About "auto-config"
  • [multi#204] Change dependency to terasoluna-gfw-web-jsp
  • [multi#209] POM analysis is failing at seleinumPJ,'cause maven-failsafe-plugin version is not found.
  • [multi#213] wrong spelling "plugi" at parent POM.xml

Procedures for migration from 5.0.1 to 5.1.0

The migration procedures are as follows.

Note

Legend

Required : This procedure is mandatory
Required by case : This procedure is mandatory if conditions match
Optional : This procedure is recommended. (Implement it as required)
- : This procedure is not required

[General]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Steps Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Update the dependent library Required Required Required
Modification associated with separation of JSP/JSTL related libraries from terasoluna-gfw-web Required by case Required by case -

[Spring Framework]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Steps Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Substitute deprecated API of Spring Framework Required by case Required by case Required by case
Cancel interim measures associated with resolution of Hibernate Validator bug (HV-881, HV-949) Required by case Required by case Required by case

[Spring Security]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Steps Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Modification associated with constructor argument change of AuthenticationException class Required by case Required by case Required by case
Modification associated with change in authorize element Required by case Required by case Required by case
Delete ConcurrentSessionControlStrategy Required by case Required by case Required by case
Change default URL and parameter name Required by case Required by case Required by case
Modification associated with omission of ROLE name prefix (ROLE_) Required by case Required by case Required by case
Modification associated with Spring Security package change Required by case Required by case Required by case
Modification associated with change in default value of use-expressions Required by case Required by case Required by case
Modification associated with change in default value of disable-url-rewriting Required by case Required by case Required by case
Delete access-denied-page attribute Required by case Required by case Required by case
Delete path-type attribute Required by case Required by case Required by case
Modification associated with change in default setup of csrf Required by case Required by case Required by case
Modification associated with change in default setup of headers Required by case Required by case Required by case

[MyBatis]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Steps Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
defaultFetchSize setup Optional Optional Optional
Configuration changes due to update to MyBatis3.3.0 Optional Optional Optional
Generic handling of ResultHandler Optional Optional Optional

[Common library]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Steps Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Modification associated with deletion of ExistInCodeListValidatorForString Required by case Required by case Required by case
Modification associated with deprecation of RedirectAuthenticationHandler Required by case Required by case Required by case

[Blank project]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Steps Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Update Java version to 1.8 Optional Optional -
Setting of Servlet3.0 to disable URL rewriting Optional Optional Optional
Source coordination of various XML files Optional Optional Optional
Add message for new annotation Optional Optional Optional
Delete setting of auto-config attribute Optional Optional Optional
Change version property name for build-helper-maven-plugin Optional Optional Optional
Add maven-failsafe-plugin Optional Optional -
Delete onError setup of sql-maven-plugin Optional - -

[Step 1] Updating dependent library

Update the common library and dependent library of TERASOLUNA Server Framework for Java (5.x).

.. tabularcolumns:: |p{0.35\linewidth}|p{0.25\linewidth}|p{0.25\linewidth}|p{0.15\linewidth}|
Library name Version before update Version after update Remarks
TERASOLUNA Server Framework for Java (5.x) Common Library 5.0.1.RELEASE 5.1.0.RELEASE  
Spring Framework 4.1.7.RELEASE 4.2.4.RELEASE  
Spring Security 3.2.7.RELEASE 4.0.3.RELEASE  
Spring Data Commons 1.9.3.RELEASE 1.11.2.RELEASE  
Spring Data JPA 1.7.3.RELEASE 1.9.2.RELEASE  
Hibernate 4.3.10.Final 4.3.11.Final  
Hibernate Validator 5.1.3.Final 5.2.2.Final  
AspectJ 1.8.6 1.8.7  
SLF4J 1.7.12 1.7.13  
Jackson 2.4.6 2.6.4  
Jboss Logging 3.1.3.GA 3.3.0.Final  
Joda Time 2.5 2.8.2  
Apache Commons Dbcp2 2.0.1 2.1.1  
Apache Commons Pool2 2.2 2.4.2  
Apache Commons Collections 3.2.1 3.2.2  
MyBatis3 3.2.8 3.3.0  
MyBatis3 Spring 1.2.2 1.2.3  

[Procedure's required cases]

This procedure is mandatory.

[Step 1-1] In case of using Maven Multiple Projects

This update procedure is for the project created using 'mvn archetype <https://github.com/terasolunaorg/terasoluna-gfw-web-multi-blank>'__.

Modify "version" of pom file of parent project to 5.1.0.RELEASE. ("$YOUR_MULTIPLE_PROJECT_ROOT/pom.xml")

<!-- omitted -->
<parent>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-parent</artifactId>
    <version>5.1.0.RELEASE</version>                    <!-- ### Modified location ### -->
</parent>
<!-- omitted -->

[Step 1-2] In case of using Maven Single Project

This update procedure is for the project created using 'mvn archetype <https://github.com/terasolunaorg/terasoluna-gfw-web-blank>'__ or the project downloaded from 'release site <https://github.com/terasolunaorg/terasoluna-gfw-web-blank/releases/>'_.

Modify "version" of pom file of parent project to 5.1.0.RELEASE.
($YOUR_SINGLE_PROJECT/pom.xml)
<!-- omitted -->
<parent>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-parent</artifactId>
    <version>5.1.0.RELEASE</version>                    <!-- ### Modified location ### -->
</parent>
<!-- omitted -->

[Step 1-3] In case of using Eclipse WTP Project

This update procedure is for the Eclipse WTP project downloaded from 'release site <https://github.com/terasolunaorg/terasoluna-gfw-web-blank/releases/>'_.

Refer to 'Updating library while using Eclipse WTP Project <#eclipse-wtp-project%E4%BD%BF%E7%94%A8%E6%99%82%E3%81%AE%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E6%9B%B4%E6%96%B0>'_ for the update procedure.

[Step 2] Modification associated with separation of JSP/JSTL related libraries from terasoluna-gfw-web

From 5.1.0, JSP/JSTL related libraries moved from terasoluna-gfw-web to terasoluna-gfw-web-jsp.

[Procedure's required cases]

Modification is required when JSP/JSTL is used.

[Modification method]

Add terasoluna-gfw-web-jsp to dependencies in pom.xml of project which use JSP/JSTL, as below.

<!-- omitted -->
<dependencies>
    <dependency>                                          <!-- ### Add location ### -->
        <groupId>org.terasoluna.gfw</groupId>             <!-- ### Add location ### -->
        <artifactId>terasoluna-gfw-web-jsp</artifactId>   <!-- ### Add location ### -->
    </dependency>                                         <!-- ### Add location ### -->
    <!-- omitted -->
</dependencies>
<!-- omitted -->

[Step 3] Replace deprecated API of Spring Framework

AbstractExcelView is not recommended from 5.1.0 (Spring Framework 4.2). AbstractXlsView has been added instead.

[Procedure's required cases]

Modification is required when AbstractExcelView is used.

[Modification method]

Change so as to use AbstractXlsView instead of AbstractExcelView.

[Step 4] Delete interim measures associated with resolution of Hibernate Validator bug (HV-881, HV-949)

In 5.1.0 (Spring Framework 4.2), Hibernate Validator 5.2.x is used and a bug in the message definition detected in 5.1.x is corrected.

[Procedure's required cases]

As an interim measure for bug in the message definition in 5.1.x, modification is necessary when message definition is overwritten in ValidationMessages.properties.

[Modification method]

Delete interim measure defined in ValidationMessages.properties For message definition performing interim measures, refer Modifications done for Hibernate Validator 5.2 .

[Step 5] Modifications associated with constructor argument change of AuthenticationException class

From 5.1.0 (Spring Security 4.0.3), Constructor arguments of following classes are changed which are subclasses of AuthenticationException.

  • AccountStatusException
  • AccountExpiredException
  • BadCredentialsException
  • CredentialsExpiredException
  • DisabledException
  • LockedException
  • UsernameNotFoundException

[Procedure's required cases]

In the above class, modification is required when constructor which use UserDetails is used.

[Modification method]

As shown below, UserDetails is deleted from constructor argument.

new UsernameNotFoundException ("Message");

[Step 6] Modifications associated with changes in authorize element

Following attributes of taglib authorize tag are deleted, from 5.1.0 (Spring Security 4.0.3).

  • ifAllGranted
  • ifAnyGranted
  • ifNotGranted

[Procedure's required cases]

Modification is required when authorize tag is used and following attributes are used.

[Modification method]

In the corresponding JSP, following description changed respectively.

ifAllGranted

hasRole() and and are used.

[Before modification]

<sec:authorize ifAllGranted="ROLE_ADMIN,ROLE_USER">

[After modification]

<sec:authorize access="hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')">

ifAnyGranted

hasAnyRole() is used.

[Before modification]

<sec:authorize ifAnyGranted="ROLE_ADMIN,ROLE_USER">

[After modification]

<sec:authorize access="hasAnyRole('ROLE_ADMIN','ROLE_USER')">

ifNotGranted

!hasAnyRole() is used.

[Before modification]

<sec:authorize ifNotGranted="ROLE_ADMIN,ROLE_USER">

[After modification]

<sec:authorize access="!hasAnyRole('ROLE_ADMIN','ROLE_USER')">

[Step 7] Delete ConcurrentSessionControlStrategy

ConcurrentSessionControlStrategy - deprecated API is deleted, from 5.1.0 (Spring Security 4.0.3).

[Procedure's required cases]

Modification is required when ConcurrentSessionControlStrategy is used.

[Modification method]

Refer below.

http://docs.spring.io/spring-security/site/docs/4.0.3.RELEASE/reference/htmlsingle/#concurrent-sessions

[Step 8] Change default URL and parameter name

Following URL and parameter names changed, from 5.1.0 (Spring Security 4.X).

  • j_username
  • j_password
  • j_spring_security_check
  • j_spring_cas_security_check
  • j_spring_cas_security_proxyreceptor
  • j_spring_openid_security_login
  • j_spring_security_switch_user
  • j_spring_security_exit_user
  • login_error
  • _spring_security_remember_me

[Procedure's required cases]

Modification is required when above URL and parameter names are used.

[Modification method]

Change all the places where above URL and parameter name are used.

  • j_username -> username
  • j_password -> password
  • j_spring_security_check -> login
  • j_spring_cas_security_check -> login/cas
  • j_spring_cas_security_proxyreceptor -> login/cas/proxyreceptor
  • j_spring_openid_security_login -> login/openid
  • j_spring_security_switch_user -> login/impersonate
  • j_spring_security_exit_user -> logout/impersonate
  • login_error -> error
  • _spring_security_remember_me -> remember-me

[Step 9] Modification related to omission of ROLE name prefix (ROLE_)

From 5.1.0 (Spring Security 4.X), when Spring Security function is used, it is possible to omit prefix (ROLE_) while specifying ROLE name.

[Procedure's required cases]

Modification is required when ROLE name is used in the Spring Security function. Modification is not required since prefix of ROLE name which is used in the user rights data (entity) handled in the property is necessary.

[Modification method]

  • In case of spring-security.xml

    Delete prefix from ROLE name (ROLE_) from any of the files given below.

    • $YOUR_MULTIPLE_PROJECT_ROOT/xxx-web/src/main/resources/META-INF/spring/spring-security.xml
    • $YOUR_SINGLE_PROJECT/src/main/resources/META-INF/spring/spring-security.xml
    • $YOUR_ECLIPSE_WTP_PROJECT/src/main/resources/META-INF/spring/spring-security.xml

    [Before modification]

    <sec:http auto-config="true" use-expressions="true">
        <sec:intercept-url pattern="/admin/*" access="hasRole('ROLE_ADMIN')"/>  <!-- ### Location to modify### -->
        <!-- omitted -->
    </sec:http>

    [After modification]

    <sec:http auto-config="true" use-expressions="true">
        <sec:intercept-url pattern="/admin/*" access="hasRole('ADMIN')"/>       <!-- ### Modified location ### -->
        <!-- omitted -->
    </sec:http>
  • In case of java

    Delete prefix from ROLE name (ROLE_) as shown below.

    [Before modification]

    @PreAuthorize("hasRole('ROLE_ADMIN')")  // ### Location to modify ###
    String preAuthorize();

    [After modification]

    @PreAuthorize("hasRole('ADMIN')")       // ### Modified location ###
    String preAuthorize();

[Step 10] Modification associated with package change of Spring Security

From 5.1.0 (Spring Security 4.X), packages for AuthenticationPrincipal and AuthenticationPrincipalArgumentResolver are changed.

[Procedure's required cases]

Modification is required when AuthenticationPrincipal or AuthenticationPrincipalArgumentResolver is used.

[Modification method]

Modify package name as shown below.

[Before modification]

import org.springframework.security.web.bind.support.AuthenticationPrincipalArgumentResolver;
import org.springframework.security.web.bind.annotation.AuthenticationPrincipal;

[After modification]

import org.springframework.security.web.method.annotation.AuthenticationPrincipalArgumentResolver;
import org.springframework.security.core.annotation.AuthenticationPrincipal;

[Step 11] Modification associated with change in default value of use-expressions

From 5.1.0 (Spring Security 4.X), default value of use-expressions changed from false to true.

[Procedure's required cases]

Modification is required when Spring Security is used.

[Modification method]

Change the setting to enable / disable Spring EL function in Spring Security as shown below.

[While disabling Spring EL function in Spring Security]

Explicitly set use-expressions="false"

<sec:http  use-expressions="false">               <!-- ### Location to modify ### -->
  <!-- omitted -->
</sec:http>

[While enabling Spring EL function in Spring Security]

use-expressions="true" settings can be omitted

<sec:http>                                        <!-- ### Modified location ### -->
  <!-- omitted -->
</sec:http>

[Step 12] Modification associated with change in default value of disable-url-rewriting

From 5.1.0 (Spring Security 4.X), default value of disable-url-rewriting changed from false to true.

[Procedure's required cases]

Modification is required when Spring Security is used.

[Modification method]

Change the settings to switch between enable / disable the disabling function of URL rewriting in Spring Security as shown below.

[While disabling URL rewriting disabling function (allow URL rewriting) in Spring Security]

Explicitly set disable-url-rewriting="false"

<sec:http  disable-url-rewriting="false">         <!-- ### Location to modify ### -->
  <!-- omitted -->
</sec:http>

[While enabling URL rewriting disabling function (deny URL rewriting) in Spring Security]

disable-url-rewriting="true" settings can be omitted

<sec:http>                                        <!-- ### Modified location ### -->
  <!-- omitted -->
</sec:http>

[Step 13] Delete access-denied-page attribute

From 5.1.0 (Spring Security 4.X), access-denied-page attribute is deleted.

[Procedure's required cases]

Modification is required when access-denied-page attribute is used.

[Modification method]

Change HTTP elements of Spring Security as shown below.

[Before modification]

<sec:http access-denied-page="/accessDeneidPage">                     <!-- ### Location to modify ### -->
    <!-- omitted -->
</sec:http>

[After modification]

<sec:http>                                                            <!-- ### Modified location ### -->
    <!-- omitted -->
    <sec:access-denied-handler error-page="/accessDeneidPage" />      <!-- ### Modified location ### -->
</sec:http>

[Step 14] Delete path-type attribute

From 5.1.0 (Spring Security 4.X), path-type attribute is deleted.

[Procedure's required cases]

Modification is required when path-type attribute is used in the following elements.

  • http
  • filter-chain-map
  • filter-security-metadata-source

[Modification method]

Use request-matcher attribute instead of path-type attribute as shown below.

[Before modification]

<sec:http path-type="regex">          <!-- ### Location to modify ### -->
    <!-- omitted -->
</sec:http>

[After modification]

<sec:http request-matcher="regex">    <!-- ### Modified location ### -->
    <!-- omitted -->
</sec:http>

[Step 15] Modification associated with change in default setting of csrf

From 5.1.0 (Spring Security 4.X), CSRF function is enabled by default in Spring Security.

[Procedure's required cases]

When csrf element is used in Spring Security, modification is required when CSRF function is disabled without using csrf element.

[Modification method]

  • When CSRF function is disabled in Spring Security
<sec:http>
  <sec:csrf disabled="true"/>     <!-- ### Modified location ### -->
  <!-- omitted -->
</sec:http>
  • When CSRF function is enabled in Spring Security

csrf element setting is optional

<sec:http>
  <!-- omitted -->
</sec:http>

[Step 16] Modification associated with change in the default setting of headers

From 5.1.0 (Spring Security 4.X), a function which sets a secure HTTP response header is enabled by default in Spring Security. Following HTTP response headers are set by default.

  • Cache-Control
  • X-Content-Type-Options
  • Strict-Transport-Security
  • X-Frame-Options
  • X-XSS-Protection

[Procedure's required cases]

When headers element is used in Spring Security, or when a function which sets a secure HTTP response header is disabled without using headers element, modification is required.

[Modification method]

[When a function to set secure HTTP response header is disabled]

<sec:http>
  <sec:headers disabled="true"/>              <!-- ### Modified location ### -->
  <!-- omitted -->
</sec:http>

[When a function to set a secure HTTP response header is enabled]

headers element settings are optional.

<sec:http>
  <!-- omitted -->
</sec:http>

[When HTTP response header is set individually]

Perform individual settings after overriding default settings by defaults-disabled attribute of headers element.

<sec:http>
  <sec:headers defaults-disabled="true">      <!-- ### Modified location ### -->
    <sec:cache-control />                     <!-- ### Modified location ### -->
    <sec:content-type-options />              <!-- ### Modified location ### -->
    <sec:hsts />                              <!-- ### Modified location ### -->
  </sec:headers>
  <!-- omitted -->
</sec:http>

[Step 17] Setting defaultFetchSize

defaultFetchSize can be used from 5.1.0 (Mybatis 3.3.0). By setting defaultFetchSize, a default fetchSize can be set for all the queries.

[Procedure's required cases]

Although application of this procedure is optional, when MyBatis is used, modification below is recommended.

[Modification method]

For modification method, refer fetchSize setting of guideline. ( English or Japanese )

[Step 18] Changes in setting due to update to MyBatis3.3.0

From 5.1.0, default setting of library used for achieving "Lazy Load" is changed from CGLIB to JAVASSIST due to update to MyBaits3.3.0.

[Procedure's required cases]

Application of this procedure is optional. Implementation of procedure is not necessary in the 2 cases given below.

  • Not-applicable case 1 : When "Lazy Load" is not used
  • Not-applicable case 2 : "Lazy Load" is used, however, when a library to be explicitly used is specified by "dependency" of pom.xml setting file and "proxyFactory" of mybatis-config.xml setting file.

The case when the procedure becomes necessary is the case when "Lazy Load" is achieved by using a default library (when a library setting is not implemented explicitly). Implement any of the two procedures given below depending on the requirement in 5.1.0.

  • Step 18-1: When default library of MyBatis is used (JAVASSIST is used)
  • Step 18-2: When you do not want to change the library before migration (CGLIB is used)

[Step 18-1] When default library of MyBatis is used (JAVASSIST is used)

This procedure uses JAVASSIST which is a default library in MyBatis 3.3.0 as a library to be used for achieving "Lazy Load". Setting of CGLIB which is used before migration is deleted.

[Modification method]

Modify settings for any of the following files in MyBatis project.

  • $YOUR_MULTIPLE_PROJECT_ROOT/pom.xml
  • $YOUR_SINGLE_PROJECT/pom.xml
  • $YOUR_ECLIPSE_WTP_PROJECT/pom.xml

[Before modification]

<!-- omitted -->
        <dependency>                       <!-- ### Delete location ### -->
            <groupId>cglib</groupId>       <!-- ### Delete location ### -->
            <artifactId>cglib</artifactId> <!-- ### Delete location ### -->
            <version>3.1</version>         <!-- ### Delete location ### -->
            <scope>runtime</scope>         <!-- ### Delete location ### -->
        </dependency>                      <!-- ### Delete location ### -->
<!-- omitted -->

[After modification]

<!-- omitted -->
     <!-- none -->
<!-- omitted -->

[Step 18-2] When library is not changed before migration (CGLIB is used)

This procedure uses CGLIB as a library to be used for achieving "Lazy Load". Since JAVASSIST is used as a default in MyBatis3.3.0, CGLIB setting is added.

[Modification method]

Modify settings in any of the following files in MyBatis project.

  • $YOUR_MULTIPLE_PROJECT_ROOT/xxx-domain/src/main/resources/META-INF/mybatis/mybatis-config.xml
  • $YOUR_SINGLE_PROJECT/src/main/resources/META-INF/mybatis/mybatis-config.xml
  • $YOUR_ECLIPSE_WTP_PROJECT/src/main/resources/META-INF/mybatis/mybatis-config.xml

[Before modification]

<!-- omitted -->
<!-- See http://mybatis.github.io/mybatis-3/configuration.html#settings -->
<settings>
    <setting name="mapUnderscoreToCamelCase" value="true" />
    <setting name="lazyLoadingEnabled" value="true" />
    <setting name="aggressiveLazyLoading" value="false" />
  <!-- ### Delete location Start### -->
  <!--
      <setting name="defaultExecutorType" value="REUSE" />
      <setting name="jdbcTypeForNull" value="NULL" />
      <setting name="proxyFactory" value="JAVASSIST" />
      <setting name="localCacheScope" value="STATEMENT" />
  -->
  <!-- ### Delete location End ### -->
</settings>
<!-- omitted -->

[After modification]

<!-- omitted -->
<!-- See http://mybatis.github.io/mybatis-3/configuration.html#settings -->
<settings>
    <setting name="mapUnderscoreToCamelCase" value="true" />
    <setting name="lazyLoadingEnabled" value="true" />
    <setting name="aggressiveLazyLoading" value="false" />
<!-- ### Add location Start ### -->
<!-- Default value for proxyFactory has changed to JAVASSIST since mybatis 3.3.0 .
 To use CGLIB as a proxyFactory, remove this comment and add dependency for CGLIB in pom.xml -->
    <setting name="proxyFactory" value="CGLIB" />
<!-- ### Add location End ### -->
</settings>
<!-- omitted -->

Modify setting in any of the following files in MyBatis project. Check version of cglib to be added for each project.

  • $YOUR_MULTIPLE_PROJECT_ROOT/pom.xml
  • $YOUR_SINGLE_PROJECT/pom.xml
  • $YOUR_ECLIPSE_WTP_PROJECT/pom.xml

[Before modification]

<!-- omitted -->
     <!-- none -->
<!-- omitted -->

[After modification]

<!-- omitted -->
    <!-- ### Add location Start ### -->
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.1</version>
        <scope>runtime</scope>
    </dependency>
   <!-- ### Add location End ### -->
<!-- omitted -->

[Step 19] Generic handling of ResultHandler

From 5.1.0 (MyBatis 3.3.0), org.apache.ibatis.session.ResultHandler became a class which is generically handled.

[Procedure's required cases]

Although application of this procedure is optional, when MyBatis is used, modification given below is recommended.

[Modification method]

Perform generic handling for ResultHandler and ResultContext as given below.

[Before modification]

public class BookResultHandler implements ResultHandler, AutoCloseable {          // ### Location to modify ###

    // omitted

    @Override
    public void handleResult(ResultContext context) {                             // ### Location to modify ###
        Book book = (Book) context.getResultObject();                             // ### Location to modify ###

        // omitted
    }
}

[After modification]

public class BookResultHandler implements ResultHandler<Book>, AutoCloseable {    // ### Modified location ###

    // omitted

    @Override
    public void handleResult(ResultContext<? extends Book> context) {             // ### Modified location ###
        Book book = context.getResultObject();                                    // ### Modified location ###

        // omitted
    }
}

[Step 20] Modification associated with deletion of ExistInCodeListValidatorForString

From 5.1.0, ExistInCodeListValidatorForString is deleted, and ExistInCodeListValidatorForCharSequence is added instead.

[Procedure's required cases]

Modification is required when ExistInCodeListValidatorForString is used.

[Modification method]

Replace ExistInCodeListValidatorForString with ExistInCodeListValidatorForCharSequence as shown below.

[Before modification]

import org.terasoluna.gfw.common.codelist.validator.ExistInCodeListValidatorForString;

[After modification]

import org.terasoluna.gfw.common.codelist.validator.ExistInCodeListValidatorForCharSequence;

[Step 21] Modification associated with deprecation of RedirectAuthenticationHandler

From 5.1.0, RedirectAuthenticationHandler is deprecated.

[Procedure's required cases]

Modification is required when RedirectAuthenticationHandler is used.

[Modification method]

Replace RedirectAuthenticationHandler with SavedRequestAwareAuthenticationSuccessHandler as shown below.

[Before modification]

// omitted
import org.terasoluna.gfw.security.web.redirect.RedirectAuthenticationHandler;    // ### Location to modify ###

public class MyAuthenticationSuccessHandler extends
                                           RedirectAuthenticationHandler {        // ### Location to modify ###
    // omitted
}

[After modification]

// omitted
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;     // ### Modified location ###

public class MyAuthenticationSuccessHandler extends
                                           SavedRequestAwareAuthenticationSuccessHandler {                // ### Modified location ###
    // omitted
}

[Step 22] Update Java version to 1.8

From 5.1.0, version of Java which use Blank project is changed to 1.8.

[Procedure's required cases]

Application of this procedure is optional. Modify when required as below.

[Modification method]

Modify Java version to 1.8 as shown below, in any of the following files.

  • $YOUR_MULTIPLE_PROJECT_ROOT/pom.xml
  • $YOUR_SINGLE_PROJECT/pom.xml

[Before modification]

<!-- omitted -->
<properties>
    <!-- omitted -->
    <java-version>1.7</java-version>      <!-- ### Location to modify ### -->
</properties>
<!-- omitted -->

[After modification]

<!-- omitted -->
<properties>
    <!-- omitted -->
    <java-version>1.8</java-version>      <!-- ### Modified location ### -->
</properties>
<!-- omitted -->

[Step 23] Setting Servlet 3.0 which disables URL rewriting

From 5.1.0, setting of Servlet 3.0 which disables URL rewriting is included. For detailed information, refer GitHub multi#179 .

[Procedure's required cases]

Although application of this procedure is optional, application is recommended from security point of view.

In the case below, implementation of this procedure is not required.

  • When it is difficult to use Cookie as a method to handle session ID between client and server and URL rewriting is required.

[Modification method]

Add settings for any of the following files.

  • $YOUR_MULTIPLE_PROJECT_ROOT/xxx-web/src/main/webapp/WEB-INF/web.xml
  • $YOUR_SINGLE_PROJECT/src/main/webapp/WEB-INF/web.xml
  • $YOUR_ECLIPSE_WTP_PROJECT/src/main/webapp/WEB-INF/web.xml

[Before modification]

<!-- omitted -->
<session-config>
    <!-- 30min -->
    <session-timeout>30</session-timeout>
</session-config>
<!-- omitted -->

[After modification]

<!-- omitted -->
<session-config>
    <!-- 30min -->
    <session-timeout>30</session-timeout>
    <cookie-config>                       <!-- ### Add location ### -->
        <http-only>true</http-only>       <!-- ### Add location ### -->
        <!-- <secure>true</secure> -->    <!-- ### Add location ### -->
    </cookie-config>                      <!-- ### Add location ### -->
    <tracking-mode>COOKIE</tracking-mode> <!-- ### Add location ### -->
</session-config>
<!-- omitted -->

[Step 24] Organising source for various XML files

In 5.1.0, indent of various XML files is adjusted and namespaces which are not used, are deleted for source organization.

[Procedure's required cases]

Application of this procedure is optional. Modify when required as given below.

[Modification method]

Refer following for modification methods.

[Step 25] Add message for new annotation

In 5.1.0, following new annotations are added.

  • @ByteMin
  • @ByteMax
  • @Compare
  • @ConsistOf

[Procedure's required cases]

Application of this procedure is optional. Modify when required as given below.

[Modification method]

Add settings in any of the following files.

  • $YOUR_MULTIPLE_PROJECT_ROOT/xxx-web/src/main/resources/ValidationMessages.properties
  • $YOUR_SINGLE_PROJECT/src/main/resources/ValidationMessages.properties
  • $YOUR_ECLIPSE_WTP_PROJECT/src/main/resources/ValidationMessages.properties

[Add message]

org.terasoluna.gfw.common.codelist.ExistInCodeList.message = Does not exist in {codeListId}
org.terasoluna.gfw.common.codepoints.ConsistOf.message = not consist of specified code points
org.terasoluna.gfw.common.validator.constraints.ByteMin.message = must be greater than or equal to {value} bytes
org.terasoluna.gfw.common.validator.constraints.ByteMax.message = must be less than or equal to {value} bytes
org.terasoluna.gfw.common.validator.constraints.Compare.message = invalid combination of {left} and {right}

[Step 26] Delete auto-config attribute setting

auto-config attribute of http element of Spring Security recommends default (false) setting in the guideline. Therefore, from Blank project of 5.1.0, setting which sets auto-config attribute to true is deleted.

[Procedure's required cases]

Although application of this procedure is optional, when auto-config attribute is set to true, modification given below is recommended.

[Modification method]

As shown below, auto-config attribute is deleted, and form-login element, http-basic element and logout element are added when required instead. For details of each element, refer auto-config attribute of guideline. ( English or Japanese )

[Before modification]

<!-- omitted -->
<sec:http auto-config="true" >    <!-- ### Location to modify ### -->
    <!-- omitted -->
</sec:http>
<!-- omitted -->

[After modification]

<!-- omitted -->
<sec:http>                        <!-- ### Modified location ### -->
    <sec:form-login/>             <!-- ### Modified location ### -->
    <sec:logout/>                 <!-- ### Modified location ### -->
    <!-- omitted -->
</sec:http>
<!-- omitted -->

[Step 27] Change property name of build-helper-maven-plugin version

In Blank project of 5.1.0, wrongly set property name which defines build-helper-maven-plugin version corrected from "-maven-plugi" to " -maven-plugin ".

[Procedure's required cases]

Although application of the procedure is optional, modify as much as possible for clerical corrections.

[Modification method]

Modify property name as shown below, for any of the following files.

  • $YOUR_MULTIPLE_PROJECT_ROOT/pom.xml
  • $YOUR_SINGLE_PROJECT/pom.xml

[Before modification]

<!-- omitted -->
<properties>
    <!-- omitted -->
    <org.codehaus.mojo.build-helper-maven-plugi.version>1.9.1</org.codehaus.mojo.build-helper-maven-plugi.version>    <!-- ### Location to modify ### -->
    <!-- omitted -->
</properties>
<!-- omitted -->
<build>
    <pluginManagement>
        <plugins>
            <!-- omitted -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>${org.codehaus.mojo.build-helper-maven-plugi.version}</version>      <!-- ### Location to modify ### -->
                <!-- omitted -->
            </plugin>
            <!-- omitted -->
        </plugins>
    </pluginManagement>
</build>
<!-- omitted -->

[After modification]

<!-- omitted -->
<properties>
    <!-- omitted -->
    <org.codehaus.mojo.build-helper-maven-plugin.version>1.9.1</org.codehaus.mojo.build-helper-maven-plugin.version>  <!-- ### Modified location ### -->
    <!-- omitted -->
</properties>
<!-- omitted -->
<build>
    <pluginManagement>
        <plugins>
            <!-- omitted -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>${org.codehaus.mojo.build-helper-maven-plugin.version}</version>     <!-- ### Modified location ### -->
                <!-- omitted -->
            </plugin>
            <!-- omitted -->
        </plugins>
    </pluginManagement>
</build>
<!-- omitted -->

[Step 28] Add maven-failsafe-plugin

maven-failsafe-plugin is added to Blank project of 5.1.0 to execute goal integration-test of Maven.

[Procedure's required cases]

Application of this procedure is optional. Modify as given below, as and when required.

[Modification method]

Add and set maven-failsafe-plugin and maven-surefire-plugin as given below, for any of the following files.

  • $YOUR_MULTIPLE_PROJECT_ROOT/xxx-selenium/pom.xml
  • $YOUR_SINGLE_PROJECT/pom.xml
<!-- omitted -->
<build>
     <plugins>
         <plugin>                                                 <!-- ### Add location ### -->
             <groupId>org.apache.maven.plugins</groupId>          <!-- ### Add location ### -->
             <artifactId>maven-failsafe-plugin</artifactId>       <!-- ### Add location ### -->
             <executions>                                         <!-- ### Add location ### -->
                 <execution>                                      <!-- ### Add location ### -->
                     <goals>                                      <!-- ### Add location ### -->
                         <goal>integration-test</goal>            <!-- ### Add location ### -->
                     </goals>                                     <!-- ### Add location ### -->
                 </execution>                                     <!-- ### Add location ### -->
             </executions>                                        <!-- ### Add location ### -->
         </plugin>                                                <!-- ### Add location ### -->
         <plugin>                                                 <!-- ### Add location ### -->
             <groupId>org.apache.maven.plugins</groupId>          <!-- ### Add location ### -->
             <artifactId>maven-surefire-plugin</artifactId>       <!-- ### Add location ### -->
             <configuration>                                      <!-- ### Add location ### -->
                 <excludes>                                       <!-- ### Add location ### -->
                     <exclude>**/*IT.java</exclude>               <!-- ### Add location ### -->
                 </excludes>                                      <!-- ### Add location ### -->
             </configuration>                                     <!-- ### Add location ### -->
         </plugin>                                                <!-- ### Add location ### -->
     </plugins>
</build>
<!-- omitted -->

[Step 29] Delete onError setting of sql-maven-plugin

onError setting of sql-maven-plugin of Maven is deleted from Blank project, from 5.1.0 to not to allow completion of build by ignoring SQL error at the time of Maven build.

[Procedure's required cases]

Although application of this procedure is optional, modification given next is recommended.

[Modification method]

Delete onError setting of sql-maven-plugin as shown below, in the following file.

  • $YOUR_MULTIPLE_PROJECT_ROOT/xxx-initdb/pom.xml

[Before modification]

<!-- omitted -->
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <!-- omitted -->
            <configuration>
              <!-- omitted -->
              <onError>continue</onError>             <!-- ### Location to delete ### -->
              <!-- omitted -->
            </configuration>
        </plugin>
    </plugins>
</build>
<!-- omitted -->

[After modification]

<!-- omitted -->
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <!-- omitted -->
            <configuration>
              <!-- omitted -->
            </configuration>
        </plugin>
    </plugins>
</build>
<!-- omitted -->

Appendix for 5.1.0

Updating libraries while using Eclipse WTP Project

This update procedure is for the Eclipse WTP project downloaded from 'release site <https://github.com/terasolunaorg/terasoluna-gfw-web-blank/releases/>'_.

Note

Legend

[Table header]
Non : Blank project that is independent of O/R Mapper
MB3 : Blank project for MyBatis3
JPA : Blank project for JPA
[Remarks column]
* : Operation target

[Step 1]

Download 'Eclipse WTP Project of 5.1.0.RELEASE <https://github.com/terasolunaorg/terasoluna-gfw-web-blank/releases/tag/5.1.0.RELEASE>'_.

[Step 2]

Terminate Eclipse if it is running.

[Step 3]

Update (delete and add) jar file of "$YOUR_ECLIPSE_WTP_PROJECT/src/main/webapp/WEB-INF/lib".

.. tabularcolumns:: |p{0.25\linewidth}|p{0.30\linewidth}|p{0.30\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|
Library name Deleted file Added file Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.0.1.RELEASE.jar terasoluna-gfw-common-5.1.0.RELEASE.jar * * *
  terasoluna-gfw-jodatime-5.0.1.RELEASE.jar terasoluna-gfw-jodatime-5.1.0.RELEASE.jar * * *
  terasoluna-gfw-jpa-5.0.1.RELEASE.jar terasoluna-gfw-jpa-5.1.0.RELEASE.jar     *
  terasoluna-gfw-mybatis3-5.0.1.RELEASE.jar terasoluna-gfw-mybatis3-5.1.0.RELEASE.jar   *  
  terasoluna-gfw-security-core-5.0.1.RELEASE.jar terasoluna-gfw-security-core-5.1.0.RELEASE.jar * * *
  terasoluna-gfw-security-web-5.0.1.RELEASE.jar terasoluna-gfw-security-web-5.1.0.RELEASE.jar * * *
  terasoluna-gfw-web-5.0.1.RELEASE.jar terasoluna-gfw-web-5.1.0.RELEASE.jar * * *
    terasoluna-gfw-web-jsp-5.1.0.RELEASE.jar * * *
Spring Framework spring-aop-4.1.7.RELEASE.jar spring-aop-4.2.4.RELEASE.jar * * *
  spring-aspects-4.1.7.RELEASE.jar spring-aspects-4.2.4.RELEASE.jar * * *
  spring-beans-4.1.7.RELEASE.jar spring-beans-4.2.4.RELEASE.jar * * *
  spring-context-4.1.7.RELEASE.jar spring-context-4.2.4.RELEASE.jar * * *
  spring-context-support-4.1.7.RELEASE.jar spring-context-support-4.2.4.RELEASE.jar * * *
  spring-core-4.1.7.RELEASE.jar spring-core-4.2.4.RELEASE.jar * * *
  spring-expression-4.1.7.RELEASE.jar spring-expression-4.2.4.RELEASE.jar * * *
  spring-jdbc-4.1.7.RELEASE.jar spring-jdbc-4.2.4.RELEASE.jar * * *
  spring-orm-4.1.7.RELEASE.jar spring-orm-4.2.4.RELEASE.jar * * *
  spring-tx-4.1.7.RELEASE.jar spring-tx-4.2.4.RELEASE.jar * * *
  spring-web-4.1.7.RELEASE.jar spring-web-4.2.4.RELEASE.jar * * *
  spring-webmvc-4.1.7.RELEASE.jar spring-webmvc-4.2.4.RELEASE.jar * * *
Spring Data Commons spring-data-commons-1.9.3.RELEASE.jar spring-data-commons-1.11.2.RELEASE.jar * * *
Spring Security spring-security-acl-3.2.7.RELEASE.jar spring-security-acl-4.0.3.RELEASE.jar * * *
  spring-security-config-3.2.7.RELEASE.jar spring-security-config-4.0.3.RELEASE.jar * * *
  spring-security-core-3.2.7.RELEASE.jar spring-security-core-4.0.3.RELEASE.jar * * *
  spring-security-taglibs-3.2.7.RELEASE.jar spring-security-taglibs-4.0.3.RELEASE.jar * * *
  spring-security-web-3.2.7.RELEASE.jar spring-security-web-4.0.3.RELEASE.jar * * *
Spring Data JPA spring-data-jpa-1.7.3.RELEASE.jar spring-data-jpa-1.9.2.RELEASE.jar     *
Hibernate ORM hibernate-core-4.3.10.Final.jar hibernate-core-4.3.11.Final.jar     *
  hibernate-entitymanager-4.3.10.Final.jar hibernate-entitymanager-4.3.11.Final.jar     *
Hibernate Validator hibernate-validator-5.1.3.Final.jar hibernate-validator-5.2.2.Final.jar * * *
ClassMate classmate-1.0.0.jar classmate-1.1.0.jar * * *
AspectJ aspectjrt-1.8.6.jar aspectjrt-1.8.7.jar * * *
  aspectjweaver-1.8.6.jar aspectjweaver-1.8.7.jar * * *
SLF4J jcl-over-slf4j-1.7.12.jar jcl-over-slf4j-1.7.13.jar * * *
  slf4j-api-1.7.12.jar slf4j-api-1.7.13.jar * * *
Jackson jackson-annotations-2.4.6.jar jackson-annotations-2.6.4.jar * * *
  jackson-core-2.4.6.jar jackson-core-2.6.4.jar * * *
  jackson-databind-2.4.6.jar jackson-databind-2.6.4.jar * * *
  jackson-datatype-joda-2.4.6.jar jackson-datatype-joda-2.6.4.jar * * *
Jboss Logging jboss-logging-3.1.3.GA.jar jboss-logging-3.3.0.Final.jar * * *
Joda Time joda-time-2.5.jar joda-time-2.8.2.jar * * *
Apache Commons Collections commons-collections-3.2.1.jar commons-collections-3.2.2.jar * * *
Apache Commons Dbcp2 commons-dbcp2-2.0.1.jar commons-dbcp2-2.1.1.jar * * *
Apache Commons Pool2 commons-pool2-2.2.jar commons-pool2-2.4.2.jar * * *
MyBatis3 mybatis-3.2.8.jar mybatis-3.3.0.jar   *  
MyBatis3 Spring mybatis-spring-1.2.2.jar mybatis-spring-1.2.3.jar   *  

[Step 4]

Update (delete and add) jar file of "$YOUR_ECLIPSE_WTP_PROJECT/testlib".

.. tabularcolumns:: |p{0.25\linewidth}|p{0.30\linewidth}|p{0.30\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|
Library name Deleted file Added file Non MB3 JPA
H2 Database Engine h2-1.4.187.jar h2-1.4.190.jar   * *
JUnit junit-4.11 junit-4.12 * * *
Mockito mockito-core-1.10.8.jar mockito-core-1.10.19.jar * * *
Spring TestContext Framework spring-test-4.1.7.RELEASE.jar spring-test-4.2.4.RELEASE.jar * * *
Tomcat Embed El tomcat-embed-el-7.0.59.jar tomcat-embed-el-8.0.30.jar * * *

[Step 5]

Update (delete and add) jar file for storing the source of "$YOUR_ECLIPSE_WTP_PROJECT/libsrc".

.. tabularcolumns:: |p{0.25\linewidth}|p{0.30\linewidth}|p{0.30\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|
Library name Deleted file Added file Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.0.1.RELEASE-sources.jar terasoluna-gfw-common-5.1.0.RELEASE-sources.jar * * *
  terasoluna-gfw-jodatime-5.0.1.RELEASE-sources.jar terasoluna-gfw-jodatime-5.1.0.RELEASE-sources.jar * * *
  terasoluna-gfw-jpa-5.0.1.RELEASE-sources.jar terasoluna-gfw-jpa-5.1.0.RELEASE-sources.jar     *
  terasoluna-gfw-mybatis3-5.0.1.RELEASE-sources.jar terasoluna-gfw-mybatis3-5.1.0.RELEASE-sources.jar   *  
  terasoluna-gfw-security-core-5.0.1.RELEASE-sources.jar terasoluna-gfw-security-core-5.1.0.RELEASE-sources.jar * * *
  terasoluna-gfw-security-web-5.0.1.RELEASE-sources.jar terasoluna-gfw-security-web-5.1.0.RELEASE-sources.jar * * *
  terasoluna-gfw-web-5.0.1.RELEASE-sources.jar terasoluna-gfw-web-5.1.0.RELEASE-sources.jar * * *
    terasoluna-gfw-web-jsp-5.1.0.RELEASE-sources.jar * * *
Spring Framework spring-aop-4.1.7.RELEASE-sources.jar spring-aop-4.2.4.RELEASE-sources.jar * * *
  spring-aspects-4.1.7.RELEASE-sources.jar spring-aspects-4.2.4.RELEASE-sources.jar * * *
  spring-beans-4.1.7.RELEASE-sources.jar spring-beans-4.2.4.RELEASE-sources.jar * * *
  spring-context-4.1.7.RELEASE-sources.jar spring-context-4.2.4.RELEASE-sources.jar * * *
  spring-context-support-4.1.7.RELEASE-sources.jar spring-context-support-4.2.4.RELEASE-sources.jar * * *
  spring-core-4.1.7.RELEASE-sources.jar spring-core-4.2.4.RELEASE-sources.jar * * *
  spring-expression-4.1.7.RELEASE-sources.jar spring-expression-4.2.4.RELEASE-sources.jar * * *
  spring-jdbc-4.1.7.RELEASE-sources.jar spring-jdbc-4.2.4.RELEASE-sources.jar * * *
  spring-orm-4.1.7.RELEASE-sources.jar spring-orm-4.2.4.RELEASE-sources.jar * * *
  spring-tx-4.1.7.RELEASE-sources.jar spring-tx-4.2.4.RELEASE-sources.jar * * *
  spring-web-4.1.7.RELEASE-sources.jar spring-web-4.2.4.RELEASE-sources.jar * * *
  spring-webmvc-4.1.7.RELEASE-sources.jar spring-webmvc-4.2.4.RELEASE-sources.jar * * *
Spring Data Commons spring-data-commons-1.9.3.RELEASE-sources.jar spring-data-commons-1.11.2.RELEASE-sources.jar * * *
Spring Security spring-security-acl-3.2.7.RELEASE-sources.jar spring-security-acl-4.0.3.RELEASE-sources.jar * * *
  spring-security-config-3.2.7.RELEASE-sources.jar spring-security-config-4.0.3.RELEASE-sources.jar * * *
  spring-security-core-3.2.7.RELEASE-sources.jar spring-security-core-4.0.3.RELEASE-sources.jar * * *
  spring-security-taglibs-3.2.7.RELEASE-sources.jar spring-security-taglibs-4.0.3.RELEASE-sources.jar * * *
  spring-security-web-3.2.7.RELEASE-sources.jar spring-security-web-4.0.3.RELEASE-sources.jar * * *
Spring Data JPA spring-data-jpa-1.7.3.RELEASE-sources.jar spring-data-jpa-1.9.2.RELEASE-sources.jar     *
Hibernate ORM hibernate-core-4.3.10.Final-sources.jar hibernate-core-4.3.11.Final-sources.jar     *
  hibernate-entitymanager-4.3.10.Final-sources.jar hibernate-entitymanager-4.3.11.Final-sources.jar     *
Hibernate Validator hibernate-validator-5.1.3.Final-sources.jar hibernate-validator-5.2.2.Final-sources.jar * * *
ClassMate classmate-1.0.0-sources.jar classmate-1.1.0-sources.jar * * *
AspectJ aspectjrt-1.8.6-sources.jar aspectjrt-1.8.7-sources.jar * * *
  aspectjweaver-1.8.6-sources.jar aspectjweaver-1.8.7-sources.jar * * *
SLF4J jcl-over-slf4j-1.7.12-sources.jar jcl-over-slf4j-1.7.13-sources.jar * * *
  slf4j-api-1.7.12-sources.jar slf4j-api-1.7.13-sources.jar * * *
Jackson jackson-annotations-2.4.6-sources.jar jackson-annotations-2.6.4-sources.jar * * *
  jackson-core-2.4.6-sources.jar jackson-core-2.6.4-sources.jar * * *
  jackson-databind-2.4.6-sources.jar jackson-databind-2.6.4-sources.jar * * *
  jackson-datatype-joda-2.4.6-sources.jar jackson-datatype-joda-2.6.4-sources.jar * * *
Jboss Logging jboss-logging-3.1.3.GA-sources.jar jboss-logging-3.3.0.Final-sources.jar * * *
Joda Time joda-time-2.5-sources.jar joda-time-2.8.2-sources.jar * * *
Apache Commons Collections commons-collections-3.2.1-sources.jar commons-collections-3.2.2-sources.jar * * *
Apache Commons Dbcp2 commons-dbcp2-2.0.1-sources.jar commons-dbcp2-2.1.1-sources.jar * * *
Apache Commons Pool2 commons-pool2-2.2-sources.jar commons-pool2-2.4.2-sources.jar * * *
MyBatis3 mybatis-3.2.8-sources.jar mybatis-3.3.0-sources.jar   *  
MyBatis3 Spring mybatis-spring-1.2.2-sources.jar mybatis-spring-1.2.3-sources.jar   *  
H2 Database Engine h2-1.4.187-sources.jar h2-1.4.190-sources.jar   * *
JUnit junit-4.11-sources.jar junit-4.12-sources.jar * * *
Mockito mockito-core-1.10.8-sources.jar mockito-core-1.10.19-sources.jar * * *
Spring TestContext Framework spring-test-4.1.7.RELEASE-sources.jar spring-test-4.2.4.RELEASE-sources.jar * * *
Tomcat Embed El tomcat-embed-el-7.0.59-sources.jar tomcat-embed-el-8.0.30-sources.jar * * *

[Step 6]

Update the reference library using replacement string.

  • $YOUR_ECLIPSE_WTP_PROJECT/.classpath
  • $YOUR_ECLIPSE_WTP_PROJECT/build.xml
.. tabularcolumns:: |p{0.25\linewidth}|p{0.30\linewidth}|p{0.30\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|
Library name Characters to be replaced Replacement characters Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.0.1.RELEASE terasoluna-gfw-common-5.1.0.RELEASE * * *
  terasoluna-gfw-jodatime-5.0.1.RELEASE terasoluna-gfw-jodatime-5.1.0.RELEASE * * *
  terasoluna-gfw-jpa-5.0.1.RELEASE terasoluna-gfw-jpa-5.1.0.RELEASE     *
  terasoluna-gfw-mybatis3-5.0.1.RELEASE terasoluna-gfw-mybatis3-5.1.0.RELEASE   *  
  terasoluna-gfw-security-core-5.0.1.RELEASE terasoluna-gfw-security-core-5.1.0.RELEASE * * *
  terasoluna-gfw-security-web-5.0.1.RELEASE terasoluna-gfw-security-web-5.1.0.RELEASE * * *
  terasoluna-gfw-web-5.0.1.RELEASE terasoluna-gfw-web-5.1.0.RELEASE * * *
    terasoluna-gfw-web-jsp-5.1.0.RELEASE * * *
Spring Framework spring-aop-4.1.7.RELEASE spring-aop-4.2.4.RELEASE * * *
  spring-aspects-4.1.7.RELEASE spring-aspects-4.2.4.RELEASE * * *
  spring-beans-4.1.7.RELEASE spring-beans-4.2.4.RELEASE * * *
  spring-context-4.1.7.RELEASE spring-context-4.2.4.RELEASE * * *
  spring-context-support-4.1.7.RELEASE spring-context-support-4.2.4.RELEASE * * *
  spring-core-4.1.7.RELEASE spring-core-4.2.4.RELEASE * * *
  spring-expression-4.1.7.RELEASE spring-expression-4.2.4.RELEASE * * *
  spring-jdbc-4.1.7.RELEASE spring-jdbc-4.2.4.RELEASE * * *
  spring-orm-4.1.7.RELEASE spring-orm-4.2.4.RELEASE * * *
  spring-tx-4.1.7.RELEASE spring-tx-4.2.4.RELEASE * * *
  spring-web-4.1.7.RELEASE spring-web-4.2.4.RELEASE * * *
  spring-webmvc-4.1.7.RELEASE spring-webmvc-4.2.4.RELEASE * * *
Spring Data Commons spring-data-commons-1.9.3.RELEASE spring-data-commons-1.11.2.RELEASE * * *
Spring Security spring-security-acl-3.2.7.RELEASE spring-security-acl-4.0.3.RELEASE * * *
  spring-security-config-3.2.7.RELEASE spring-security-config-4.0.3.RELEASE * * *
  spring-security-core-3.2.7.RELEASE spring-security-core-4.0.3.RELEASE * * *
  spring-security-taglibs-3.2.7.RELEASE spring-security-taglibs-4.0.3.RELEASE * * *
  spring-security-web-3.2.7.RELEASE spring-security-web-4.0.3.RELEASE * * *
Spring Data JPA spring-data-jpa-1.7.3.RELEASE spring-data-jpa-1.9.2.RELEASE     *
Hibernate ORM hibernate-core-4.3.10.Final hibernate-core-4.3.11.Final     *
  hibernate-entitymanager-4.3.10.Final hibernate-entitymanager-4.3.11.Final     *
Hibernate Validator hibernate-validator-5.1.3.Final hibernate-validator-5.2.2.Final * * *
ClassMate classmate-1.0.0 classmate-1.1.0 * * *
AspectJ aspectjrt-1.8.6 aspectjrt-1.8.7 * * *
  aspectjweaver-1.8.6 aspectjweaver-1.8.7 * * *
SLF4J jcl-over-slf4j-1.7.12 jcl-over-slf4j-1.7.13 * * *
  slf4j-api-1.7.12 slf4j-api-1.7.13 * * *
Jackson jackson-annotations-2.4.6 jackson-annotations-2.6.4 * * *
  jackson-core-2.4.6 jackson-core-2.6.4 * * *
  jackson-databind-2.4.6 jackson-databind-2.6.4 * * *
  jackson-datatype-joda-2.4.6 jackson-datatype-joda-2.6.4 * * *
Jboss Logging jboss-logging-3.1.3.GA jboss-logging-3.3.0.Final * * *
Joda Time joda-time-2.5 joda-time-2.8.2 * * *
Apache Commons Collections commons-collections-3.2.1 commons-collections-3.2.2 * * *
Apache Commons Dbcp2 commons-dbcp2-2.0.1 commons-dbcp2-2.1.1 * * *
Apache Commons Pool2 commons-pool2-2.2 commons-pool2-2.4.2 * * *
MyBatis3 mybatis-3.2.8 mybatis-3.3.0   *  
MyBatis3 Spring mybatis-spring-1.2.2 mybatis-spring-1.2.3   *  
H2 Database Engine h2-1.4.187 h2-1.4.190   * *
JUnit junit-4.11 junit-4.12 * * *
Mockito mockito-core-1.10.8 mockito-core-1.10.19 * * *
Spring TestContext Framework spring-test-4.1.7.RELEASE spring-test-4.2.4.RELEASE * * *
Tomcat Embed El tomcat-embed-el-7.0.59 tomcat-embed-el-8.0.30 * * *
⚠️ **GitHub.com Fallback** ⚠️