سؤال

أدرك أنه نظرًا لأن مآخذ توصيل UNIX خاصة بالنظام الأساسي، فيجب أن يكون هناك بعض التعليمات البرمجية غير الخاصة بـ Java.على وجه التحديد، نحن مهتمون باستخدام JDBC للاتصال بمثيل MySQL الذي تم تمكين مآخذ مجال UNIX فقط فيه.

لا يبدو أن هذا مدعوم، ولكن مما قرأته يجب أن يكون من الممكن على الأقل كتابة مصنع المقبس لـ JDBC استنادًا إلى مقابس UNIX لو يمكننا العثور على تطبيق لائق لمآخذ توصيل UNIX لـ Java.

هل هناك اي احد جرب هذة؟هل يعرف أحد مثل هذا التنفيذ؟

هل كانت مفيدة؟

المحلول

والخروج على مكتبة JUDS. ومن مكتبة جافا يونكس المجال المقبس ...

https://github.com/mcfunley/juds

نصائح أخرى

هل يمكن استخدام junixsocket: https://github.com/kohlschutter/junixsocket

وويوفر بالفعل رمز لربط الخلية من جافا (موصل / J) عن طريق مقابس يونكس.

واحدة ميزة كبيرة مقارنة مع تطبيقات أخرى هي أن junixsocket يستخدم معيار API جافا المقبس.

كما الأصلي كولشاتر/junixsocket ، المذكور في إجابة أخرى يبدو أنه ميت، يمكنك التحقق من شوكاته.

خصوصاً fiken/junixsocket تبدو واعدة.أضاف مؤلفها دعمًا للاتصال بـ PostgreSQL باستخدام مقبس Unix عبر com.pgjdbc, ، على سبيل المثال.

وتحقق من مكتبة JNA. ومن منزل منتصف الطريق بين جافا نقية وJNI التعليمات البرمجية الأصلية

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

MariaDB لJDBC سائق الآن يدعم هذا و متوافق مع سائق الخلية JDBC.

استخدم رابط JDBC مثل:

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

والجدير بالذكر أن هذه المكتبة تتطلب بما في ذلك مكتبة JNA كما أنه يستخدم JNA للوصول الأم مآخذ نطاق يونيكس. أنه يعمل بشكل جيد جدا في بلدي التجارب. رأيت تحسينات في السرعة على وحدة المعالجة المركزية ملزمة العمليات جافا من افراغ إلى التعليمات البرمجية الأصلية.

الابن مشروع (والذي هو أساس فضفاض ل <لأ href = "http://openjdk.java صافي / المشروعات / بنما / "يختلط =" نوفولو "> مشروع بنما ) لديه مقبس يونيكس تنفيذ .

لقد كشفت بعض البحث على شبكة الانترنت المكتبة أبحث المفيدة التالية:

http://www.nfrese.net/software/gnu_net_local/overview.html

<وأ href = "http://web.archive.org/web/20080820110115/http://www.nfrese.net/software/gnu_net_local/doc/javadoc/index.html" يختلط = "نوفولو noreferrer" > ايباك رابط

والكتابة مصنع مأخذ يجب أن يكون من السهل بما فيه الكفاية. وبمجرد الانتهاء من ذلك، يمكنك تمريرها إلى برنامج التشغيل الخاص بك <لأ href = "http://mysql.telepac.pt/doc/refman/5.0/en/mxj-driver-launched.html" يختلط = "نوفولو noreferrer "> THUSLY. (<لأ href =" http://web.archive.org/web/20080820110115/http://www.nfrese.net/software/gnu_net_local/doc/javadoc/index.html " يختلط = "نوفولو noreferrer"> ايباك وصلة).

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import com.mysql.management.driverlaunched.ServerLauncherSocketFactory;

public class ConnectorMXJTestExample {
    public static void main(String[] args) throws Exception {
        String hostColonPort = "localhost:3336";

        String driver = com.mysql.jdbc.Driver.class.getName();
        String url = "jdbc:mysql://" + hostColonPort + "/" + "?"
                + "socketFactory="
                + ServerLauncherSocketFactory.class.getName();
        String userName = "root";
        String password = "";

        Class.forName(driver);
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url, userName, password);
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT VERSION()");
            rs.next();
            String version = rs.getString(1);
            rs.close();
            stmt.close();

            System.out.println("------------------------");
            System.out.println(version);
            System.out.println("------------------------");
        } finally {
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            ServerLauncherSocketFactory.shutdown(hostColonPort);
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top