Tomcat環境でMySQL8.xを使用した場合の設定について

フォローする

■概要

本ナレッジでは、MySQL8.xとConnector /J 8の組み合わせを利用する場合の手順を説明します。 

Tomcat構築作業手順書では、MySQL5.xとMySQL Connector /J 5の組み合わせを想定して設定が記載されています。

<参考ドキュメント>
※ご利用にはBizRobo! PORTALのアカウントが必要です。詳しくはこちらを参照くださいますようお願い致します。
Windows用Tomcat構築作業手順書(10.4)

そのため、MySQL8.xを使用する場合や、MySQL Connector /J 8を使用する場合、記載されている内容と一部設定が異なります。
MySQL8.xとConnector /J 5の組み合わせを利用する場合は各項目に記載している※に注意して設定してください。

MySQLとMySQL Connector の互換性に関しては以下をご確認下さい。
<外部参考URL>

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html

 

■注意事項

既存のTomcat環境MySQL5.x)で本手順を実施する場合、事前に以下のバックアップ作業を実施してください。

・MCのバックアップ

参考資料:MCのバックアップを作成/復元する方法

・mc.xmlファイルのバックアップ

 

■前提

Tomcat構築作業手順書を基に、本ナレッジは使用するMySQLのバージョンがV8.0を前提として記載します。

 

■作業手順

基本的な作業の流れはTomcat構築作業手順書の通りとなります。
尚、Tomcat構築作業手順書を基に、以下に記載した修正事項を実施くださいますようお願い致します。

1、設定ファイルについて

  mc.xmlについては変更が必要となりますので、以下の通りの変更内容を記載します。

  ①XML要素の「Resource 」>「driverClassName」

※Connector /J 8を利用する場合のみ変更が必要です。
Connector /J 5を利用する場合はTomcat構築作業手順書通りに指定してください。

driverClassName="com.mysql.cj.jdbc.Driver"


  ②XML要素の「Resource 」>「URL」

※serverTimezoneの指定が必要なのは、Connector /J 8を使用する場合のみです。
Connector /J 5を使用する場合は、serverTimezoneの指定をする必要はありません。
Tomcat構築作業手順書に記載されている設定に、allowPublicKeyRetrieval=trueのみ追加してください。

url="jdbc:mysql://{DBサーバホスト名orIPアドレス}:{DB接続ポート番号}/{リポジトリDB名}?useUnicode=yes&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;useCursorFetch=true&amp;defaultFetchSize=1000&amp;serverTimezone=GMT%2B9&amp;allowPublicKeyRetrieval=true

   ※{〇〇〇}部分の内容は、環境に合わせて適宜変更をお願いいたします。

設定後の動作確認
 mc.xmlファイルを修正後、Tomcatサービスを再起動し、以下MCのログイン画面が正しく表示できることを確認くださいますようお願い致します。
http://localhost:8080/mc

※本Stepを実施しないと、Tomcat環境構築手順書の「9.設定ファイル設置・mc.warを展開」>「Step14」の http://localhost:8080/mc を開く際に、以下のエラーが発生する可能性があります。


localhost.2020-0X-XX.log

24-Apr-2020 13:43:49.674 重大 [http-nio-8080-exec-2] org.apache.catalina.session.StandardSession.tellNew セッションイベントリスナが例外を投げました

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformDataSource' defined in ServletContext resource [/WEB-INF/spring/common.xml]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'createPlatformDataSource' threw exception; nested exception is java.lang.RuntimeException: Could not connect to the platform database (JNDI resource  'jdbc/kapow/platform') Please verify that you JNDI data source is configured correctly, and that your database server is started.

  at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)

  at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)

  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)

  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)

  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869)

  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)

  at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:409)

  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291)

  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)

  at com.kapowtech.scheduler.server.spring.SpringContextListener.contextInitialized(SpringContextListener.java:45)

  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4701)

  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167)

  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)

  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)

  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)

  at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:614)

  at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1823)

  at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

  at java.util.concurrent.FutureTask.run(Unknown Source)

  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

  at java.lang.Thread.run(Unknown Source)

 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'createPlatformDataSource' threw exception; nested exception is java.lang.RuntimeException: Could not connect to the platform database (JNDI resource  'jdbc/kapow/platform') Please verify that you JNDI data source is configured correctly, and that your database server is started.

  at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)

  at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582)

  ... 28 more

 Caused by: java.lang.RuntimeException: Could not connect to the platform database (JNDI resource  'jdbc/kapow/platform') Please verify that you JNDI data source is configured correctly, and that your database server is started.

  at com.kapowtech.scheduler.server.spring.ProductionDataSourceFactory.createPlatformDataSource(ProductionDataSourceFactory.java:55)

  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

  at java.lang.reflect.Method.invoke(Unknown Source)

  at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)

  ... 29 more


2、MC上でのDB設定について

  [管理]-[設定]-[データベースタイプ]-[MySql Database]ウィンドウでは以下の通りに設定くださいますようお願い致します。

  ①JDBC ドライバ

※Connector /J 8を利用する場合のみ変更が必要です。
Connector /J 5を利用する場合は変更する必要はありません。

com.mysql.cj.jdbc.Driver

  ②接続URLテンプレート

※serverTimezoneの指定が必要なのは、Connector /J 8を使用する場合のみです。
Connector /J 5を使用する場合は、serverTimezoneの指定をする必要はありません。
allowPublicKeyRetrieval=trueのみ追加してください。

jdbc:mysql://${ServerName}/${Schema}?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9&allowPublicKeyRetrieval=true


設定後の動作確認
 MC設定を変更後、[管理]-[RoboServer]-[任意のクラスタ・サーバー]-[データベース]-[MySql Database]ウィンドウでは、接続テストが成功することをご確認くださいますようお願い致します。


※MySQL8.0の場合、
・「allowPublicKeyRetrieval」の説明は以下にご参考ください。
https://dev.mysql.com/doc/connector-net/en/connector-net-8-0-connection-options.html


・「serverTimezone」を設定しないと、Tomcat環境構築手順書の「12.MCログ設定」>「5.DBの各種情報を入力したら、Testをクリック」を実施する際に、以下のエラーが発生する可能性があります。

エラーメッセージ

Error connecting to the database: The server time zone value '���� (�W����)' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

 

■参考

別のデータベース(Microsoft SQL Server 或いは Oracle Database)をご利用の場合、以下のナレッジにご参考ください。
Tomcat環境でMicrosoft SQL Serverを使用した場合の設定について
Tomcat環境でOracle Databaseを使用した場合の設定

 

■確認Ver

本ナレッジは、バージョン10.4.0.4 325で動作確認を実施しました。

0人中0人がこの記事が役に立ったと言っています

コメント

0件のコメント

記事コメントは受け付けていません。