04 - System Administration

ObjectConnect over TCP/IP

A distanza di due anni e mezzo dal mio post Trasferire oggetti con ObjectConnect ed Enterprise Extender, sono finalmente riuscito a provare il “nuovo” ObjectConnect over TCP/IP.

La configurazione di questa versione di ObjectConnect risulta più semplice rispetto alla versione “over Enterprise Extender”. L’unica complicazione è la configurazione dei certificati SSL/TSL da realizzaris con il Digital Certificate Manager.

Prerequisiti

  • ObjectConnect installato sui propri sistemi IBM i (product id 5770SS1 – option 22)
  • sistema operativo IBM i V7R4 (con la PTF SI73777) o superiore.

Nota. In IBM i V7R4 con PTF SI73777 (“aggiunta del supporto TCP nativo ai comandi CL di ObjectConnect”) ObjectConnect è stato reso compatibile con TCP/IP (nuovo server TCP/IP *OBJC) liberandolo da Enterprise Extender.

Configurazione

Ruoli:

  • Client: è il sistema dove vengono eseguiti i comandi SAVRSTxxx (dove vengono salvati i dati);
  • Server: è il sistema dove viene eseguito il ripristino dei dati salvati sul sistema client.

DCM@Server

Sul sistema Server è necessario assegnare il certificato del server all’applicazione QIBM_QSVR_OBJC_SERVER.

Apriamo un browser e colleghiamoci al DCM tramite l’url http://<IBMi>:2001/dcm quindi apriamo il certificate store di sistema (*SYSTEM):

Cerchiamo le applicazioni QIBM_QSVR_OBJC e assegniamo un certificato di tipo server all’applicazione QIBM_QSVR_OBJC_SERVER

Da riga comandi, configuriamo il server Object Connect con il comando:

- CHGOBJCA

                      Change ObjectConnect Attrs (CHGOBJCA)                     
                                                                                
 Immettere le scelte e premere Invio.                                           
                                                                                
 Avvio automatico del server  . .   *YES          *SAME, *YES, *NO              
 Numero di lavori del server:                                                   
   Minimo . . . . . . . . . . . .   1             1-999, *SAME, *DFT            
   Massimo  . . . . . . . . . . .   5             1-32767, *SAME, *DFT          
 Tempific. inattività server  . .   30            1-1440, *SAME, *DFT           
 Descrizione sottosistema . . . .   QUSRWRK       Nome, *SAME, *DFT             
   Libreria . . . . . . . . . . .     QSYS        Nome                          
 Authentication type  . . . . . .   *ANY          *SAME, *ANY, *PASSWORD...     
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                          Fine  
 F3=Fine   F4=Richiesta   F5=Rivisualizzazione   F12=Annullamento               
 F13=Come usare lo schermo                       F24=Altri tasti                
                                                                                

Nota. Lasciando il tipo di autenticazione proposta dal comando (*ANY) è possibile autenticarsi sia con user e password che tramite Kerberos (ADDKRBTKT).

A questo punto, avviamo il server Object Connect:

- STRTCPSVR SERVER(*OBJC)

Il lavoro 009333/QOBJC/QOBJCRCV è stato sottomesso alla coda lavori
  QUSRNOMAX nella libreria QSYS.
Si sta avviando il server OBJC.
Il lavoro 009333/QOBJC/QOBJCRCV è stato sottomesso alla coda lavori
  QUSRNOMAX nella libreria QSYS.
Si sta avviando il server OBJC.
ID messaggio . . . . . :   TCP1A0F       Gravità  . . . . . . . :   00
Tipo di messaggio  . . :   Completamento
Data invio . . . . . . :   24/04/24      Ora invio  . . . . . . :   13:17:10

Messaggio . . . :   Si sta avviando il server OBJC.

Nota. La mancata associazione di un server certificate all’applicazione QIBM_QSVR_OBJC_SERVER provoca l’errore “CPDBC82: No certificate is available for TLS processing”:

ID messaggio . . . . . :   CPDBC82       Gravità  . . . . . . . :   10       
Tipo di messaggio  . . :   Diagnostica                                       
Data invio . . . . . . :   26/04/24      Ora invio  . . . . . . :   09:00:32 
                                                                             
Messaggio . . . :   Non è disponibile alcun certificato per l'elaborazione   
  TLS.                                                                       
Causa . . . . . :   Durante una procedura di riconoscimento TLS (Transport   
  Layer Security) non è disponibile per l'uso un certificato o una chiave    
  privata. Uno degli endpoint nella negoziazione TLS non aveva un certificato
  nel momento in cui era stato richiesto.                                    
Correzione . . . :   Se non c'è la chiave privata si deve usare il DCM       
  (Digital Certificate Manager) per generare una coppia di chiavi            
  pubblica/privata e quindi richiedere il certificato utilizzando la nuova   
  coppia di chiavi generate. Se viene omesso il certificato ed è richiesto da
  questo sistema operativo, è necessario configurare o fornire un certificato
  per l'applicazione abilitata TLS. La creazione, specifica e configurazione
  vengono effettuate utilizzando il DCM. Se il problema è causato dal fatto   
  che l'endpoint remoto non può fornire un certificato, si deve configurare,  
  per utilizzare un certificato, tale endpoint.Se si stanno usando le API     
  (Application Programming Interface) SSL_, SSL_Init() o                      
  SSL_Init_Application(), tali API vengono usate per istituire un certificato 
  e una chiave privata che sono utilizzate durante la procedura di            
  riconoscimento.  Deve essere eseguita, prima di qualsiasi uso di            
  SSL_Handshake(), una chiamata riuscita a SSL_Init() o                       
  SSL_Init_Application(). Se si stanno usando le API GSK, le API              
  gsk_attribute_set_buffer(GSK_KEYRING_FILE/GSK_KEYRING_PW) o                 
  gsk_attribute_set_buffer(GSK_IBMI_APPLICATION_ID) vengono usate per         
  istituire un certificato e una chiave privata che sono utilizzate durante la
  procedura di riconoscimento. Deve essere eseguita, prima di un qualsiasi uso
  di gsk_secure_soc_init(), una chiamata riuscita a                          
  successfulgsk_attribute_set_buffer(GSK_KEYRING_FILE/GSK_KEYRING_PW) o      
  gsk_attribute_set_buffer(GSK_IBMI_APPLICATION_ID). Se l'applicazione sta   
  usando l'API SSL_Init_Application o                                        
  gsk_attribute_set_buffer(GSK_IBMI_APPLICATION_ID), assicurarsi che il      
  certificato interessato sia stato associato all'applicazione usando il DCM 
  (Digital Certificate Manager) o l'API relativa all'applicazione di         
  registrazione per l'uso del certificato (OPM, QSYRGAP; ILE,                
  QsyRegisterAppForCertUse). Se l'applicazione sta utilizzando l'API SSL_Init
  o gsk_attribute_set_buffer(GSK_KEYRING_FILE), assicurarsi che la           
  memorizzazione certificato specificata sull'API contenga il certificato.   

Verifichiamo l’attivazione dei lavori server:

- WRKACTJOB SBS(QUSRWRK) JOB(QOBJC*)

                    Utente                                                      
 Opz  Sottosis/Lav  corrente    Tipo  % CPU  Funzione        Stato              
        QOBJCRCV    QOBJC       BCH     0,0  PGM-QSVRRCV     SELW
        QOBJCSVR    QOBJC       BCI     0,0  PGM-QSVRSVR     TIMW

Nota. Il comando STRTCPSVR avvia il lavoro QOBJCRCV che, a sua volta, avvia il lavoro QOBJCSVR:

 Lavoro . .: QOBJCRCV      Utente . . : QOBJC         Numero . . . . : 009333   
                                                                                
  >> CALL PGM(QSR/QSVRRCV)                                                      
     Job 009334/QOBJC/QOBJCSVR started.                                         

Verifichiamo, inoltre, lo stato della porta 9841:

- NETSTAT OPTION(*CNN)

F15=Sottoinsieme

                        Sottoinsieme elenco connessioni                         
                                                                                
 Digitare le scelte e premere Invio.                                            
                                                                                
 Intervallo indirizzi internet locali:                                          
   Valore inferiore . . . . . .   *                 Indirizzo IP, *             
   Valore superiore . . . . . .   *ONLY             Indirizzo IP, *ONLY         
 Intervallo porta locale:                                                       
   Valore inferiore . . . . . .   9841              1-65535, *                  
   Valore superiore . . . . . .   *ONLY             1-65535, *ONLY              
                                                                                
 Intervallo indirizzi internet remoti:                                          
   Valore inferiore . . . . . .   *                 Indirizzo IP, *             
   Valore superiore . . . . . .   *ONLY             Indirizzo IP, *ONLY         
 Intervallo porta remota:                                                       
   Valore inferiore . . . . . .   *                 1-65535, *                  
   Valore superiore . . . . . .   *ONLY             1-65535, *ONLY              
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 F3=Fine   F4=Richiesta   F9=Riga comandi   F12=Annull.                         
                                                                                
                        Sottoinsieme di connessioni IPv4                        
                                                            Sistema:   XXXXXXXX 
 Immettere le opzioni e premere Invio.                                          
   3=Abilitazione debug   4=Fine   5=Vis. dettagli   6=Disabilitazione debug    
   8=Visualizzazione lavori                                                     
                                                                                
      Ind.             Porta      Porta                                         
 Opz  remoto           rem        loc         T. inat.  Stato                   
  8   *                *          ObjectC >  000:05:51  In ascolto              
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                          Fine  
 F10=Vis. totali collegamento   F14=Vis. numeri porta      F15=Sottoinsieme     
 F17=Inizio elenco da           F22=Visual. campo intero   F24=Altri tasti      
                                                                                
                   Visualizzazione lavori tramite connessione                   
                                                            Sistema:   XXXXXXXX 
 Tipo di connessione  . . . . :   *TCP                                          
 Indirizzo locale . . . . . . :   *                                             
 Porta locale . . . . . . . . :   9841                                          
 Indirizzo remoto . . . . . . :   *                                             
 Porta remota . . . . . . . . :   *                                             
                                                                                
 Immettere le opzioni e premere Invio.                                          
   5=Gestione lavoro                                                            
                                                                                
                                                            Utente              
 Opz     Nome           Utente         Numero     Tipo      corrente            
         QOBJCRCV       QOBJC          009333     *BCH      QOBJC               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                          Fine  
 F3=Fine   F5=Rivisualizzazione   F6=Stampa   F9=Riga comandi   F12=Annull.     
                                                                                
                                                                                

Ora che il server è avviato dobbiamo configurare l’ObjectConnect lato client.

Sul sistema client, utilizzando il Digital Certificate Manager (DCM), è necessario definire come affidabili per l’applicazione client QIBM_QSVR_OBJC_CLIENT i certificati delle autorità di certificazione (CA) che hanno emesso il certificato assegnato al server ObjectConnect sul sistema server.

DCM@Server

Identifichiamo ed esportiamo i certificati della CA firmatarie del certificato server associato all’applicazione QIBM_QSVR_OBJC_SERVER per poi importarli sul DCM del sistema client e definirle affidabili all’applicazione QIBM_QSVR_OBJC_CLIENT:

I certificati, così esportati, vengono esportati nella directory /QIBM/UserData/ICSS/Cert/Download:

- WRKLNK OBJ('/QIBM/UserData/ICSS/Cert/Download/*')

                         Gestione collegamenti oggetto                          
                                                                                
 Indirizzario . . . :   /QIBM/UserData/ICSS/Cert/Download                       
                                                                                
 Immettere le opzioni e premere Invio.                                          
   2=Modifica         3=Copia   4=Rimozione   5=Visualizz.   7=Ridenom.         
   8=Attributi vis.   11=Modifica indirizzario corrente ...                     
                                                                                
 Opz.  Colleg. oggetto       Tipo            Attributo   Testo                  
       .                     DIR                                                
       ..                    DIR                                                
       CertAuth              DIR                                                
       Client                DIR                                                
       Txxxi-CA-Interm_16 >  STMF                                               
       Txxxi-CA_160505-36 >  STMF                                               
                                                                                
                                                                                
                                                                                
                                                                          Fine  
 Parametri o comando                                                            
 ===>                                                                           
 F3=Fine   F4=Richiesta   F5=Rivisualizzazione   F9=Duplicaz.   F12=Annull.     
 F17=Inizio elenco da     F22=Visualizzazione campo intero      F23=Altre opz.  
                                                                                

I certificati appena esportati (in formato pem) devono essere importati nel DCM del sistema Client (questa fase non viene documentata in quanto simile a quella si esportazione appena descritta).

Nota. È necessario definire affidabili per l’applicazione QIBM_QSVR_OBJC_CLIENT tutti i certificati firmatari del certificato server altrimenti l’esecuzione di un comando SAVRSTxxx terminerebbe con i seguento messaggi d’errore:

ID messaggio . . . . . :   CPDBC97       Gravità  . . . . . . . :   10        
Tipo di messaggio  . . :   Diagnostica                                        
Data invio . . . . . . :   26/04/24      Ora invio  . . . . . . :   13:34:16  
                                                                              
Messaggio . . . :   Il certificato non è firmato da una autorità di           
  certificazione affidabile.                                                  
Causa. . . . . :   L'Autorità di Certificazione che ha firmato il certificato 
  non è presente, su questo sistema, come Autorità di Certificazione (AC)     
  affidabile. Se questo errore si verifica durante l'inizializzazione         
  significa che il certificato fornito localmente non è firmato da una AC     
  affidabile. Se questo errore avviene durante la procedura di riconoscimento 
  SSL, il certificato di sistema da almeno uno degli endpoint non è firmato da
  una AC affidabile.                                                          
Correzione . . . :   Aggiungere l'Autorità di Certificazione all'elenco delle 
  AC affidabili su ambedue gli endpoint oppure ottenere un certificato che è  
  firmato da una AC affidabile ed associarlo con il certificato di sistema    
   dell'applicazione voluto.  Per creare o modificare i certificati e per      
   gestirne le autorità può essere usato il DCM (Digital Certificate Manager). 
   Se l'applicazione sta usando l'API (Application Programming Interface)      
   SSL_Init_Application o gsk_attribute_set_buffer(GSK_IBMI_APPLICATION_ID),   
   assicurarsi che il certificato interessato sia stato associato              
   all'applicazione usando il DCM (Digital Certificate Manager) o l'API        
   relativa all'applicazione di registrazione per l'uso del certificato (OPM,  
   QSYRGAP; ILE, QsyRegisterAppForCertUse). Se l'applicazione sta utilizzando  
   l'API SSL_Init o gsk_attribute_set_buffer(GSK_KEYRING_FILE), assicurarsi che
   la memorizzazione certificato specificata sull'API contenga il certificato.
ID messaggio . . . . . :   CPDCB02       Gravità  . . . . . . . :   30      
Tipo di messaggio  . . :   Diagnostica                                      
Data invio . . . . . . :   26/04/24      Ora invio  . . . . . . :   13:34:16
                                                                            
Messaggio . . . :   Failed to authenticate with ObjectConnect server.       
Cause . . . . . :   Failed to authenticate with ObjectConnect server because
  of reason 04. Reason codes and their meanings are:                        
    01 - Authentication type is not supported on ObjectConnect server.      
    02 - The user profile and password is rejected by ObjectConnect server. 
    03 - Unexpected failure occurs in ObjectConnect server.                 
    04 - Unexpected failure occurs in ObjectConnect client.                 
Recovery  . . . :   Based on the reason code, do one of the followings:     
    01 - Specify supported authentication type, or change the allowed       
  authentication type on server side using CHGOBJCA.                        
    02 - Provide correct user profile and password and try again.           
    03 - Consult system administrator to check the job log on server system
  for error messages that may have been issued. Correct the problem and try   
  the request again. If the problem occurs again or there are no previous     
  messages, report the problem using the Analyze Problem (ANZPRB) CL command. 
    04 - Check the job log for error messages that may have been issued prior 
  to this one. Correct the problem and try the request again. If the problem  
  occurs again or there are no previous messages, report the problem using the
  Analyze Problem (ANZPRB) CL command.                                        
ID messaggio . . . . . :   CPDCB0A       Gravità  . . . . . . . :   30      
Tipo di messaggio  . . :   Uscita                                           
Data invio . . . . . . :   26/04/24      Ora invio  . . . . . . :   13:34:16
                                                                            
Messaggio . . . :   Error occurred during the SAVRSTOBJ operation.          
Recovery  . . . :   See the messages listed previously. Address the problem 
  and try again. If the problem continues to occur, report the problem using
  the Analyze Problem (ANZPRB) CL command.                                  

DCM@Client:

La configurazione dell’ObjectConnect over TCP/IP è terminata!

Proviamolo salvando un oggetto sul sistema client e ripristinandolo sul sistema server. Sul sistema client eseguiamo il seguente comando:

- SAVRSTOBJ OBJ(Obj) LIB(Lib) RMTLOCNAME('Server_IP_or_HostName') CNNTYPE(*IP) RMTUSER(Server_User) RMTPWD(Server_User_Password) OBJTYPE(*FILE)

CPC3722: 1 oggetti salvati dalla libreria XXXTEMP.
I seguenti messaggi derivano dall'ubicazione remota XXXXXXXX.
1 oggetti ripristinati da XXXTEMP a XXXTEMP.
1 oggetti salvati e ripristinati.
ID messaggio . . . . . :   CPC3722       Gravità  . . . . . . . :   00      
Tipo di messaggio  . . :   Completamento                                    
Data invio . . . . . . :   24/04/24      Ora invio  . . . . . . :   18:46:14
                                                                            
Messaggio . . . :   1 oggetti salvati dalla libreria XXXTEMP.               
Causa . . . . . :                                                           
    -- 1 oggetti salvati.                                                   
    -- 0 file di spool salvati.                                             
    I dati sono stati salvati dalla libreria XXXTEMP al file di salvataggio 
  QSVRSF3EB4 su QTEMP in 24/04/24 18:46:14. Se è stato specificato          
  UPDHST(*YES), le informazioni cronologiche riguardanti il salvataggio e il
  ripristino sono state aggiornate per ogni oggetto salvato.                
ID messaggio . . . . . :   CPFAD87       Gravità  . . . . . . . :   10      
Tipo di messaggio  . . :   Informazioni                                     
Data invio . . . . . . :   24/04/24      Ora invio  . . . . . . :   18:46:14
                                                                            
Messaggio . . . :   I seguenti messaggi derivano dall'ubicazione remota     
  XXXXXXXX.                                                                 
Causa. . . . . :  Per ulteriori informazioni e messaggi relativi            
  all'operazione di ripristino, consultare il lavoro di ripristino          
  009373/QOBJC/QOBJCSVR avviato sull'ubicazione remota XXXXXXXX nel         
  sottosistema QUSRWRK.                                                     
ID messaggio . . . . . :   CPC3703       Gravità  . . . . . . . :   00      
Tipo di messaggio  . . :   Completamento                                    
Data invio . . . . . . :   24/04/24      Ora invio  . . . . . . :   18:46:14
                                                                            
Messaggio . . . :   1 oggetti ripristinati da XXXTEMP a XXXTEMP.            
Causa . . . . . :                                                           
    -- 1 oggetti ripristinati.                                              
    -- 0 file di spool ripristinati.                                        
    I dati sono stati ripristinati dalla libreria XXXTEMP salvata alla      
  libreria XXXTEMP in 24/04/24 18:46:13. Sono stati ripristinati oggetti dal
  file di salvataggio QSVRSF00F8 nella libreria QTEMP.                      
ID messaggio . . . . . :   CPCAD80       Gravità  . . . . . . . :   30        
Tipo di messaggio  . . :   Completamento                                      
Data invio . . . . . . :   24/04/24      Ora invio  . . . . . . :   18:46:14  
                                                                              
Messaggio . . . :   1 oggetti salvati e ripristinati.                         
Causa . . . . . :   Sono stati salvati e ripristinati 1 oggetti. Per ulteriori
  informazioni, consultare i messaggi precedenti nella registrazione del      
  lavoro.                                                                     

Funziona!

Protocollo di comunicazione

Vediamo se riusciamo a capire come funziona la comunicazione tra i due sistemi per sapere come configurare eventuali firewall esistenti tra i sistemi server e client.

Il protocollo di comunicazione implementato per l’ObjectConnect over TCP/IP sembra simile a quello utilizzato dall’FTP di tipo passivo.

Il client apre un socket su di una porta alta e contatta il server sulla porta 9841.

Su queste porte avviene un primo scambio di informazioni necessarie per:

  • instaurare una connessione criptata:
    • TLSv1.x Record Layer: Handshake Protocol: Client Hello
    • TLSv1.x Record Layer: Handshake Protocol: Multiple Handshake Messages
    • LSv1.x Record Layer: Handshake Protocol: Client Key Exchange
    • TLSv1.x Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
  • autenticarsi del client sul server

Terminata questa fase preliminare, il server apre un nuovo socket su di una così detta “ephemeral port” (una qualsiasi porta TCP/IP maggiore di 1023), ci si mette in ascolto e la comunica al client.

Quando il client riceve la nuova porta, apre un secondo socket su di un’altra porta alta e la usa per contattare il server sulla sua nuova porta. Su questa nuova connessione passeranno i dati salvati sul client da ripristinare sul server.

Terminato il ripristino sul server, quest’ultima connessione viene chiusa e il server comunica l’esito del restore sulla prima connessione dopodiché anche questa connessione viene chiusa e il processo termina.

Potete osservare quanto appena descritto, controllando i file /QIBM/UserData/OS400/OBJC/LOG su entrambi i sistemi e, se proprio avete voglia, attivando una Communication Trace (TRCCNN) sul sistema Client magari importando l’output su WireShark in questo modo:

- TRCCNN SET(*ON) TRCTYPE(*IP) TRCFULL(*STOPTRC) TRCTBL(OBJCTCPIP) SIZE(256 *MB) TCPDTA(*N () ()  *N 'Server_IP_or_HostName')

- SAVRSTOBJ OBJ(Obj) LIB(Lib) RMTLOCNAME('Server_IP_or_HostName') CNNTYPE(*IP) RMTUSER(Server_User) RMTPWD(Server_User_Password) OBJTYPE(*FILE)

- TRCCNN SET(*OFF) TRCTBL(OBJCTCPIP) OUTPUT(*STMF) TOSTMF('/tmp/OBJCTCPIP.pcap' *YES)

Conclusioni

Con l’ObjectConnect over TCP/IP IBM ha completato il percorso di separazione tra il prodotto ed il protocollo SNA (lo step precedente richiedeva la configurazione dell’Enterprise Extender with High Performance Routing (HPR), or Virtual OptiConnect) con conseguente drastica semplificazione della configurazione necessaria al suo utilizzo. Per azzerarla del tutto, avrebbe potuto lasciare all’utente la decisione se usare o meno i certificati SSL/TSL (e, quindi, il DCM…) ma così non è stato.

Appendice

Sotto due estratti dal file di log /QIBM/UserData/OS400/OBJC/LOG lato client e lato server di una comando SAVRSTxxx terminato correttamente.

Sistema client:

qsvrSavRstObjCpp-main qsvrLog setup level-3;handler:0
doSaveObject   Objects in library - XXXTEMP will be saved.
qsvrSocket::establishConnection connect-1 listenerPort-9841
qsvrSocket::establishConnection connect - success, rc=0
qsvrSocket::establishConnection connection established - local ip: ::ffff:192.168.X.Y:13383; remote ip: ::ffff:10.XX.YY.ZZ:9841
qsvrSocket::isRdma socket type - 0
qsvrSocket::isRdma socket type - 0
qsvrAuthentication-processClientAuthentication ---> Start to send auth data: USRPRF
qsvrspi-QsvrSaveObject-General qsvrLog reset level-3;handler:0
qsvrspi-QsvrSaveObject-General enter
qsvrSocket::isRdma socket type - 0
qsvrSocket::getSendBufferSize callerSendBufferSize-65535
qsvrspi-QsvrSaveObject-General callerSendBufferSize-65535
qsvrspi-sendRestoreKeys send restore keys
qsvrspi-sendData save communication content set to 0x40000003 using local content-0x40000003 and remote content-0x40000003
qsvrspi-sendRestoreKeys send success
qsvrspi-createSaveFile saveFileName-QTEMP/QSVRSF3EB4
qsvrspi-receiveListenerPort receive listenerPort
qsvrspi-receiveListenerPort listenerPort-24135
qsvrspi-receiveListenerPort restoreSystem-XXXXXXXX restoreJob-009373/QOBJC/QOBJCSVR restoreThread-000000F8
qsvrSpiSocket::establishConnection bind - success, rc=0
qsvrSpiSocket::establishConnection setsockopt - success, rc=0
qsvrSpiSocket::establishConnection setsockopt - success, rc=0
qsvrSocket::establishConnection create socket - - success, rc=2
qsvrSocket::establishConnection connect-2 listenerPort-24135
qsvrSocket::establishConnection connect - success, rc=0
qsvrSavf::getLdSysPtr LUD pointer - 0x000000000000000008A70D49B6001300 (16 bytes)
qsvrcqm-startIOM enter, dumpSpcPtr - 0x000000000000000008A70D49B6001300 (16 bytes)
qsvrcqm-startIOM _OBCOP
qsvrcqm-startIOM _OBCOP - success, rc=0
qsvrspi-callSave doSave
qsvrspi-callSave doSave - success
qsvrspi-setSaveCountsFromLastMessage QSRSAVOSPI CPC3722 saved-1 notSaved-0
qsvrSavf::getLdSysPtr LUD pointer - 0x000000000000000008A70D49B6001300 (16 bytes)
qsvrcqm-stopIOM enter, dumpSpcPtr - 0x000000000000000008A70D49B6001300 (16 bytes)
qsvrcqm-stopIOM _OBCOP
qsvrcqm-stopIOM _OBCOP - success, rc=0
qsvrSocket::closeConnection close socket -2 ld socket
qsvrspi-receiveRestoreResults receive restore results
qsvrspi-receiveRestoreResults restore success, restored-1
qsvrspi-QsvrSaveObject-General save & restore result: 1;1
qsvrspi-QsvrSaveObject-General save & restore result: 1;1
qsvrspi-QsvrSaveObject-General     objectsSaved - 1
qsvrspi-QsvrSaveObject-General     objectsNotSaved - 0
qsvrspi-QsvrSaveObject-General     spooledFilesSaved - 0
qsvrspi-QsvrSaveObject-General     spooledFilesNotSaved - 0
qsvrspi-QsvrSaveObject-General     objectsRestored - 1
qsvrspi-QsvrSaveObject-General     objectsNotRestored - 0
qsvrspi-QsvrSaveObject-General     spooledFilesRestored - 0
qsvrspi-QsvrSaveObject-General     spooledFilesNotRestored - 0
qsvrspi-sendCPCAD80 operation success message: CPCAD80 - 1 oggetti salvati e ripristinati.
qsvrspi-qsvrSpiCleanup delete saveFile-QTEMP/QSVRSF3EB4
qsvrspi-qsvrSpiCleanup delete restoreJobLogBuffer
qsvrspi-QsvrSaveObject-General exit
qsvrSpiKeys::ìqsvrSpiKeys qsvrLog setup level-3;handler:1
qsvrSpiKeys::ìqsvrSpiKeys ****** cleanup logging - level 3;handler:1 ******
qsvrObjCnnKeys::ìqsvrObjCnnKeys qsvrLog setup level-3;handler:1
qsvrObjCnnKeys::ìqsvrObjCnnKeys ****** cleanup logging - level 3;handler:1 ******
qsvrSavRstObjCpp-main ****** cleanup logging - level 3;handler:0 ******

Sistema server:

qsvrReceiver-servermain accept-2
qsvrReceiver-servermain create socket - workerSd - 1
qsvrJobCluster::dispatchWork job number status update: current-2,idle-1,busy-1,ending-0,min-1,max-5
qsvrServer-main Get works - CMD-WORK    ,sd=2
qsvrServer-main a connection is received, peer side:::ffff:192.168.X.Y:13383
qsvrSocket::isRdma socket type - 0
qsvrSocket::isRdma socket type - 0
qsvrServerAuthentication-processServerAuthentication ---> End to send server hello, rc=0
qsvrServerAuthentication-processServerAuthentication ---> Start to recv auth data.
qsvrServerAuthentication-processServerAuthentication ---> Auth data:USRPRF
qsvrServerAuthentication-processServerAuthentication validate the user profile, user=USRPRF
qsvrServerAuthentication-processServerAuthentication ---> Start to send auth response data: 0
qsvrServerAuthentication-processServerAuthentication ---> End to send auth response data.
qsvrServer-main Authentication done .
qsvrServer-main Received the GetMaxSvr request .
doRestore call QsvrRestoreObject, function:11; sd=2
qsvrspi-QsvrRestoreObject-General qsvrLog reset level-3;handler:1
qsvrspi-QsvrRestoreObject-General enter
qsvrSocket::isRdma socket type - 0
qsvrSocket::getSendBufferSize callerSendBufferSize-8388608
qsvrspi-QsvrRestoreObject-General callerSendBufferSize-8388608
qsvrspi-receiveRestoreKeys receive restore keys
qsvrspi-receiveRestoreKeys numberOfKeys-7
qsvrspi-receiveRestoreKeys saveSystem-XXXCLI06 saveJob-633320/USRPRF/DEVICENAME saveThread-00023EB4
qsvrspi-createSaveFile saveFileName-QTEMP/QSVRSF00F8
qsvrspi-createSaveFile SAVOBJ
qsvrspi-createSaveFile SAVOBJ success
createListener setsockopt - success, rc=39
createListener setsockopt - success, rc=39
qsvrSocket::createListener socket listenerSocket
qsvrSocket::createListener listenerSocket-3
qsvrSocket::createListener bind-3
qsvrSocket::createListener bind - success, rc=0
qsvrSocket::createListener getsockname-3 listenerPort
qsvrSocket::createListener listenerPort-24135
qsvrSocket::createListener listen-3
qsvrSocket::createListener listen - success, rc=0
qsvrspi-sendListenerPort send listenerPort
qsvrspi-sendListenerPort send success
qsvrSocket::acceptConnectRequest accept-3
qsvrSocket::acceptConnectRequest ldSd-4
qsvrSavf::getLdSysPtr LUD pointer - 0x00000000000000000787EFE6D4001300 (16 bytes)
qsvrcqm-startIOM enter, dumpSpcPtr - 0x00000000000000000787EFE6D4001300 (16 bytes)
qsvrcqm-startIOM _OBCOP
qsvrcqm-startIOM _OBCOP - success, rc=0
qsvrspi-callRestore doRestore
qsvrspi-callRestore doRestore - success
qsvrspi-setRestoreCountsFromLastMessage QSRRSTOSPI CPC3703 restored-1 notRestored-0
qsvrSavf::getLdSysPtr LUD pointer - 0x00000000000000000787EFE6D4001300 (16 bytes)
qsvrcqm-stopIOM enter, dumpSpcPtr - 0x00000000000000000787EFE6D4001300 (16 bytes)
qsvrcqm-stopIOM _OBCOP
qsvrcqm-stopIOM _OBCOP - success, rc=0
qsvrSocket::closeConnection close socket -3 listener socket
qsvrSocket::closeConnection close socket -4 ld socket
qsvrspi-sendRestoreResults send restore results
qsvrspi-sendRestoreResults send success
qsvrspi-QsvrRestoreObject-General restore result: 1
qsvrspi-QsvrRestoreObject-General     objectsRestored - 1
qsvrspi-QsvrRestoreObject-General     objectsNotRestored - 0
qsvrspi-QsvrRestoreObject-General     spooledFilesRestored - 0
qsvrspi-QsvrRestoreObject-General     spooledFilesRestored - 0
qsvrspi-QsvrRestoreObject-General     spooledFilesNotRestored - 0
qsvrspi-qsvrSpiCleanup delete dataArea-QTEMP/QSVRDA00F8
qsvrspi-qsvrSpiCleanup delete saveFile-QTEMP/QSVRSF00F8
qsvrspi-qsvrSpiCleanup delete restoreJobLogBuffer
qsvrspi-QsvrRestoreObject-General exit
doRestore call QsvrRestoreObject succeed.
qsvrServer-main This worker connection is done.
qsvrServer-main This worker connection is done.
refresh log file size qsvrLog reset level-3;handler:1
qsvrJobCluster::jobCompleted completed job - QOBJCSVR  QOBJC     009373
qsvrReceiver-servermain Work job completed.
qsvrJobCluster::endOneIdleJob moved to ending queue of job - QOBJCSVR  QOBJC     009395
qsvrServerCleanup-ìqsvrServerCleanup exit.
qsvrServer-main ****** cleanup logging - level 3;handler:1 ******
qsvrReceiver-servermain Idle for a long time, end one job.
qsvrJobCluster::jobEnded ended job - QOBJCSVR  QOBJC     009395
qsvrReceiver-servermain Worker job exited.

Riferimenti

https://www.ibm.com/support/pages/objectconnect-over-tcpip

https://www.ibm.com/support/pages/objectconnect-over-tcpip

https://www.volubis.fr/news/liens/courshtm/V7.4/ObjectConnect.html

https://www.ibm.com/support/pages/trccnn-instructions-generate-pcap-communication-trace

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

Recent Posts

Gestione dei file video bloccati su IBM i: una soluzione efficace

Riceviamo e pubblichiamo ben volentieri questo "tip & trick" di Patrick Rizzi che presenta una tecnica che permette di intervenire…

2 settimane ago

Monitoraggio Messaggi QSYSOPR: SQL per Ottenere Messaggi e Reply

Prendo spunto da una risposta di Michael Mayer sulle mailing list di Midrange.com a chi chiedeva come monitorare i messaggi…

2 settimane ago

Perché l’ERP è la Chiave del Successo per le Imprese Moderne

Le imprese sono sempre più alla ricerca di strumenti che possano migliorare l'efficienza, la collaborazione e la gestione delle risorse.…

2 mesi ago

ACS Access Client Solution 1.1.9.5

I primi di Aprile è uscita la "Spring Version" di ACS Access Client Solution, versione 1.1.9.5 Interessanti novità soprattutto in…

7 mesi ago

Tim Rowe and Scott Forstie – Promo video for CEC 2024 – Milan

Se non vi bastava la ricca agenda delle sessioni del Common Europe Congress 2024, 3-6 Giugno Milano, ecco un altro…

7 mesi ago

Code for IBM i 2.10.0 – Debug IBM i con Visual Studio Code

Le funzioni di debug con Visual Studio Code sono disponibili da qualche tempo ma questa nuova versione 2.10.0 semplifica la…

7 mesi ago