Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / set NLS_LANG / 25 сообщений из 41, страница 1 из 2
12.07.2012, 16:44:42
    #37876960
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Выполняю внешнюю программу (а именно sqlplus) из Java-приложения с помощью ant-овского класса Commandline.
Перед запуском необходимо установить переменную окружения Windows %NLS_LANG%. Не могу понять как это сделать.

До этого запускал getRuntime'ом -
Код: java
1.
"cmd.exe /c set NLS_LANG=" + getNLSLang() + " && sqlplus.exe параметры запуска"


работало.
Сейчас такое не прокатывает...
...
Рейтинг: 0 / 0
12.07.2012, 17:11:32
    #37877012
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим Н
Код: java
1.
"cmd.exe /c set NLS_LANG=" + getNLSLang() + " && sqlplus.exe параметры запуска"

работало.
Сейчас такое не прокатывает...В строке, которую "видит" cmd должен быть один амперсанд.
Поэтому курите доку Commandline. Если, например, он сам себе цмд, то строка должна измениться до "... ^& ...".

P.S. Вам точно нужен nls_lang?
Вы уверены, что "alter session set nls_date_format/nls_timestamp_format = 'чего надо';" внутри скрипта не сможет решить вашу проблему?
Ну а сами скрипты? Они настолько sqlplus-specific, что их нельзя скормить средствами jdbc через штатный ojdbc.jar?

P.P.S. А в чём вообще проблема установить правильный nls_lang перед ява-приложения???
...
Рейтинг: 0 / 0
12.07.2012, 17:22:12
    #37877036
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. SidorovВы уверены, что "alter session set nls_date_format/nls_timestamp_format = 'чего надо';" внутри скрипта не сможет решить вашу проблему?
Да, на 100%, не то

Basil A. SidorovНу а сами скрипты? Они настолько sqlplus-specific, что их нельзя скормить средствами jdbc через штатный ojdbc.jar?

Да, жестко завязаны

Basil A. SidorovP.P.S. А в чём вообще проблема установить правильный nls_lang перед ява-приложения???

Это было бы отличным решением, но этот код является часть самодельного ant-плагина, который в свою очередь вызывается из ant-сценария, а сам сценарий дергается из Windows-планировщика вот таким образом:

Код: java
1.
"C:\Program Files\Java\jre6\bin\java.exe"  -Xmx256m -cp "D:\Ant\lib\ant-launcher.jar" "-Dant.home=D:\Ant" org.apache.tools.ant.launch.Launcher -f "D:\ant_script.xml"
...
Рейтинг: 0 / 0
12.07.2012, 18:05:02
    #37877147
Adva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим Н,

почему бы из планировщика не запустить bat файл, в котором будут прописаны все переменные откуда уже будет запускаться java ?
...
Рейтинг: 0 / 0
12.07.2012, 18:07:57
    #37877151
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим На сам сценарий дергается из Windows-планировщика вот таким образом:
Код: java
1.
"C:\Program Files\Java\jre6\bin\java.exe"  -Xmx256m -cp "D:\Ant\lib\ant-launcher.jar" "-Dant.home=D:\Ant" org.apache.tools.ant.launch.Launcher -f "D:\ant_script.xml"

Я могу сказать, что из штатного планировщика одинаково хорошо дёргается и cmd, содержащий:
Код: sql
1.
2.
3.
4.
5.
@echo off
setlocal
set NLS_LANG=чего.надо
...
endlocal

и комстрока вида:
Код: sql
1.
cmd /cset NLS_LANG=чего.надо&...
...
Рейтинг: 0 / 0
12.07.2012, 21:53:02
    #37877360
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
AdvaМаксим Н,

почему бы из планировщика не запустить bat файл, в котором будут прописаны все переменные откуда уже будет запускаться java ?
Идея отличная, но запускаются задания от специального пользователя ОС, а для запуска батников необходимо выдать права этому пользователю на командный процессор cmd.exe (лежащий где то в %windir%), что делать в данном случае крайне не желательно
...
Рейтинг: 0 / 0
12.07.2012, 21:55:02
    #37877363
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. Sidorov,
Та же ситуация, что описал в предыдущем посте - cmd не доступен для этого пользователя.
...
Рейтинг: 0 / 0
13.07.2012, 00:39:54
    #37877458
Adva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Еще есть варианты:

1. Написать SET NLS_LANG=... && java -Xmx...
2. Написать java -DNLS_LANG=.. -Xmx...
...
Рейтинг: 0 / 0
13.07.2012, 08:47:10
    #37877581
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим НAdvaМаксим Н,

почему бы из планировщика не запустить bat файл, в котором будут прописаны все переменные откуда уже будет запускаться java ?
Идея отличная, но запускаются задания от специального пользователя ОС, а для запуска батников необходимо выдать права этому пользователю на командный процессор cmd.exe (лежащий где то в %windir%), что делать в данном случае крайне не желательно
И типа скопировать его в доступную папку вера не позволяет?
...
Рейтинг: 0 / 0
13.07.2012, 09:04:32
    #37877596
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
GarrickМаксим Нпропущено...

Идея отличная, но запускаются задания от специального пользователя ОС, а для запуска батников необходимо выдать права этому пользователю на командный процессор cmd.exe (лежащий где то в %windir%), что делать в данном случае крайне не желательно
И типа скопировать его в доступную папку вера не позволяет?
Позволяет, просто хотел найти более гибкий способ указать переменную
...
Рейтинг: 0 / 0
13.07.2012, 11:09:39
    #37877780
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Всем спасибо, разобрался с Ant'овским Commandline:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        ...
        Commandline c = (Commandline) cmdl.clone();
        c.setExecutable("cmd.exe");
        c.createArgument().setValue("/c");
        c.createArgument().setValue("set NLS_LANG=RUSSIAN_RUSSIA.CL8MSWIN1251");
        c.createArgument().setValue("&");
        c.createArgument().setValue("sqlplus");
        c.createArgument().setValue("user@db/pwd");
        c.createArgument().setValue("@I:\\sql\\select_NLS\\test.sql");
        ...
...
Рейтинг: 0 / 0
13.07.2012, 16:31:57
    #37878597
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим Нcmd не доступен для этого пользователя.Установите переменные среды для конкретного пользователя.
Как записать переменную в раздел Environment нужного пользователя - разберётесь?
...
Рейтинг: 0 / 0
13.07.2012, 16:33:37
    #37878604
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим НВсем спасибо, разобрался с Ant'овским Commandline:
Код: java
1.
        c.setExecutable("cmd.exe");

Обманывать - нехорошо.
...
Рейтинг: 0 / 0
15.07.2012, 00:05:20
    #37879579
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. SidorovМаксим НВсем спасибо, разобрался с Ant'овским Commandline:
Код: java
1.
        c.setExecutable("cmd.exe");

Обманывать - нехорошо.
...
Рейтинг: 0 / 0
15.07.2012, 00:06:32
    #37879580
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим НBasil A. Sidorovпропущено...
Обманывать - нехорошо.
Почему вы так решили?
У меня работает, могу код целиком показать.
...
Рейтинг: 0 / 0
15.07.2012, 00:08:27
    #37879581
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим НПочему вы так решили?Потому, что чуть выше вы утверждали, что специальный пользователь прав на cmd.exe не имеет.
...
Рейтинг: 0 / 0
15.07.2012, 13:52:13
    #37879782
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. SidorovМаксим НПочему вы так решили?Потому, что чуть выше вы утверждали, что специальный пользователь прав на cmd.exe не имеет.
Так и есть, это я для пример такой код выложил, путь к командному процессору передается во входном параметре, и при запуске из планировщика код выглядет примерно так:
Код: java
1.
c.setExecutable("D:\utils\cmd.exe");


Соответсвенно права на эту папку у пользователя есть.
...
Рейтинг: 0 / 0
15.07.2012, 20:04:41
    #37879936
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим Н
Код: java
1.
c.setExecutable("D:\utils\cmd.exe");

Соответсвенно права на эту папку у пользователя есть.Читал я в детстве журнал "Техника-молодёжи" и была там (однажды) рубрика "Зачем просто, когда можно сложно?". Всё в картинках. Прикольно и понятно.
А вот ваших хитровывернутых конструкций - не понимаю.
...
Рейтинг: 0 / 0
15.07.2012, 22:23:37
    #37879991
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. SidorovА вот ваших хитровывернутых конструкций - не понимаю.да
...
Рейтинг: 0 / 0
15.07.2012, 23:32:45
    #37880041
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. Sidorov, grasoff.net
Извиняюсь, что ввел в заблуждение.
Во первых, конечно же не
Код: java
1.
c.setExecutable("D:\utils\cmd.exe");


а
Код: java
1.
2.
3.
...
c.setExecutable("D:\\utils\\cmd.exe");
...



Этим я хотел сказать, что имеется копия стандартного виндового командного процессора, взятого напрямую из папки system (если не ошибаюсь) и положенная в специальную папку, на файлы которой есть права у пользователя. Соответсвенного с помощью именно этого командного процессора и устанавливается переменная окружения, а затем через символ && запускается sqlplus.
...
Рейтинг: 0 / 0
16.07.2012, 19:07:24
    #37881205
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим НЭтим я хотел сказать, что имеется копия стандартного виндового командного процессораОстрый всплеск толстого английского юмора?
Если у вас (пофигу где) имеется cmd.exe, то накойхер (фамилие такое) вы мутите мутотень в анте, вместо того, чтобы дать системному администратору выполнить его (сисадмина) прямые обязанности???
...
Рейтинг: 0 / 0
16.07.2012, 22:13:48
    #37881377
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. SidorovМаксим НЭтим я хотел сказать, что имеется копия стандартного виндового командного процессораОстрый всплеск толстого английского юмора?
Если у вас (пофигу где) имеется cmd.exe, то накойхер (фамилие такое) вы мутите мутотень в анте, вместо того, чтобы дать системному администратору выполнить его (сисадмина) прямые обязанности???да! )
...
Рейтинг: 0 / 0
16.07.2012, 22:33:23
    #37881398
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Basil A. SidorovМаксим НЭтим я хотел сказать, что имеется копия стандартного виндового командного процессораОстрый всплеск толстого английского юмора?
Если у вас (пофигу где) имеется cmd.exe, то накойхер (фамилие такое) вы мутите мутотень в анте, вместо того, чтобы дать системному администратору выполнить его (сисадмина) прямые обязанности???
Админ админу рознь, особенно когда их несколько десятков, поэтому генерируется сценарий и по расписанию выполняется, причем сценарий может быть довольно сложным (помимо sql-скриптов хватает еще файловых операций, логирования и т.д.) и критичным к времени выполнения.
...
Рейтинг: 0 / 0
17.07.2012, 09:19:31
    #37881655
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
Максим Нпричем сценарий может быть довольно сложныма ант зачем? powershell не хватает?
...
Рейтинг: 0 / 0
17.07.2012, 13:20:19
    #37882115
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set NLS_LANG
grasoff.netМаксим Нпричем сценарий может быть довольно сложныма ант зачем? powershell не хватает?
понятные xml-сценарии,
расширяемость плагинами,
логирование
и еще много чего интересного
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / set NLS_LANG / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]