
# 以UDS方式连接
Unix domain socket用于同一主机上不同进程间的数据交换，通过添加junixsocket获取套接字工厂使用。
前置条件：引用junixsocket-core-XXX.jar、junixsocket-common-XXX.jar、junixsocket-native-common-XXX.jar，XXX为版本号，引用的这些jar包版本号需要一致。
以下以opengaussjdbc.jar为例，以UDS方式连接数据库的步骤如下：
1. 导入java.sql.Connection、java.sql.DriverManager、java.util.Properties。 
   此外，用户需要根据实际的应用场景，再导入其他的接口和类，详见[JDBC接口参考](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-42-0081.html#ZH-CN_TOPIC_0000002235338741)。
   ```
   import java.sql.Connection;
   import java.sql.DriverManager;
   import java.util.Properties;
   ```
   
   
2. 指定数据库的用户名和密码。 
   用户名和密码直接写到代码中有很大的安全风险，建议在环境变量中存放。并将用户名和密码设置为Properties对象的属性值。
   ```
   String userName = System.getenv("EXAMPLE_USERNAME_ENV");
   String password = System.getenv("EXAMPLE_PASSWORD_ENV");
   Properties properties = new Properties();
   properties.setProperty("user", userName);
   properties.setProperty("password", password);
   ```
   
   
3. 加载驱动。 
   1. 在代码运行工具（如IDE）中添加opengaussjdbc.jar包。
   
   2. 执行以下命令加载数据库驱动程序"com.huawei.opengauss.jdbc.Driver"。
   
   
   ```
   String driver = "com.huawei.opengauss.jdbc.Driver";
   Class.forName(driver);
   ```
   
   
4. 指定数据库的$ip、$port、database、socketFactory和socketFactoryArg。 
   $ip和$port需要用户自行修改，连接主机名database必须设置为"localhost"，socketFactory设置为org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg，socketFactoryArg设置为\[path-to-the-unix-socket\]，实现以UDS方式连接数据库。socketFactory和socketFactoryArg参数的具体说明，详见[socketFactory](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-42-1509.html#ZH-CN_TOPIC_0000002235338725__zh-cn_topic_0000002235101449_p5321664464)和[socketFactoryArg](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-42-1509.html#ZH-CN_TOPIC_0000002235338725__zh-cn_topic_0000002235101449_p932116654612)。
   ```
   Connection conn = DriverManager.getConnection("jdbc:opengauss://$ip:$port/localhost?socketFactory=org.newsclub.net.unix" +
           ".AFUNIXSocketFactory$FactoryArg&socketFactoryArg=[path-to-the-unix-socket]",properties);
   System.out.println("Connection Successful!");
   ```
   ![](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   socketFactoryArg参数配置根据真实路径进行配置，与GUC参数unix_socket_directory的值保持一致。
   
   
 
