最初に
Mulesoftのトレーニングでは、テストデータがプリセットされたデータベースにDerbyを利用しています。トレーニングでは順を追って解説されているため、一つ一つ動作するように設定する必要があり、適当にマニュアルを読みながら『ささっ』と設定すると、ドツボにはまってしまうというお話です。(当たり前ですね!!)
いくつか初心者には躓くポイントがあり、備忘録のために共有します。
躓くポイント
- DerbyのJDBCドライバを設定する場合はバージョンに注意!!(最新はダメ)
- 接続テスト実行時の依存エラーは依存ライブラリにDerbyを追加!!
内容
ポイント2つについて、説明してきいきます。
DerbyのJDBCドライバを設定する場合はバージョンに注意!!(最新はダメ)
よく読まずに、最新バージョンの『10.15.1.3』を設定すると『JDBCドライバがありません!』と怒られます。
一つ下の、『10.14.2.0』を指定する必要があります。
MuleプロジェクトのプロジェクトライブラリフォルダのJARの中身を確認しても、『org.apache.derby.jdbc』というパッケージがなく、『org.apache.derby.jdbc.ClientDriver』がありませんでした。
Derbyについてあまり詳しくないですが、マニュフェストで定義されているドライバーらしきクラスを指定しても、クラスローダでロードできないエラーが発生します。(いつもならここで諦めます。)
一旦落ち着いて、一つ下のバージョンの『10.14.2.0』を指定してすると、指定のJDBCドライバ名がロードできるようになりました。
接続テスト実行時の依存エラーは依存ライブラリにDerbyを追加!!
接続テスト実行時に、下記の依存エラーが発生しました。
org.mule.tooling.client.api.exception.ToolingException: Error while creating application from url: file:/Users/kawaguchimakototakeshi/Documents/workspace_as/.tooling/training4-american-wsd80d0166-0a3b-4d3f-a388-9520a8e9afb1/
org.mule.runtime.api.exception.MuleRuntimeException: Dependency org.apache.derby:derby could not be found within the artifact training4-american-wsd80d0166-0a3b-4d3f-a388-9520a8e9afb1. It must be declared within the maven dependencies of the artifact.
at org.mule.tooling.client.internal.DefaultToolingRuntimeClient.newToolingArtifact(DefaultToolingRuntimeClient.java:193)
at org.mule.tooling.client.internal.DefaultToolingRuntimeClient.invokeMethod(DefaultToolingRuntimeClient.java:458)
at sun.reflect.GeneratedMethodAccessor350.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mule.tooling.client.bootstrap.internal.reflection.Dispatcher$ToolingCallable.call(Dispatcher.java:232)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
エラー内容から『Dependency org.apache.derby:derby』と記載されているので、MuleプロジェクトのPom.xmlの依存ライブラリの『DerbyClient』の上に下記の依存ライブラリを追加すると解消されます。
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.14.2.0</version>
</dependency>
まとめ
普通ならば、すぐに諦めるところですが、、、資格試験を受けなければいけないこともあり、『グッ!!』と我慢しました。
Anypoint Studioを利用したMuleアプリケーション開発では、たびたびJava開発で見かけるエラーが発生するので、MavenのJavaアプリケーションとしてエラーの切り分けを考えた方が良さそうです。。
次から『スッ』と解決できれば楽ですねーでは。