解決しようとしているちょっと変わった問題があります。Macで開発しています。jdbc を使用してデータベースに接続するコードを書いています。私は db サーバーに直接アクセスできません。アクセスするには、ssh でポート転送を設定する必要があります。これは、db サーバーが存在するネットワーク内のプロキシ サーバーに接続されます。私がプロキシするサーバーは Linux サーバーであり、データベースは Windows 上の MS Sql サーバーです。ポート転送を設定したら、SquirrelSQL などの DB ブラウジング ツールを使用してデータベースに接続できます。まったく同じ JDBC ドライバーを使用して、作成した jdbc コードを使用してデータベースに接続しようとすると、次のようになります。
Exception in thread "main" java.sql.SQLException: I/O Error: GSS Failed: Invalid name provided (Mechanism level: Cannot locate default realm)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:654)
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:371)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:233)
at sql.generator.SQLGenerator.main(SQLGenerator.java:80)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.io.IOException: GSS Failed: Invalid name provided (Mechanism level: Cannot locate default realm)
at net.sourceforge.jtds.jdbc.TdsCore.sendMSLoginPkt(TdsCore.java:1976)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:617)
... 10 more
Google での調査によると、これは Kerberos の問題である可能性があり、これまで対処する必要はありませんでしたが、それが正しいかどうかはわかりません。アプリケーションで複製する必要があるdbブラウザは何をしていますか?
ティア、アレックス