none
Azure上にデプロイしたWebアプリからAzure SQL Databaseに接続できない RRS feed

  • 質問

  • 初めて質問させていただきます。個人でAzureを使用してWebアプリ開発の勉強をしております。


    JavaでWebアプリを開発しております。
    Azureにデプロイした状態でAzure SQL Databaseに接続しようとすると接続できないという状態です。
    自端末で実行し、同DBに接続することは可能ですが、Azureにデプロイすると接続することができなくなります。
    7月あたりにデプロイした時は問題なく接続できたのですが、開発を進める中で接続できなくなってしまいました。

    まだ始めたばかりでAzureにあげた後の不具合をログなどで確認する方法も分からなく、

    行き詰まってしまったため、質問させていただきました。
    (出来るだけお金をかけずにサービス利用をあまりしていないので分からないのかもしれませんが。。)

    後学のためにもAzure上にデプロイした後の不具合の確認方法も含めて、ご教授いただきたいです。

    2019年9月14日 7:37

すべての返信

  • 上記の情報だと事象が分かりにくいかと思いますので、判断材料となりそうな情報ありましたら記載をお願いします。
    可能な範囲となるかと思いますがお答えいたします、、

    2019年9月14日 7:43
  • エラーメッセージは出てないのですか? 出てたらそれをコピペしてここに書いてください。SQL Server が出しているエラーメッセージであれば、java とかは全く知らない人でも何が原因かの見当はつきそうな気がします。
    2019年9月14日 9:12
  • お早いご返信ありがとうございます、、!

    以下、上記事象が起こった際にブラウザ上に表示された、例外と原因内容を記載します。
    (個別でエラー用のページを用意していたことを忘れており、改めて確認してみました、、)

    ーーーーーーーーーーーーーーーー
    例外:
    javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter.doFilter(WebRequestTrackingFilter.java:138)

    原因:

    java.lang.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0),
    this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class [com.microsoft.sqlserver.jdbc.SQLServerDriver])
    ーーーーーーーーーーーーーーーー
    原因の内容を見る限りJDBCのバージョンが適切でないのが原因でしょうか、、

    2019年9月14日 13:12
  • Mavenプロジェクトとして作成しているので、pom.xmlで設定しているsqlserverのJDBCの情報も合わせて記載いたします。

    グループID:com.microsoft.sqlserver

    アーティファクトID:mssql-jdbc

    バージョン:7.2.2.jre8

    2019年9月14日 13:15
  • エラーメッセージに com.microsoft.sqlserver.jdbc.SQLServerDriver の calss file のバージョンが古いと書かれていますが、それは未確認なのでしょうか?

    Hebikuzure aka Murachi Akira

    2019年9月15日 2:06
  • Azure 上の Java Web アプリとか SQL Server とかは全く知らない自分がレスするのもなんですが・・・

    エラーメッセージは「SQLServerDriver はバージョン 55 でコンパイルされているが、バージョン 52 までしか認識しないランタイムで実行したからロードできない」と言ってます。

    エラーメッセージでググってみると java の世界では FAQ ようで、いろいろヒットします。例えば下記:

    How to Fix java.lang.UnsupportedClassVersionError
    https://www.baeldung.com/java-lang-unsupportedclassversion

    ちなみに、上の記事によると 52 = Java 8、55 = Java 11 だそうです。

    質問者さん、自分でググって調べてヒットする記事を読んで関係ありそうなところに対応を取った上で質問してますか? もしそうでなければ是非やってみましょう。

    以下は単なる想像ですが、

    > 7月あたりにデプロイした時は問題なく接続できたのですが、開発を進める中で接続できなくなってしまいました。

    ・・・だそうですので、質問者さんが何かしたのは間違いなさそうですが、ドライバーをアップデートしたとかいうことはないですか?

    > バージョン:7.2.2.jre8

    と書いてありましたが、mssql-jdbc-7.2.2.jre11.jar というのがあって、Requires a Java Runtime Environment (JRE) 11.0. Using JRE 10.0 or lower throws an exception. だそうです。

    System requirements for the JDBC driver
    https://docs.microsoft.com/ja-jp/sql/connect/jdbc/system-requirements-for-the-jdbc-driver?view=sql-server-2017


    • 編集済み SurferOnWww 2019年9月15日 2:54 誤字訂正
    2019年9月15日 2:49