IFSFile, когда пароль пользователя *NONE

Я столкнулся с некоторыми проблемами при попытке создать IFSFile с использованием объекта IFSFile из JT400.jar. Проблема, с которой я сталкиваюсь, заключается в том, что процесс, вызывающий JAVA, вызывается пользователем BATCH (без входа в систему на машине AS400).

Задано исключение

Пароль *NONE.:XXXXXX com.ibm.as400.access.AS400SecurityException: Пароль *NONE.:XXXXXX в com.ibm.as400.access.AS400ImplRemote.returnSecurityException(AS400ImplRemote.java:2219) в com.ibm.as400. access.CurrentUser.getUserInfo(CurrentUser.java:79) в com.ibm.as400.access.AS400ImplRemote.getPassword(AS400ImplRemote.java:1411) в com.ibm.as400.access.AS400ImplRemote.signon(AS400ImplRemote.java:2507) на com.ibm.as400.access.AS400.sendSignonRequest(AS400.java:3351) на com.ibm.as400.access.AS400.promptSignon(AS400.java:2938) на com.ibm.as400.access.AS400.signon (AS400.java:4246) по адресу com.ibm.as400.access.AS400.connectService(AS400.java:1336) по адресу com.ibm.as400.access.IFSFile.chooseImpl(IFSFile.java:630) по адресу com.ibm. as400.access.IFSFile.copyTo(IFSFile.java:729) в com.ibm.as400.access.IFSFile.copyTo(IFSFile.java:699)

Используемый код:

    AS400 as400 = new AS400("localhost");

    //Obtain the template path
    String templatePath ="/HOME/XXX/auth.txt";

    IFSFile templateAuth = new IFSFile(as400,templatePath); 
    templateAuth.copyTo(fileXML + ".xml");

Я проверил некоторые открытые темы, но никаких результатов не получил. (найдите ниже темы, прокомментированные)

JT400 Чтение файла из IFS с пользователем без пароля

Java IFSFile на тестировании Iseries на ПК

Существует любой вариант создания IFSFile, когда процесс вызывается пользователем BATCH (обратите внимание, что когда процесс вызывается пользователем с включенным входом в систему, процесс работает должным образом)

Мне нужно что-то похожее на то, что делается при создании JDBCAppender, объект JDBCAppender позволяет использовать setUser(null) и setPassword(null), чтобы позволить пакетным пользователям записывать в таблицу.

Спасибо всем!


person Jonathan Almonacid    schedule 27.11.2017    source источник
comment
Я не думаю, что это работает. Объект AS400 представляет сокетное соединение с IBM i, и ему необходимо войти на хост-сервер. JDBC и ODBC используют разные процессы. Если вам нужно, чтобы он работал как JDBC, почему бы вам не использовать JDBC? Вы могли бы потенциально написать хранимую процедуру в RPG для записи файла, а затем вызвать его через JDBC.   -  person jmarkmurphy    schedule 28.11.2017


Ответы (1)


Недавно у меня была похожая проблема при попытке использовать CommandCall, когда я работал под профилем с ПАРОЛЕМ *NONE. Я (в конце концов) решил это, используя собственный набор инструментов Java в /QIBM/ProdData/Java400/jt400ntv.jar (который оказался символической ссылкой). Мне не пришлось вносить никаких изменений в код:

    AS400 as400 = new AS400();
    CommandCall cc = new CommandCall(as400);
    String wrkenvvar_cmd = MessageFormat.format("ADDENVVAR ENVVAR('JAVA_HOME') VALUE(''{0}'') REPLACE(*YES)",path);
    boolean ok = cc.run(wrkenvvar_cmd);

Надеюсь, это поможет.

person M. A. Wheadon    schedule 18.09.2018