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

Migration Guideline from 5.3.1 to 5.4.1

.. only:: html

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

Main changes in 5.4.1

Main changes in 5.4.1 are as follows.

  • Update Spring Framework to 4.3.14
  • Update Spring Security to 4.2.4
  • Update Spring IO Platform to Brussels-SR5
  • Update MyBatis to 3.4.5
  • Update Hibernate ORM to 5.0.12
  • Changes in some of the common library specifications
  • Changes in blank project

Update Spring IO Platform to Brussels-SR5

From 5.4.1, Spring IO Platform was updated to Brussels-SR5.

Update Spring Framework to 4.3.14

From 5.4.1, Spring Framework was updated to 4.3.14.RELEASE.

Note

Spring Framework 4.3.11.RELEASE is used in Spring IO Platform Brussels-SR5 however, version control is performed independently in the common library.

Update Spring Security to 4.2.4

From 5.4.1, Spring Security was updated to 4.2.4.RELEASE.

Note

Spring Framework 4.2.3.RELEASE is used in Spring IO Platform Brussels-SR5 however, version control is performed independently in the common library.

Update MyBatis to 3.4.5

From 5.4.1, MyBatis was updated to 3.4.5. In this update, Mybatis TypeHandlers JSR-310 was deleted.

Update Hibernate ORM to 5.0.12

From 5.4.1, Hibernate ORM was updated to 5.0.12.

Change in some of the common library specifications

From 5.4.1, some of the common library specifications were changed .

  • [#702] Log level specification method is not unified
  • [#715] Drop dependency for mybatis-typehandlers-jsr310 when upgrade to MyBatis 3.4.5+
  • [#741] Update tomcat.version for cargo
  • [#747] Wrong full width string in DefaultFullHalf
  • [#772] Upgrade to Spring IO Platform Brussels-SR5
  • [#797] Update spring and spring security version

Changes in blank project

From 5.4.1, some of the configuration files of blank project were changed.

Note

Regarding linefeed code

The line feed codes of blank project were unified with LF.
When source code of blank project is to be used, take care not to mix the line feed code with CRLF.

Procedure for migrating from 5.3.1 to 5.4.1

The migration procedure is as follows.

Note

Legend

Required : This procedure is required
Required by case : This procedure is required with conditions
Optional : This procedure is recommended (Implement it whenever 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}|
Step Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Update dependent libraries Required Required Required

[Common library]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Step Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Correction due to change in log level output by ExceptionLoggingFilter Required by case Required by case Required by case
Bug fixing in full width/half width conversion library Required by case Required by case Required by case
Update Tomcat version to be used in cargo-maven2-plugin 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}|
Step Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Delete mvc:path-matching definition from mvc:annotation-driven element Optional Optional Optional
Add DOCTYPE declaration to logback.xml Optional Optional Optional
Modify group ID of Oracle JDBC Optional Optional
Delete version setting of Selenium dependent library Optional Optional
Add version definition of maven-surefire-plugin Optional

[Spring Framework]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Step Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Modify the definition of access policy that uses path variables Required by case Required by case Required by case
Change DI method of SOAP Web Service Required by case Required by case Required by case
Modify timeout setting of SOAP client Required by case Required by case Required by case
Modify setting method of request header for Basic authorization Optional Optional Optional

[Spring Security]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
Step Procedure MavenMultiple Projects MavenSingle Project EclipseWTP Project
Correction due to validation of timeout attribute of @Transactional annotation Required by case Required by case Required by case
Correction due to OAuth error handling method Required by case Required by case Required by case
Add access token deletion method in OAuth client Required by case Required by case Required by case
Correction due to bug fix that Cache-Control header is not output correctly Optional Optional Optional

[Step 1] Update dependent libraries

Update common libraries and dependent libraries 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.3.1.RELEASE 5.4.1.RELEASE  
Spring Framework 4.3.5.RELEASE 4.3.14.RELEASE  
Spring Data Commons 1.12.6.RELEASE 1.13.7.RELEASE  
Spring Security 4.1.4.RELEASE 4.2.4.RELEASE  
MyBatis3 3.4.2 3.4.5  
Mybatis TypeHandlers JSR-310 1.0.2 - Removed
Hibernate ORM 5.0.11.Final 5.0.12.Final  
Javassist 3.20.0-GA 3.21.0-GA  
Jandex 2.0.0.Final 2.0.3.Final  
Spring Data JPA 1.10.6.RELEASE 1.11.7.RELEASE  
AspectJ 1.8.9 1.8.10  
Logback 1.1.8 1.1.11  
SLF4J 1.7.22 1.7.25  
Jackson 2.8.5 2.8.10  
Jackson Annotations 2.8.5 2.8.0  
Hibernate Validator 5.2.4.Final 5.3.5.Final  
Jboss Logging 3.3.0.Final 3.3.1.Final  
Classmate 1.3.3 1.3.4  
Apache Commons Lang 3.4 3.5  
Joda Time 2.9.6 2.9.9  
Guava 17.0 20.0  

[Case where procedure is required]

This procedure is required

[Step 1-1] When using Maven Multiple Projects

This update procedure is for the project created by using mvn archetype.

Modify pom file version of the parent project to 5.4.1.RELEASE.

  • ($YOUR_MULTIPLE_PROJECT_ROOT/pom.xml)
<!-- omitted -->
<parent>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-parent</artifactId>
    <version>5.4.1.RELEASE</version>                    <!-- ### Modification locations ### -->
</parent>
<!-- omitted -->

[Step 1-2] When using Maven Single Project

This update procedure is for the project created using mvn archetype or for the project downloaded from release site.

Update the version of pom file of project to 5.4.1.RELEASE.

  • ($YOUR_SINGLE_PROJECT/pom.xml)
<!-- omitted -->
<parent>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-parent</artifactId>
    <version>5.4.1.RELEASE</version>                    <!-- ### Modification locations ### -->
</parent>
<!-- omitted -->

[Step 1-3] When using Eclipse WTP Project

This update procedure is for Eclipse WTP project downloaded from release site.

Refer to Update library at the time of using Eclipse WTP Project for update procedure.

[Step 2] Correction due to change in log level output by ExceptionLoggingFilter

In ExceptionLoggingFilter, log level was determined by exception code however, it is now fixed to ERROR level.

[Case where procedure is required]

When exception code is defined for the exception (※) wherein log is output by ExceptionLoggingFilterand the log other than ERROR level is output intentionally.

Exception that occurs in (※) View(JSP) and Filter and exception to be captured by servlet container without processing in SpringMVC such as java.lang.Error etc.

When exception code is defined for either IOException, ServletException and RuntimeException and its subclass as shown in the following example with the purpose of defining log level of the log output specifically by ExceptionLoggingFilter.

  • ($YOUR_MULTIPLE_PROJECT_ROOT/projectName-web/src/main/resources/META-INF/spring/applicationContext.xml)
  • ($YOUR_SINGLE_PROJECT/src/main/resources/META-INF/spring/applicationContext.xml)
  • ($YOUR_ECLIPSE_WTP_PROJECT/src/main/resources/META-INF/spring/applicationContext.xml)
<!-- Exception Code Resolver. -->
<bean id="exceptionCodeResolver"
  class="org.terasoluna.gfw.common.exception.SimpleMappingExceptionCodeResolver">
  <!-- Setting and Customization by project. -->
  <property name="exceptionMappings">
    <map>
      <!-- omitted -->
      <entry key="IOException" value="w.xx.fw.9999" /> <!-- IOException and exception code of WARN level in its subclass is defined. -->
    </map>
  </property>
  <property name="defaultExceptionCode" value="e.xx.9999" />
</bean>

[How to modify]

Create a new class that inherits ExceptionLoggingFilterand change to log output process of the version previous to 5.3.1.RELEASE.

  • Implementation example of logIOExceptionmethod
@Override
protected void logIOException(IOException ex, ServletRequest request,
        ServletResponse response) {
    getExceptionLogger().log(ex);
}

Log of INFO level and WARN level corresponding to exception code can be output by implementing logServletExceptionas well as logRuntimeExceptionin the same way.

Define the created class in Bean in applicationContext.xml as shown below.

<!-- Filter. -->
<bean id="exceptionLoggingFilter"
    class="com.example.web.exception.ExpansionExceptionLoggingFilter" >
    <property name="exceptionLogger" ref="exceptionLogger" />
</bean>

[Step 3] Bug fixing in full width/half width conversion library

[Case where procedure is required]

Confirm the following if it matches with any of the following cases.

  • org.terasoluna.gfw.common.fullhalf.DefaultFullHalfis used.
  • Independent FullHalfConverterclass is created by referring to Development Guidelines.

[Specifications change contents]

Since there is a bug wherein Katakana "ベ" is not converted, the implementation example of org.terasoluna.gfw.common.fullhalf.DefaultFullHalf and Creation of FullHalfConverter class where pair definition of original full width and half width characters is registeredis modified as follows.

Confirm whether there is any impact due to this modification.

【Before modification】

.. tabularcolumns:: |p{0.30\linewidth}|p{0.30\linewidth}
Characters to be converted After conversion
べ(Hiragana) ベ(Katakana)
ベ(Katakana) Is not converted

【After modification】

.. tabularcolumns:: |p{0.30\linewidth}|p{0.30\linewidth}
Characters to be converted After conversion
べ(Hiragana) ベ(Katakana)
ベ(Katakana) ベ(Katakana)

[Step 4] Update Tomcat version to be used in cargo-maven2-plugin

[Case where procedure is required]

Confirm the following if it matches with any of the following cases.

  • Execute test using cargo-maven2-plugin.

[Specifications change contents]

Tomcat version to be used in cargo-maven2-plugin is updated to 8.5.20 on which Spring IO Platform Brussels-SR5 depends.

Since the settings are different in Tomcat8.0 and Tomcat8.5, it is necessary to confirm whether configuration file depends on Tomcat8.0.

[Step 5] Delete mvc:path-matching definition from mvc:annotation-driven element

In Spring Framework 4.3, the default value of trimTokensproperty of org.springframework.util.AntPathMatcheris false, the definition of AntPathMatcherwhere falseis specifically set, is not required.

Till 5.3.1 version of blank project, AntPathMatcher wherein falseis set in trimTokensproperty, is defined and applied in mvc:path-matchingof mvc:annotation-driven.

From 5.4.1 version, the definition of AntPathMatcheris deleted and it is changed to use the default settings of Spring MVC.

[Case where procedure is required]

This procedure is optional. Perform the following modifications whenever required.

[How to modify]

  • ($YOUR_MULTIPLE_PROJECT_ROOT/projectName-web/src/main/resources/META-INF/spring/spring-mvc.xml)
  • ($YOUR_SINGLE_PROJECT/src/main/resources/META-INF/spring/spring-mvc.xml)
  • ($YOUR_ECLIPSE_WTP_PROJECT/src/main/resources/META-INF/spring/spring-mvc.xml)

Please delete the following settings.

<mvc:annotation-driven>
   <!-- omitted -->
   <!-- ### Delete location From here ### -->
   <!-- workaround to CVE-2016-5007. -->
   <mvc:path-matching path-matcher="pathMatcher" />
   <!-- ### Delete location Till here ### -->
</mvc:annotation-driven>

<!-- omitted -->

<!-- ### Delete location From here ### -->
<!-- Setting PathMatcher. -->
<bean id="pathMatcher" class="org.springframework.util.AntPathMatcher">
    <property name="trimTokens" value="false" />
</bean>
<!-- ### Delete location Till here ### -->

[Step 6] Add DOCTYPE declaration to logback.xml

DOCTYPE declaration is added to logback.xmlof blank project. There is no problem in the operations even if there is no DOCTYPE declaration, however, it is recommended to add it as a warning of XML syntax violation is displayed in IDE such as Eclipse."

[Case where procedure is required]

This procedure is optional. Perform the following modifications whenever required.

[How to modify]

Perform the following modifications in logback.xmlof project.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration> <!-- ### Add location ### -->
<configuration>

<!-- omitted -->

[Step 7] Modify Oracle JDBC group ID

It is modified as group ID of ojdbc7mentioned in pom.xmlof blank project as it differs when fetched from the official repository (Oracle Maven Repository).

[Case where procedure is required]

This procedure is optional. Perform the following modifications whenever required.

[How to modify]

Change group ID from com.oracleto com.oracle.jdbcas shown below.

【Before modification】

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>${ojdbc.version}</version>
</dependency>

【After modification】

<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>${ojdbc.version}</version>
</dependency>

Make proper changes in not only pom.xmlbut also Sonatype NEXUS that installs library in com.oracle.

[Step 8] Delete version settings of Selenium dependent library

Selenium version to be used in blank project in compliance with Spring IO Platform. Selenium 2.53.1 is used in Spring IO Platform Brussels-SR5.

[Case where procedure is required]

This procedure is optional however, it is recommended to do the following modifications if it matches with the following cases.

  • Use Selenium of the version complied with Spring IO Platform.

[How to modify]

Delete Selenium dependent library settings from dependencyManagementtag of pom.xmlof project.

<dependencyManagement>
   <dependencies>

   <!--omitted-->
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>${selenium.version}</version>  <!-- ### Delete locations ### -->
          <scope>test</scope>
      </dependency>
   <!-- ### Delete locations Start ### -->
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-chrome-driver</artifactId>
          <version>${selenium.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-remote-driver</artifactId>
          <version>${selenium.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-api</artifactId>
          <version>${selenium.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-firefox-driver</artifactId>
          <version>${selenium.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-ie-driver</artifactId>
          <version>${selenium.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-safari-driver</artifactId>
          <version>${selenium.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-support</artifactId>
          <version>${selenium.version}</version>
          <scope>test</scope>
      </dependency>
   <!-- ### Delete locations End ### -->
   <!--omitted-->

   </dependencies>
</dependencyManagement>
<properties>
   <!--omitted-->
   <selenium.version>2.46.0</selenium.version> <!-- ### Delete locations ### -->
   <!--omitted-->
</properties>

[Remarks]

When setting your own version of Selenium, define the above-mentioned deletion target in pom.xmland specify the version to be used in selenium.version.

The definition having only selenium-javais insufficient and it is necessary to have all versions of Selenium library such as selenium-remote-driver.

[Step 9] Add the version definition of maven-surefire-plugin

The definition of version since Warning indicating version of maven-surefire-plugin not defined occurs at the time of build of blank project.

Version is specified in order to match with common library definition (2.17).

[Case where procedure is required]

Perform the following modifications if it matches with the following cases.

  • Version of maven-surefire-plugin is not defined uniquely and Warning is displayed at the time of build.

[How to modify]

Add the following definition in pom.xmlof project.

<build>
   <pluginManagement>
       <plugins>
           <!--omitted-->
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>${maven-surefire-plugin.version}</version>
           </plugin>
           <!--omitted-->
       </plugins>
   </pluginManagement>
</build>
<properties>
   <!--omitted-->
   <maven-surefire-plugin.version>2.17</maven-surefire-plugin.version>
   <!--omitted-->
</properties>

If the version used actually at the time of build is other than 2.17, it can be specified.

[Step 10] Modify access policy definition using path variables

The implementation example of Path variable reference in authorization control (<sec:intercept-url>) by Spring Security is modified.

This modification was done because the contents mentioned in the Warning of specification of Web resource that applies access policy were not included in the implementation example.

In the earlier implementation example, if extension is included in the URL, it is considered as a part of the path variable and unintended authorization control is performed. Also, it is not considered that if the URL ends with extension or /, it will be interpreted differently in Spring MVC and Spring Security.

[Case where procedure is required]

Perform the following modifications if it matches with the following cases.

  • Authorization control(<sec:intercept-url>) is implemented by Spring Security and path variables are used in path pattern (pattern).

[How to modify]

  • Change the definition of access policy of spring-security.xml.

Example)

【Before modification】

<sec:http>
   <sec:intercept-url pattern="/users/{userName}" access="isAuthenticated() and #userName == principal.username"/>
   <!-- omitted -->
</sec:http>

【After modification】

[When wild cards are to be used]

<sec:http>
   <sec:intercept-url pattern="/users/{userName}.*"  access="isAuthenticated() and #userName == principal.username"/>
   <sec:intercept-url pattern="/users/{userName}/**" access="isAuthenticated() and #userName == principal.username"/>
   <!-- omitted -->
</sec:http>

[When wild cards are not to be used]

<sec:http>
   <sec:intercept-url pattern="/users/{userName}.*"  access="isAuthenticated() and #userName == principal.username"/>
   <sec:intercept-url pattern="/users/{userName}/"   access="isAuthenticated() and #userName == principal.username"/>
   <sec:intercept-url pattern="/users/{userName}"    access="isAuthenticated() and #userName == principal.username"/>
   <!-- omitted -->
</sec:http>

[Step 11] Change DI method of SOAP Web Service

It is confirmed that when using @Injectin SOAP Web Service implementation, it does not work properly on a specific AP server. This is because the processing on SOAP server has the characteristics to operate on the servlet provided by JAX-WS engine and not on the servlet provided by Spring, and it impacts CDI function of each AP server (AP server of Java EE support) of execution environment if it is implemented to inject Bean of Spring management using @Inject.

[Case where procedure is required]

It may have the above-mentioned impact when DI function of AP server is not disabled. Perform the following modification whenever required.

[How to modify]

In the implementation of SOAP server, replace all the locations where @Injectis used, with @Autowired.

[Step 12] Modify timeout settings of SOAP client

The default settings of timeout are changed in the implementation of client of SOAP Web Service.

Before change, Integertype was specified in value-typeattribute, however, when not specified, Stringtype is applied and specification of value-typeattribute is deleted, since it works normally with both Integerand String except for some servers.

[Case where procedure is required]

This procedure is optional. If it matches with the following cases and if required, perform the following modification.

  • The used AP server is not weblogic.(※)
For (※) weblogic, the handling method differs. Refer to timeout settings of SOAP client.

[How to modify]

Modify custom property of org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean.

  • ($YOUR_PROJECT_ROOT/[projectName]-domain/src/main/resources/META-INF/spring/[projectName]-domain.xml)

【Before modification】

<property name="customProperties">
    <map>
        <entry key="com.sun.xml.internal.ws.connect.timeout" value-type="java.lang.Integer"  value="${webservice.connect.timeout}"/>
        <entry key="com.sun.xml.internal.ws.request.timeout" value-type="java.lang.Integer"  value="${webservice.request.timeout}"/>
    </map>
</property>

【After modification】

<property name="customProperties">
    <map>
        <entry key="com.sun.xml.internal.ws.connect.timeout" value="${webservice.connect.timeout}"/>
        <entry key="com.sun.xml.internal.ws.request.timeout" value="${webservice.request.timeout}"/>
    </map>
</property>

[Step 13] Modify setting method of request header for Basic authorization

org.springframework.http.client.support.BasicAuthorizationInterceptor is added from Spring Framework 4.1 and it will no longer be required to implement request header setting process for Basic authorization independently.

[Case where procedure is required]

It is recommended to apply the following modification to implement request header setting process for Basic authorization independently.

[How to modify]

Delete request header setting process 9(BasicAuthInterceptor)) for Basic authorization implemented independently and modify applicationContext.xmlas shown below.

【Before modification】

<bean id="basicAuthInterceptor" class="com.example.restclient.BasicAuthInterceptor" />

【After modification】

<bean id="basicAuthInterceptor" class="org.springframework.http.client.support.BasicAuthorizationInterceptor">
    <constructor-arg index="0" value="${api.auth.username}" /><!-- Set username -->
    <constructor-arg index="1" value="${api.auth.password}" /><!-- Set password -->
</bean>

[Step 14] Correction due to validation of timeout attribute of @Transactional annotation

In MyBatis 3.4 and MyBatis-Spring 1.3 combination, timeoutattribute of @Transactional annotation is enabled.

[Case where procedure is required]

This procedure is optional, however, if it matches with any of the following cases, it is recommended to apply the following modifications.

  • Information required for transaction management is declared in XML (bean definition).
  • As a measure for non functioning of timeoutattribute, timeout is specified for each statement in MyBatis mapper XML.

[How to modify:When information required for transaction management is declared in XML (bean definition)]

Delete XML (Bean definition) and specify @Transactionalfor the class or class method intended for transaction management.

Example)

【Before modification】

<bean id="fooService" class="x.y.service.DefaultFooService"/>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="*" timeout="10"/>
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:pointcut id="fooServiceOperation" expression="execution(* x.y.service.FooService.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation"/>
</aop:config>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

【After modification】

<bean id="fooService" class="x.y.service.DefaultFooService"/>

<tx:annotation-driven />

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
@Transactional(timeout = "10")
public class DefaultFooService implements FooService {

   //omitted

}

Refer to About transaction management of development guidelines for the details.

[How to modify:When timeout is specified for each statement in MyBatis mapper XML]

Delete timeoutattribute from the statement in mapper XML and specify timeoutattribute for @Transactional.

[Step 15] Correction due to OAuth error handling method addition

Implementation example of error handling has been added in Implementation example of OAuth of development guidelines. In the implementation example of the development guidelines before addition, error handling is inadequate and hence it is necessary to make modifications.

[Case where procedure is required]

Perform the following modifications if it matches with any of the following cases.

  • Implement based on the development guidelines, and do not add own error handling.
  • Implement based on the development guidelines, and not add own error handling but it differs with the implementation policy of 5.4.1 version development guidelines.

[How to modify]

Check implementation example of OAuth error handling and carry out the implementation.

[Step 16] Add access token deletion method in OAuth client

Implementation example of cancel access token at client has been added in Implementation example of OAuth of development guidelines.

[Case where procedure is required]

Implement as follows if it matches with the following case.

  • Cancellation of access token is being implemented in authorization server.

[How to implement]

Check implementation example of Cancel token (Client server) and carry out the implementation.

[Step 17] Correction due to bug fix that Cache-Control header is not output correctly

In Spring Security 4.1.0, a bug wherein HTTP response header was not output correctly occurred due to the following Issues.

spring-project/spring-security#2953

In the following Issues, the above-mentioned bugs have been fixed and will no longer occur from Spring Security 4.2.0 onwards.

spring-project/spring-security#3975

[Case where procedure is required]

Confirm whether there is any impact due to the normal output of the Cache-Control header, if there is any impact, take appropriate measures according to Linkage with the security measure function of browser of the development guideline.

[How to modify]

Delete the implementation that was performed as a measure.

Appendix for 5.4.1

Update library when using Eclipse WTP Project

This update procedure is for Eclipse WTP project downloaded from release site.

Note

Notes

[Table header]
Non : Blank project not dependent on 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.4.1.RELEASE.

[Step 2]

If Eclipse is running, close Eclipse.

[Step 3]

Update (delete and add) the 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 Delete file Add file Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.3.1.RELEASE.jar terasoluna-gfw-common-5.4.1.RELEASE.jar * * *
  terasoluna-gfw-jodatime-5.3.1.RELEASE.jar terasoluna-gfw-jodatime-5.4.1.RELEASE.jar * * *
  terasoluna-gfw-security-web-5.3.1.RELEASE.jar terasoluna-gfw-security-web-5.4.1.RELEASE.jar * * *
  terasoluna-gfw-web-5.3.1.RELEASE.jar terasoluna-gfw-web-5.4.1.RELEASE.jar * * *
  terasoluna-gfw-web-jsp-5.3.1.RELEASE.jar terasoluna-gfw-web-jsp-5.4.1.RELEASE.jar * * *
Spring Framework spring-aop-4.3.5.RELEASE.jar spring-aop-4.3.14.RELEASE.jar * * *
  spring-aspects-4.3.5.RELEASE.jar spring-aspects-4.3.14.RELEASE.jar * * *
  spring-beans-4.3.5.RELEASE.jar spring-beans-4.3.14.RELEASE.jar * * *
  spring-context-4.3.5.RELEASE.jar spring-context-4.3.14.RELEASE.jar * * *
  spring-context-support-4.3.5.RELEASE.jar spring-context-support-4.3.14.RELEASE.jar * * *
  spring-core-4.3.5.RELEASE.jar spring-core-4.3.14.RELEASE.jar * * *
  spring-expression-4.3.5.RELEASE.jar spring-expression-4.3.14.RELEASE.jar * * *
  spring-jdbc-4.3.5.RELEASE.jar spring-jdbc-4.3.14.RELEASE.jar * * *
  spring-orm-4.3.5.RELEASE.jar spring-orm-4.3.14.RELEASE.jar * * *
  spring-tx-4.3.5.RELEASE.jar spring-tx-4.3.14.RELEASE.jar * * *
  spring-web-4.3.5.RELEASE.jar spring-web-4.3.14.RELEASE.jar * * *
  spring-webmvc-4.3.5.RELEASE.jar spring-webmvc-4.3.14.RELEASE.jar * * *
Spring Data Commons spring-data-commons-1.12.6.RELEASE.jar spring-data-commons-1.13.7.RELEASE.jar * * *
Spring Security spring-security-acl-4.1.4.RELEASE.jar spring-security-acl-4.2.4.RELEASE.jar * * *
  spring-security-config-4.1.4.RELEASE.jar spring-security-config-4.2.4.RELEASE.jar * * *
  spring-security-core-4.1.4.RELEASE.jar spring-security-core-4.2.4.RELEASE.jar * * *
  spring-security-taglibs-4.1.4.RELEASE.jar spring-security-taglibs-4.2.4.RELEASE.jar * * *
  spring-security-web-4.1.4.RELEASE.jar spring-security-web-4.2.4.RELEASE.jar * * *
MyBatis3 mybatis-3.4.2.jar mybatis-3.4.5.jar * * *
Hibernate hibernate-core-5.0.11.Final.jar hibernate-core-5.0.12.Final.jar *
  hibernate-entitymanager-5.0.11.Final.jar hibernate-entitymanager-5.0.12.Final.jar *
  javassist-3.20.0-GA.jar javassist-3.21.0-GA.jar *
  jandex-2.0.0.Final.jar jandex-2.0.3.Final.jar *
Spring Data JPA spring-data-jpa-1.10.6.RELEASE.jar spring-data-jpa-1.11.7.RELEASE.jar *
AspectJ aspectjrt-1.8.9.jar aspectjrt-1.8.10.jar * * *
  aspectjweaver-1.8.9.jar aspectjweaver-1.8.10.jar * * *
Logback logback-classic-1.1.8.jar logback-classic-1.1.11.jar * * *
  logback-core-1.1.8.jar logback-core-1.1.11.jar * * *
SLF4J jcl-over-slf4j-1.7.22.jar jcl-over-slf4j-1.7.25.jar * * *
  slf4j-api-1.7.22.jar slf4j-api-1.7.25.jar * * *
Jackson jackson-annotations-2.8.5.jar jackson-annotations-2.8.0.jar * * *
  jackson-core-2.8.5.jar jackson-core-2.8.10.jar * * *
  jackson-databind-2.8.5.jar jackson-databind-2.8.10.jar * * *
  jackson-datatype-joda-2.8.5.jar jackson-datatype-joda-2.8.10.jar * * *
  jackson-datatype-jsr310-2.8.5.jar jackson-datatype-jsr310-2.8.10.jar * * *
Hibernate Validator hibernate-validator-5.2.4.Final.jar hibernate-validator-5.3.5.Final.jar * * *
Jboss Logging jboss-logging-3.3.0.Final.jar jboss-logging-3.3.1.Final.jar * * *
Classmate classmate-1.3.3.jar classmate-1.3.4.jar * * *
Apache Commons Lang commons-lang3-3.4.jar commons-lang3-3.5.jar * * *
Joda Time joda-time-2.9.6.jar joda-time-2.9.9.jar * * *
Guava guava-17.0.jar guava-20.0.jar * - *
Tomcat tomcat-el-api-8.5.6.jar tomcat-el-api-8.5.20.jar * * *
  tomcat-jsp-api-8.5.6.jar tomcat-jsp-api-8.5.20.jar * * *
  tomcat-servlet-api-8.5.6.jar tomcat-servlet-api-8.5.20.jar * * *

[Step 4]

Update (delete and add) the 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 Delete file Add file Non MB3 JPA
Spring TestContext Framework spring-test-4.3.5.RELEASE.jar spring-test-4.3.14.RELEASE.jar * * *
Tomcat Embed El tomcat-embed-el-8.5.6.jar tomcat-embed-el-8.5.20.jar * * *
Gson gson-2.7.jar gson-2.8.1.jar * * *
Apache HTTPClient httpclient-4.5.2.jar httpclient-4.5.3.jar * * *
  httpcore-4.4.5.jar httpcore-4.4.6.jar * * *
  httpmime-4.5.2.jar httpmime-4.5.3.jar * * *
Jetty jetty-io-9.3.14.v20161028.jar jetty-io-9.4.6.v20170531.jar * * *
  jetty-util-9.3.14.v20161028.jar jetty-util-9.4.6.v20170531.jar * * *
Netty netty-3.5.2.Final.jar netty-3.5.7.Final.jar * * *
Objenesis objenesis-2.4.jar objenesis-2.5.1.jar * * *
Selenium selenium-api-2.46.0.jar selenium-api-2.53.1.jar * * *
  selenium-chrome-driver-2.46.0.jar selenium-chrome-driver-2.53.1.jar * * *
  selenium-firefox-driver-2.46.0.jar selenium-firefox-driver-2.53.1.jar * * *
  selenium-htmlunit-driver-2.46.0.jar selenium-htmlunit-driver-2.53.1.jar * * *
  selenium-ie-driver-2.46.0.jar selenium-ie-driver-2.53.1.jar * * *
  selenium-java-2.46.0.jar selenium-java-2.53.1.jar * * *
  selenium-leg-rc-2.46.0.jar selenium-leg-rc-2.53.1.jar * * *
  selenium-remote-driver-2.46.0.jar selenium-remote-driver-2.53.1.jar * * *
  selenium-safari-driver-2.46.0.jar selenium-safari-driver-2.53.1.jar * * *
  selenium-support-2.46.0.jar selenium-support-2.53.1.jar * * *
Webbit websocket-api-9.3.14.v20161028.jar websocket-api-9.4.6.v20170531.jar * * *
  websocket-client-9.3.14.v20161028.jar websocket-client-9.4.6.v20170531.jar * * *
  websocket-common-9.3.14.v20161028.jar websocket-common-9.4.6.v20170531.jar * * *

[Step 5]

Update (delete and add) the jar file for source storage 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 Delete file Add file Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.3.1.RELEASE-sources.jar terasoluna-gfw-common-5.4.1.RELEASE-sources.jar * * *
  terasoluna-gfw-jodatime-5.3.1.RELEASE-sources.jar terasoluna-gfw-jodatime-5.4.1.RELEASE-sources.jar * * *
  terasoluna-gfw-security-web-5.3.1.RELEASE-sources.jar terasoluna-gfw-security-web-5.4.1.RELEASE-sources.jar * * *
  terasoluna-gfw-web-5.3.1.RELEASE-sources.jar terasoluna-gfw-web-5.4.1.RELEASE-sources.jar * * *
  terasoluna-gfw-web-jsp-5.3.1.RELEASE-sources.jar terasoluna-gfw-web-jsp-5.4.1.RELEASE-sources.jar * * *
Spring Framework spring-aop-4.3.5.RELEASE-sources.jar spring-aop-4.3.14.RELEASE-sources.jar * * *
  spring-aspects-4.3.5.RELEASE-sources.jar spring-aspects-4.3.14.RELEASE-sources.jar * * *
  spring-beans-4.3.5.RELEASE-sources.jar spring-beans-4.3.14.RELEASE-sources.jar * * *
  spring-context-4.3.5.RELEASE-sources.jar spring-context-4.3.14.RELEASE-sources.jar * * *
  spring-context-support-4.3.5.RELEASE-sources.jar spring-context-support-4.3.14.RELEASE-sources.jar * * *
  spring-core-4.3.5.RELEASE-sources.jar spring-core-4.3.14.RELEASE-sources.jar * * *
  spring-expression-4.3.5.RELEASE-sources.jar spring-expression-4.3.14.RELEASE-sources.jar * * *
  spring-jdbc-4.3.5.RELEASE-sources.jar spring-jdbc-4.3.14.RELEASE-sources.jar * * *
  spring-orm-4.3.5.RELEASE-sources.jar spring-orm-4.3.14.RELEASE-sources.jar * * *
  spring-tx-4.3.5.RELEASE-sources.jar spring-tx-4.3.14.RELEASE-sources.jar * * *
  spring-web-4.3.5.RELEASE-sources.jar spring-web-4.3.14.RELEASE-sources.jar * * *
  spring-webmvc-4.3.5.RELEASE-sources.jar spring-webmvc-4.3.14.RELEASE-sources.jar * * *
Spring Data Commons spring-data-commons-1.12.6.RELEASE-sources.jar spring-data-commons-1.13.7.RELEASE-sources.jar * * *
Spring Data JPA spring-data-jpa-1.10.6.RELEASE-sources.jar spring-data-jpa-1.11.7.RELEASE-sources.jar *
Spring Security spring-security-acl-4.1.4.RELEASE-sources.jar spring-security-acl-4.2.4.RELEASE-sources.jar * * *
  spring-security-config-4.1.4.RELEASE-sources.jar spring-security-config-4.2.4.RELEASE-sources.jar * * *
  spring-security-core-4.1.4.RELEASE-sources.jar spring-security-core-4.2.4.RELEASE-sources.jar * * *
  spring-security-taglibs-4.1.4.RELEASE-sources.jar spring-security-taglibs-4.2.4.RELEASE-sources.jar * * *
  spring-security-web-4.1.4.RELEASE-sources.jar spring-security-web-4.2.4.RELEASE-sources.jar * * *
Spring TestContext Framework spring-test-4.3.5.RELEASE-sources.jar spring-test-4.3.14.RELEASE-sources.jar * * *
MyBatis3 mybatis-3.4.2-sources.jar mybatis-3.4.5-sources.jar * * *
Hibernate hibernate-core-5.0.11.Final-sources.jar hibernate-core-5.0.12.Final-sources.jar *
  hibernate-entitymanager-5.0.11.Final-sources.jar hibernate-entitymanager-5.0.12.Final-sources.jar *
  javassist-3.20.0-GA-sources.jar javassist-3.21.0-GA-sources.jar *
  jandex-2.0.0.Final-sources.jar jandex-2.0.3.Final-sources.jar *
Spring Data JPA spring-data-jpa-1.10.6.RELEASE-sources.jar spring-data-jpa-1.11.7.RELEASE-sources.jar *
AspectJ aspectjrt-1.8.9-sources.jar aspectjrt-1.8.10-sources.jar * * *
  aspectjweaver-1.8.9-sources.jar aspectjweaver-1.8.10-sources.jar * * *
Logback logback-classic-1.1.8-sources.jar logback-classic-1.1.11-sources.jar * * *
  logback-core-1.1.8-sources.jar logback-core-1.1.11-sources.jar * * *
SLF4J jcl-over-slf4j-1.7.22-sources.jar jcl-over-slf4j-1.7.25-sources.jar * * *
  slf4j-api-1.7.22-sources.jar slf4j-api-1.7.25-sources.jar * * *
Jackson jackson-annotations-2.8.5-sources.jar jackson-annotations-2.8.0-sources.jar * * *
  jackson-core-2.8.5-sources.jar jackson-core-2.8.10-sources.jar * * *
  jackson-databind-2.8.5-sources.jar jackson-databind-2.8.10-sources.jar * * *
  jackson-datatype-joda-2.8.5-sources.jar jackson-datatype-joda-2.8.10-sources.jar * * *
  jackson-datatype-jsr310-2.8.5-sources.jar jackson-datatype-jsr310-2.8.10-sources.jar * * *
Hibernate Validator hibernate-validator-5.2.4.Final-sources.jar hibernate-validator-5.3.5.Final-sources.jar * * *
Jboss Logging jboss-logging-3.3.0.Final-sources.jar jboss-logging-3.3.1.Final-sources.jar * * *
Classmate classmate-1.3.3-sources.jar classmate-1.3.4-sources.jar * * *
Apache Commons Lang commons-lang3-3.4-sources.jar commons-lang3-3.5-sources.jar * * *
Joda Time joda-time-2.9.6-sources.jar joda-time-2.9.9-sources.jar * * *
Guava guava-17.0-sources.jar guava-20.0-sources.jar * - *
Tomcat tomcat-el-api-8.5.6-sources.jar tomcat-el-api-8.5.20-sources.jar * * *
  tomcat-jsp-api-8.5.6-sources.jar tomcat-jsp-api-8.5.20-sources.jar * * *
  tomcat-servlet-api-8.5.6-sources.jar tomcat-servlet-api-8.5.20-sources.jar * * *
Tomcat Embed El tomcat-embed-el-8.5.6-sources.jar tomcat-embed-el-8.5.20-sources.jar * * *
Gson gson-2.7-sources.jar gson-2.8.1-sources.jar * * *
Apache HTTPClient httpclient-4.5.2-sources.jar httpclient-4.5.3-sources.jar * * *
  httpcore-4.4.5-sources.jar httpcore-4.4.6-sources.jar * * *
  httpmime-4.5.2-sources.jar httpmime-4.5.3-sources.jar * * *
Jetty jetty-io-9.3.14.v20161028-sources.jar jetty-io-9.4.6.v20170531-sources.jar * * *
  jetty-util-9.3.14.v20161028-sources.jar jetty-util-9.4.6.v20170531-sources.jar * * *
Netty netty-3.5.2.Final-sources.jar netty-3.5.7.Final-sources.jar * * *
Objenesis objenesis-2.4-sources.jar objenesis-2.5.1-sources.jar * * *
Selenium selenium-api-2.46.0-sources.jar selenium-api-2.53.1-sources.jar * * *
  selenium-chrome-driver-2.46.0-sources.jar selenium-chrome-driver-2.53.1-sources.jar * * *
  selenium-firefox-driver-2.46.0-sources.jar selenium-firefox-driver-2.53.1-sources.jar * * *
  selenium-htmlunit-driver-2.46.0-sources.jar selenium-htmlunit-driver-2.53.1-sources.jar * * *
  selenium-ie-driver-2.46.0-sources.jar selenium-ie-driver-2.53.1-sources.jar * * *
  selenium-java-2.46.0-sources.jar selenium-java-2.53.1-sources.jar * * *
  selenium-leg-rc-2.46.0-sources.jar selenium-leg-rc-2.53.1-sources.jar * * *
  selenium-remote-driver-2.46.0-sources.jar selenium-remote-driver-2.53.1-sources.jar * * *
  selenium-safari-driver-2.46.0-sources.jar selenium-safari-driver-2.53.1-sources.jar * * *
  selenium-support-2.46.0-sources.jar selenium-support-2.53.1-sources.jar * * *
Webbit websocket-api-9.3.14.v20161028-sources.jar websocket-api-9.4.6.v20170531-sources.jar * * *
  websocket-client-9.3.14.v20161028-sources.jar websocket-client-9.4.6.v20170531-sources.jar * * *
  websocket-common-9.3.14.v20161028-sources.jar websocket-common-9.4.6.v20170531-sources.jar * * *

[Step 6]

Update the reference library by using the replacement character 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 Replacement target character Replacement character Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.3.1.RELEASE terasoluna-gfw-common-5.4.1.RELEASE * * *
  terasoluna-gfw-jodatime-5.3.1.RELEASE terasoluna-gfw-jodatime-5.4.1.RELEASE * * *
  terasoluna-gfw-security-web-5.3.1.RELEASE terasoluna-gfw-security-web-5.4.1.RELEASE * * *
  terasoluna-gfw-web-5.3.1.RELEASE terasoluna-gfw-web-5.4.1.RELEASE * * *
  terasoluna-gfw-web-jsp-5.3.1.RELEASE terasoluna-gfw-web-jsp-5.4.1.RELEASE * * *
Spring Framework spring-aop-4.3.5.RELEASE spring-aop-4.3.14.RELEASE * * *
  spring-aspects-4.3.5.RELEASE spring-aspects-4.3.14.RELEASE * * *
  spring-beans-4.3.5.RELEASE spring-beans-4.3.14.RELEASE * * *
  spring-context-4.3.5.RELEASE spring-context-4.3.14.RELEASE * * *
  spring-context-support-4.3.5.RELEASE spring-context-support-4.3.14.RELEASE * * *
  spring-core-4.3.5.RELEASE spring-core-4.3.14.RELEASE * * *
  spring-expression-4.3.5.RELEASE spring-expression-4.3.14.RELEASE * * *
  spring-jdbc-4.3.5.RELEASE spring-jdbc-4.3.14.RELEASE * * *
  spring-orm-4.3.5.RELEASE spring-orm-4.3.14.RELEASE * * *
  spring-tx-4.3.5.RELEASE spring-tx-4.3.14.RELEASE * * *
  spring-web-4.3.5.RELEASE spring-web-4.3.14.RELEASE * * *
  spring-webmvc-4.3.5.RELEASE spring-webmvc-4.3.14.RELEASE * * *
Spring Data Commons spring-data-commons-1.12.6.RELEASE spring-data-commons-1.13.7.RELEASE * * *
Spring Data JPA spring-data-jpa-1.10.6.RELEASE spring-data-jpa-1.11.7.RELEASE *
Spring Security spring-security-acl-4.1.4.RELEASE spring-security-acl-4.2.4.RELEASE * * *
  spring-security-config-4.1.4.RELEASE spring-security-config-4.2.4.RELEASE * * *
  spring-security-core-4.1.4.RELEASE spring-security-core-4.2.4.RELEASE * * *
  spring-security-taglibs-4.1.4.RELEASE spring-security-taglibs-4.2.4.RELEASE * * *
  spring-security-web-4.1.4.RELEASE spring-security-web-4.2.4.RELEASE * * *
Spring TestContext Framework spring-test-4.3.5.RELEASE spring-test-4.3.14.RELEASE * * *
MyBatis3 mybatis-3.4.2 mybatis-3.4.5 * * *
Hibernate hibernate-core-5.0.11.Final hibernate-core-5.0.12.Final *
  hibernate-entitymanager-5.0.11.Final hibernate-entitymanager-5.0.12.Final *
  javassist-3.20.0-GA javassist-3.21.0-GA *
  jandex-2.0.0.Final jandex-2.0.3.Final *
Spring Data JPA spring-data-jpa-1.10.6.RELEASE spring-data-jpa-1.11.7.RELEASE *
AspectJ aspectjrt-1.8.9 aspectjrt-1.8.10 * * *
  aspectjweaver-1.8.9 aspectjweaver-1.8.10 * * *
Logback logback-classic-1.1.8 logback-classic-1.1.11 * * *
  logback-core-1.1.8 logback-core-1.1.11 * * *
SLF4J jcl-over-slf4j-1.7.22 jcl-over-slf4j-1.7.25 * * *
  slf4j-api-1.7.22 slf4j-api-1.7.25 * * *
Jackson jackson-annotations-2.8.5 jackson-annotations-2.8.0 * * *
  jackson-core-2.8.5 jackson-core-2.8.10 * * *
  jackson-databind-2.8.5 jackson-databind-2.8.10 * * *
  jackson-datatype-joda-2.8.5 jackson-datatype-joda-2.8.10 * * *
  jackson-datatype-jsr310-2.8.5 jackson-datatype-jsr310-2.8.10 * * *
Hibernate Validator hibernate-validator-5.2.4.Final hibernate-validator-5.3.5.Final * * *
Jboss Logging jboss-logging-3.3.0.Final jboss-logging-3.3.1.Final * * *
Classmate classmate-1.3.3 classmate-1.3.4 * * *
Apache Commons Lang commons-lang3-3.4 commons-lang3-3.5 * * *
Joda Time joda-time-2.9.6 joda-time-2.9.9 * * *
Guava guava-17.0 guava-20.0 * - *
Tomcat tomcat-el-api-8.5.6 tomcat-el-api-8.5.20 * * *
  tomcat-jsp-api-8.5.6 tomcat-jsp-api-8.5.20 * * *
  tomcat-servlet-api-8.5.6 tomcat-servlet-api-8.5.20 * * *
Tomcat Embed El tomcat-embed-el-8.5.6 tomcat-embed-el-8.5.20 * * *
Gson gson-2.7 gson-2.8.1 * * *
Apache HTTPClient httpclient-4.5.2 httpclient-4.5.3 * * *
  httpcore-4.4.5 httpcore-4.4.6 * * *
  httpmime-4.5.2 httpmime-4.5.3 * * *
Jetty jetty-io-9.3.14.v20161028 jetty-io-9.4.6.v20170531 * * *
  jetty-util-9.3.14.v20161028 jetty-util-9.4.6.v20170531 * * *
Netty netty-3.5.2.Final netty-3.5.7.Final * * *
Objenesis objenesis-2.4 objenesis-2.5.1 * * *
Selenium selenium-api-2.46.0 selenium-api-2.53.1 * * *
  selenium-chrome-driver-2.46.0 selenium-chrome-driver-2.53.1 * * *
  selenium-firefox-driver-2.46.0 selenium-firefox-driver-2.53.1 * * *
  selenium-htmlunit-driver-2.46.0 selenium-htmlunit-driver-2.53.1 * * *
  selenium-ie-driver-2.46.0 selenium-ie-driver-2.53.1 * * *
  selenium-java-2.46.0 selenium-java-2.53.1 * * *
  selenium-leg-rc-2.46.0 selenium-leg-rc-2.53.1 * * *
  selenium-remote-driver-2.46.0 selenium-remote-driver-2.53.1 * * *
  selenium-safari-driver-2.46.0 selenium-safari-driver-2.53.1 * * *
  selenium-support-2.46.0 selenium-support-2.53.1 * * *
Webbit websocket-api-9.3.14.v20161028 websocket-api-9.4.6.v20170531 * * *
  websocket-client-9.3.14.v20161028 websocket-client-9.4.6.v20170531 * * *
  websocket-common-9.3.14.v20161028 websocket-common-9.4.6.v20170531 * * *
⚠️ **GitHub.com Fallback** ⚠️