drno-reg
@drno-reg
см не кратко

Java Wrapper почему не доступны сетевые ресурсы?

Здравствуйте.

Для работы jar как сервиса windows попробовал использовать java wrapper.
Приложение запустилось нормально.
НО в приложении есть обращение к сетевой папке.
Приложение возвращает ошибку о том, что сетевая папка не существует, хотя она есть.
НО если приложение запустить не через wrapper, то все работает.
Пробовал сервис запускать от своего доменного пользователя (если запускать под ним, то все работает), результат отрицательный.
Пробовал также шару подключать как сетевой диск, НО результат тоже отрицательный.

Прошу помочь решить проблему.

Заранее благодарю за помощь.
  • Вопрос задан
  • 321 просмотр
Решения вопроса 1
drno-reg
@drno-reg Автор вопроса
см не кратко
Решил путем смены логики работы с Samba Linux.

перешел на fileToGet и BufferedInputStream/BufferedOutputStream

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("", Samba_User, Samba_Password);
            // папка откуда забирать
            String SambaURL = "smb://" + args[0];
            // папка куда копировать
            File destinationFolder = new File(args[1]);
            File file = new File(args[2]);

            System.out.println("Запущено с параметрами.");
            System.out.println("Samba с файлами: " + SambaURL);
            System.out.println("Локальная папка с файлами для обработки: " + destinationFolder);
            System.out.println("Log работы в файл: " + file);
            System.out.println("Чтение файлов в папке Samba: " + SambaURL);
            // создаем папку если ее нет
            if (!destinationFolder.exists()) {
                destinationFolder.mkdirs();
            }
            SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS_");
            SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss dd.MM.yyyy");
            Date date = new Date();
            int StartTime = (int) new Date().getTime();
            String StartDateTime = dateFormat.format(date);
            SmbFile dir = new SmbFile(SambaURL, auth);
            for (SmbFile f : dir.listFiles()) {

                try {

                    child = new File(destinationFolder + "/" + f.getName());
                    fileToGet = new SmbFile(SambaURL + f.getName(), auth);
                    fileToGet.connect();

                    in = new BufferedInputStream(new SmbFileInputStream(fileToGet));
                    out = new BufferedOutputStream(new FileOutputStream(child));

                    byte[] buffer = new byte[4096];
                    int len = 0; //Read length
                    while ((len = in.read(buffer, 0, buffer.length)) != -1) {
                        out.write(buffer, 0, len);
                    }
                    out.flush(); //The refresh buffer output stream
                    try {
                        printlnAppen(file, "[" + StartDateTime + "]: Скопирован файл - " + f.getName() + ".");
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                } catch (Exception e) {
                    String msg = "The error occurred: " + e.getLocalizedMessage();
                    System.out.println(msg);
                } finally {
                    try {
                        if (out != null) {
                            out.close();
                        }
                        if (in != null) {
                            in.close();
                        }
                    } catch (Exception e) {
                    }
                }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@generalx
Системный администратор
а попробуйте папку сделать сетевым диском.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽