web-dev-qa-db-ja.com

JavaのUNIXソケット実装?

UNIXソケットはプラットフォーム固有であるため、Java以外のコードが必要になることに気づきました。具体的には、JDBCを使用して、UNIXドメインソケットのみが有効になっているMySQLインスタンスに接続することに関心があります。

これはサポートされているようには見えませんが、私が読んだことから、UNIXソケットに基づいてJDBCのSocketFactoryを書くことは少なくとも可能であるはずですif UNIXソケットの適切な実装を見つけることができますJava用。

誰かがこれを試しましたか?誰かがそのような実装を知っていますか?

47
Adam Bellaire

JUDSライブラリーを調べてください。 Java Unixドメインソケットライブラリです...

https://github.com/mcfunley/juds

29
njsf

Junixsocketを使用できます: https://github.com/kohlschutter/junixsocket

Unixソケットを介してJava(Connector/J)からMySQLに接続するためのコードをすでに提供しています。

他の実装と比較した1つの大きな利点は、junixsocketが標準のJava Socket APIを使用することです。

元の kohlschutter/junixsocket は、別の回答で言及されているように死んでいるようですので、そのフォークを確認できます。

特にfiken/junixsocketは有望に見えます。その作者は、たとえば pgjdbc を介してUNIXソケットを使用したPostgreSQLへの接続のサポートを追加しました。

4
Greg Dubicki

JNAライブラリーを調べてください。純粋なJavaとJNIネイティブコードの中間の家です。

https://github.com/twall/jna/

3
Dave Cheney

MariaDB JDBCドライバー はこれをサポートし、MySQL JDBCドライバーと互換性があります。

次のようなJDBC URLを使用します。

jdbc:mariadb://localhost:3306/revmgt?localSocket=/var/run/mysqld/mysqld.sock

このライブラリはJNAを使用してネイティブUNIXドメインソケットにアクセスするため、JNAライブラリを含める必要があることに注意してください。私のテストではかなりうまくいきます。 CPUバウンドJava=オフロードからネイティブコードへのプロセス)の速度が向上しました。

3
Robert

JNRプロジェクト (これは プロジェクトパナマ のルーズベースです)には nixソケット 実装があります。

0
Brett Okken