Можно ли вернуть список объектов из AS400 с помощью Java?

Я пытаюсь получить список объектов (независимо от типа) из AS400 на основе имени библиотеки.

Я попытался использовать WRKOBJ LibName / * all с помощью вызова команды, но полученные сообщения об ошибках указывают на то, что я не могу использовать команду WRKOBJ в этом параметре (никакой другой отзыв не предоставлен).

Текущий код:

    StringBuffer getObjects = new StringBuffer("wrkobj " + library + "/*all");
    CommandCall call = new CommandCall(as400);

    if(call.run(getObjects.toString())){

            objectsFound = true;
            logger.debug("Lib: " + library + "  returned objects");

    }else{

            // Hold error message to display in joption pane
            errorMessages = new StringBuffer();
            // Show the messages (returned whether or not there was an error.)
            messagelist = call.getMessageList();

            for (int i = 0; i < messagelist.length; i++){

                // Show each message.
                logger.debug(messagelist[i].getText());
                errorMessages.append(messagelist[i].getText() + "\n");

            }
        }

Я все еще ищу решение этой проблемы, поэтому, если я найду что-нибудь, я опубликую это, но любой, у кого есть какие-либо идеи или может указать мне правильное направление, был бы признателен!


person Nathan    schedule 10.07.2014    source источник
comment
Причина, по которой код с WRKOBJ не работает, заключается в том, что вывод WRKOBJ не попадает в STDOUT, поэтому вы не можете извлечь его оттуда.   -  person Buck Calabro    schedule 10.07.2014
comment
Ах, большое спасибо за это! Я думал, используя AS400Message [] messagelist = call.getMessageList (); я могу получить предметы таким образом   -  person Nathan    schedule 10.07.2014
comment
Обратите внимание, что по определению все вызовы CommandCall и ProgramCall выполняются в пакетном режиме. Таким образом нельзя запускать интерактивные программы.   -  person Thorbjørn Ravn Andersen    schedule 11.07.2014


Ответы (3)


Да, но для этого нужно использовать jt400.jar (что и покрывает тег jtopen) "

Если вам просто нужны имена, класс IFSFile поддерживает перечисление имен файлов в объектах QSYS.

person Thorbjørn Ravn Andersen    schedule 10.07.2014
comment
Отлично, я попробую! - person Nathan; 10.07.2014
comment
Пробовал с IFSPath и работает нормально, нужно использовать IFSFile dir = new IFSFile (as400, QSYS.LIB); но это возвращает избыточное количество файлов (очевидно), поэтому просто назначил QSYS.LIB / LibName.LIB вместо этого для получения определенных файлов. Очень признателен за помощь !! - person Nathan; 10.07.2014
comment
Если вам нужна дополнительная информация, есть еще один API, который можно спросить глубже, но я так и не смог его использовать. Я могу порекомендовать список рассылки среднего уровня в качестве альтернативы SO. archive.midrange.com/java400-l/index.htm - person Thorbjørn Ravn Andersen; 10.07.2014

Может быть, лучше использовать класс JT400 ObjectList? Он специально создан для этого.

person David G    schedule 14.07.2014
comment
Ах, большое спасибо за этот @david, это дает больше контроля, поскольку конструкторы выглядят так, как будто они могут сортировать по типу объектов. Спасибо большое ! - person Nathan; 14.07.2014

Вы также можете использовать JDBC для получения более подробной информации об объектах в библиотеке. Вот пример использования клиента JDBC, включенного в JTOpen.

~> java -cp jt400.jar com.ibm.as400.access.jdbcClient.Main jdbc:as400:SYSTEMNAME USERID PASSWORD  
>call QSYS.QCMDEXC(' DSPOBJD OBJ(EBERHARD/*ALL) OBJTYPE(*ALL) DETAIL(*SERVICE) OUTPUT(*OUTFILE) OUTFILE(QTEMP/OBJECTS)                  ', 000000100.00000)
>select * from qtemp.objects fetch first 10 rows only
ODDCEN,ODDDAT,ODDTIM,ODLBNM,ODOBNM,ODOBTP,ODOBAT,ODOBFR,ODOBSZ,ODOBTX,ODOBLK,ODOBDM,ODCCEN,ODCDAT,ODCTIM,ODOBOW,ODSCEN,ODSDAT,ODSTIM,ODSCMD,ODSSZE,ODSSLT,ODSDEV,ODSV01,ODSV02,ODSV03,ODSV04,ODSV05,ODSV06,ODSV07,ODSV08,ODSV09,ODSV10,ODSVMR,ODRCEN,ODRDAT,ODRTIM,ODCPFL,ODSRCF,ODSRCL,ODSRCM,ODSRCC,ODSRCD,ODSRCT,ODCMNM,ODCMVR,ODOBLV,ODUMOD,ODPPNM,ODPPVR,ODPCNR,ODAPAR,ODSSQN,ODLCEN,ODLDAT,ODLTIM,ODSFIL,ODSFLB,ODASP,ODLBL,ODPTFN,ODOBSY,ODCRTU,ODCRTS,ODUUPD,ODUCEN,ODUDAT,ODUCNT,ODTCEN,ODTDAT,ODODMN,ODCPVR,ODCVRM,ODPVRM,ODCPRS,ODOASP,ODAAPI,ODAPIC,ODUATR,ODACEN,ODADAT,ODATIM,ODAUDT,ODSIZU,ODBPUN,ODPGP,ODSSQL,ODOSIG,ODJRST,ODJRNM,ODJRLB,ODJRIM,ODJREN,ODJRCN,ODJRDT,ODJRTI,ODSSZU,ODSBPU,ODASPL,ODLASN,ODOADN,ODLADN,ODSSIG,ODMSIG,ODASSZ,ODALGN,ODOADG,ODLADG,ODSJRA,ODSJRL,ODSJRD,ODSJRG,ODJRJF
1,072514,164203,EBERHARD  ,BIGLOBOUT ,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUT                          ,0,0,1,010314,120641,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,010314,120641,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,2, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLOBOUTX,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUTX                         ,0,0,1,011714,144329,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144329,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,021814,2, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00001,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUT22                        ,0,0,1,011714,143919,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,143919,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00002,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUT10                        ,0,0,1,011714,143948,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,143948,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00003,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT12                        ,0,0,1,011714,144020,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144020,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00004,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT13                        ,0,0,1,011714,144049,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144049,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00005,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT16                        ,0,0,1,011714,144103,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144103,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00006,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT20                        ,0,0,1,011714,144134,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144134,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 

В этом примере последний параметр вызова QSYS.QCMDEXC - это длина первого параметра. QSYS.QCMDEXC просто вызывает команду DSPBOJD, которая выгружает информацию об объекте в библиотеке в файл QTEMP.OBJECT. Оттуда мы просто запрашиваем файл с помощью оператора select, чтобы получить информацию.

person jweberhard    schedule 25.07.2014