web-dev-qa-db-fra.com

Implémentation de socket UNIX pour Java?

Je me rends compte que puisque les sockets UNIX sont spécifiques à la plate-forme, il doit y avoir du code non Java impliqué. Plus précisément, nous sommes intéressés à utiliser JDBC pour se connecter à une instance MySQL qui n'a que les sockets de domaine UNIX activés.

Il ne semble pas que cela soit pris en charge, mais d'après ce que j'ai lu, il devrait être au moins possible d'écrire une SocketFactory pour JDBC basée sur des sockets UNIX si nous pouvons trouver une implémentation décente des sockets UNIX pour Java.

Quelqu'un at-il essayé cela? Quelqu'un connaît-il une telle implémentation?

47
Adam Bellaire

Découvrez la bibliothèque JUDS. C'est une Java bibliothèque de socket de domaine Unix ...

https://github.com/mcfunley/juds

29
njsf

Vous pouvez utiliser junixsocket: https://github.com/kohlschutter/junixsocket

Il fournit déjà du code pour se connecter à MySQL depuis Java (Connector/J) via les sockets Unix.

Un gros avantage par rapport aux autres implémentations est que junixsocket utilise la norme Java API Socket.

24

Comme l'original kohlschutter/junixsocket , mentionné dans une autre réponse semble être mort, vous pouvez consulter ses fourches.

Surtout fiken/junixsocket semble prometteur. Son auteur a ajouté la prise en charge de la connexion à PostgreSQL via un socket Unix via pgjdbc , par exemple.

4
Greg Dubicki

Consultez la bibliothèque JNA. C'est une maison à mi-chemin entre le pur Java et le code natif JNI

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

3
Dave Cheney

Le pilote MariaDB JDBC prend désormais cela en charge et est compatible avec le pilote MySQL JDBC.

Utilisez une URL JDBC comme:

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

Il convient de noter que cette bibliothèque nécessite d'inclure la bibliothèque JNA car elle utilise JNA pour accéder aux sockets de domaine Unix natif. Cela fonctionne assez bien dans mes tests. J'ai vu des améliorations de vitesse sur le processeur lié Java processus du déchargement au code natif.

3
Robert

Le projet JNR (qui est une base lâche pour projet panama ) a une implémentation socket unix .

0
Brett Okken