Как загрузить dll внутри jar для интегрированной безопасности SQlServer - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно поддерживать встроенную защиту SQLServer в моем приложении, скрывать настройку java.library.path от пользователей и встраивать ее как часть инициализации класса.Я хотел бы встроить dll в мой dbclient.jar, и пользователь, использующий мой jar, не должен предоставлять свою собственную dll, если он хочет инициализировать способ интегрированной безопасности SQL Server.

Пример ниже работает, но этовынуждает пользователя указывать путь к библиотеке.

private void setLibraryPath(String path) {
        System.setProperty("java.library.path", path);

        try {
            final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
            sysPathsField.setAccessible(true);
            sysPathsField.set(null, null);
        } catch (Exception e) {
            throw new RaptorException("Failed to set library path ", e);
        }
    }

    public DBClientActor(
            DatabaseType databaseType,
            String userName,
            String password,
            String connectionUrl,
            String libraryPath) {
        Objects.requireNonNull(connectionUrl, "Connection URL cannot be null");
        if (databaseType != null && !connectionUrl.startsWith("jdbc")) {
            String[] connectionUrlParts = connectionUrl.split(":");
            if (databaseType != DatabaseType.KDB) {
                connectionUrl =
                        String.format(
                                databaseType.connectionUrlTemplate,
                                connectionUrlParts[0],
                                Integer.parseInt(connectionUrlParts[1]),
                                connectionUrlParts[2]);
            }
        }

        if (StringUtils.isNotEmpty(libraryPath)) {
            //C:/sqljdbc_auth/x64
            setLibraryPath(libraryPath);

        }
}

Я ожидаю, что пользователь сможет инициализировать предоставленный ему мой jar-клиент db без необходимости указывать свой путь к библиотеке.Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...