Post on 17-Aug-2021
IBM iVersioacuten 72
ProgramacioacutenIBM Toolbox para Java
IBM iVersioacuten 72
ProgramacioacutenIBM Toolbox para Java
NotaAntes de utilizar esta informacioacuten y el producto al que da soporte lea la informacioacuten de la seccioacuten ldquoAvisosrdquo en la paacutegina593
Este documento puede contener referencias al coacutedigo interno bajo licencia (LIC) El Coacutedigo interno bajo licencia esCoacutedigo maacutequina que se proporciona bajo los teacuterminos del acuerdo de licencia IBM License Agreement for MachineCode
copy Copyright IBM Corporation 1999 2014
Contenido
IBM Toolbox para Java 1Novedades de IBM i 72 1Archivo PDF para IBM Toolbox para Java 2Instalacioacuten y gestioacuten de IBM Toolbox para Java 2
Gestioacuten de la instalacioacuten de IBM Toolbox paraJava 2Instalacioacuten de IBM Toolbox para Java 3
Requisitos de IBM i para IBM Toolbox paraJava 3
Opciones de IBM i necesarias 3Coacutemo determinar si IBM Toolbox para Javaestaacute instalado en el sistema 4Comprobar el perfil QUSER 4Cambiar el perfil de usuario QUSER 4Dependencias de otros programas bajolicencia 4Compatibilidad con niveles distintos de IBMi 5Optimizaciones nativas al llevar a cabo laejecucioacuten en la JVM de IBM i 6
Requisitos de estacioacuten de trabajo para IBMToolbox para Java 6
Requisitos de estacioacuten de trabajo paraejecutar aplicaciones de IBM Toolbox paraJava 6Requisitos de estacioacuten de trabajo paraejecutar applets de IBM Toolbox para Java 6
Instalacioacuten de IBM Toolbox para Java en elsistema 7Instalacioacuten de IBM Toolbox para Java en laestacioacuten de trabajo 7
Archivos JAR 8Propiedades del sistema 11
JTOpenLite 20Clases de IBM Toolbox para Java 20
Clases de acceso 20Puntos de acceso de servidor 20Clase AS400 21
Gestioacuten de identificadores de usuariopredeterminado 22Utilizacioacuten de una memoria cacheacute decontrasentildeas 23Solicitud de identificadores de usuario ycontrasentildeas 23Resumen de solicitudes ID de usuariopredeterminado y colocacioacuten decontrasentildeas en memoria cacheacute 24
Clase SecureAS400 26Clase AS400JPing 27Clase BidiTransform 27Clase BidiConversionProperties 28Clase CallStackEntry 28Clases ClusteredHashTable 28Clase CommandCall 30Agrupacioacuten de conexiones 31Aacuterea de datos 32
Conversioacuten y descripcioacuten de datos 34Clases de conversioacuten para datos numeacutericos 36Conversioacuten de texto 37Clases de conversioacuten para tiposcompuestos 38Clases de descripcioacuten de campo 39Clase RecordFormat 40Clase Record 40Recuperacioacuten del contenido de un campo 41Establecimiento del contenido de un campo 42Clase LineDataRecordWriter 42
Colas de datos 44Colas de datos secuenciales 45Colas de datos por clave 46
Certificados digitales 46Clase EnvironmentVariable 48Excepciones 49Clase FileAttributes 50Clase FTP 50Clases del sistema de archivos integrado 51
Clase IFSFile 52Clase IFSJavaFile 53IFSFileInputStream 55Clase IFSTextFileInputStream 55IFSFileReader 56Clase IFSFileOutputStream 57Clase IFSTextFileOutputStream 57IFSFileWriter 58IFSRandomAccessFile 58Clase IFSKey 59Modalidad de compartimiento de archivo 60IFSSystemView 61
Clase ISeriesNetServer 61Clase JavaApplicationCall 61Clases JDBC 62
Clase AS400JDBCBlob 63Interfaz CallableStatement 65Clase AS400JDBCClob 65Clase AS400JDBCConnection 67AS400JDBCConnectionPool 68ClaseAS400JDBCManagedConnectionPoolDataSource69Interfaz DatabaseMetaData 78Clase AS400JDBCDataSource 79Registro del controlador JDBC 80Clase AS400JDBCParameterMetaData 82Interfaz PreparedStatement 83Clase ResultSet 84Clase AS400JDBCRowSet 86Clase AS400JDBCSavepoint 87Ejecucioacuten de sentencias SQL con objetosStatement 89Gestioacuten de transacciones distribuidas XAde JDBC 91
Clases de trabajos 92Clase Job 93
copy Copyright IBM Corp 1999 2014 iii
||
Clase JobList 93Clase JobLog 94
Clases de mensajes 95Clase NetServer 97Clase ObjectReferences 98Clases de permisos 99
Clase DLOPermission 100QSYSPermission 101RootPermission 103
Clases de impresioacuten 104Listar objetos de impresioacuten 105Trabajar con objetos de impresioacuten 106Recuperar atributos de PrintObject 107Atributos de recursos AFP 108Atributos de la cola de salida 108Atributos de impresora 109Atributos de archivo de impresora 110Atributos de archivo en spool 114Atributos de trabajo de transcriptor 117Atributos de objeto de impresioacuten 117Copiar archivos en spool 155Crear archivos en spool nuevos 157Generar una corriente de datos SCS 158Leer archivos en spool y recursos AFP 159Leer archivos en spool mediantePrintObjectPageInputStream yPrintObjectTransformedInputStream 160
Clase ProductLicense 160Clase ProgramCall 161Clase QSYSObjectPathName 163Acceso a nivel de registro 164
AS400File 166KeyedFile 166SequentialFile 168AS400FileRecordDescription 169Crear y suprimir archivos y miembros 171Leer y escribir registros 174Bloquear archivos 175Utilizar bloques de registros 176Fijar la posicioacuten del cursor 178Control de compromiso 179
Clase SaveFile 180Clase ServiceProgramCall 181Clase Subsystem 181Clases SystemStatus 181
Clase SystemPool 183Valores del sistema 183Clase Trace 185Clases de usuarios y grupos 188Clase UserSpace 189
Clases commtrace 190Modelo de commtrace 190Clases Format y FormatProperties 191
Ejecutar Format como un programaautoacutenomo 193
Clase Prolog 194Clase Frame 194Clase LanHeader 195Clase IPPacket 195Clase Header 196
Ejemplo coacutemo se utilizan las clasescommtrace 197
Clases HTML 198Clase BidiOrdering 199Clase HTMLAlign 200Clase HTMLDocument 201
Coacutemo se utiliza HTMLDocument paracrear datos HTML 201Coacutemo se utiliza HTMLDocument paracrear datos FO XSL 202Ejemplos coacutemo se utilizaHTMLDocument 205
Clases de formularios HTML 210Clases FormInput 211Clase LayoutFormPanel 215Clase TextAreaFormElement 216Clase LabelFormElement 217Clase SelectFormElement 217Clase SelectOption 218Clase RadioFormInputGroup 218
Clase HTMLHead 219Clase HTMLHeading 220Clase HTMLHyperlink 220Clase HTMLImage 221Clases HTMLList 221Clase HTMLMeta 224Clase HTMLParameter 225Clase HTMLServlet 225Clases de tablas HTML 226
Clase HTMLTableCell 226Clase HTMLTableRow 227Clase HTMLTableHeader 227Clase HTMLTableCaption 228
Clase HTMLText 228Clases HTMLTree 228
Clase HTMLTreeElement 229Clase FileTreeElement 230Clase FileListElement 231Clase FileListRenderer 231
Clases ReportWriter 232Clases Context 233Clase JSPReportProcessor 233Clase XSLReportProcessor 233
Clases de seguridad 234SSL (capa de sockets segura) 234
Utilizacioacuten de SSL para cifrar datos entreIBM Toolbox para Java y los servidoresIBM i 235
Servicios de autenticacioacuten 236Clases de servlets 238
Clases de autenticacioacuten 239Clase RowData 240
Clase ListRowData 240Clase RecordListRowData 241Clase ResourceListRowData 241Clase QLResultSetRowData 242
Clases RowMetaData 242Clase ListMetaData 242Clase RecordFormatMetaData 243Clase SQLResultSetMetaData 243
Clases conversoras 244
iv IBM Toolbox para Java IBM Toolbox para Java
Clase StringConverter 244Clase HTMLFormConverter 244Clase HTMLTableConverter 244
Clases de utilidades 245Clases de instalacioacuten y actualizacioacuten encliente 245AS400ToolboxJarMaker 246
Componentes soportados en IBM Toolboxpara Java 247Valores de CCSID y codificacioacutensoportados por IBM Toolbox para Java 249
Clase CommandHelpRetriever 253Clase CommandPrompter 254RunJavaApplication 254JPing 255
Beans de IBM Toolbox para Java 256JDBC 256
Mejoras efectuadas en el soporte JDBC de IBMToolbox para Java para IBM i 72 256Mejoras efectuadas en el soporte JDBC de IBMToolbox para Java para IBM i 71 257Mejoras efectuadas en el soporte JDBC de IBMToolbox para Java para IBM i 61 261Mejoras efectuadas en el soporte JDBC de IBMToolbox para Java para IBM i 54 265Propiedades JDBC de IBM Toolbox para Java 266
Propiedad LibraryList de JDBC 285Tipos SQL JDBC 287
Soporte de proxy 287Capa de Sockets Segura y Extensioacuten de socketsseguros Java 293Componentes XML (Extensible Markup Language) 293
PCML (Program Call Markup Language) 293Requisitos para utilizar PCML 294Construir llamadas a programa IBM i conPCML 294Sintaxis de PCML 299
Coacutedigo PCML program 299Coacutedigo PCML struct 301Coacutedigo PCML data 307
Record Format Markup Language 320Requisitos para utilizar RFML 320Ejemplo coacutemo se utiliza RFML encomparacioacuten con el uso de las clases Recordde IBM Toolbox para Java 320Clase RecordFormatDocument 322Documentos RFML y sintaxis RFML 323
Definicioacuten de tipo de documento RFML(DTD) 323Coacutedigo RFML data 325Coacutedigo RFML rfml 329Coacutedigo RFML recordformat 329Coacutedigo RFML struct 330
Analizador XML y procesador XSLT 330XPCML (Extensible Program Call MarkupLanguage) 331
Ventajas de XPCML respecto de PCML 331Requisitos de uso de XPCML 332Esquema y sintaxis XPCML 333
Comparacioacuten del fuente XPCML con elfuente PCML 333
Archivo xpcmlxsd de esquema 335Sintaxis de XPCML 350Atributos de coacutedigos XPCML 352
Utilizacioacuten de XPCML 353Convertir fuente PCML existente enXPCML 353Utilizar XPCML para llamar a unprograma del servidor 354Obtener los resultados de una llamada aprograma en formato de XPCML 355Pasar valores de paraacutemetros comoXPCML 356Coacutemo se utiliza fuente XPCMLcondensado 356Identificar errores de anaacutelisis en XPCML 357
Preguntas habituales (FAQ) 358Consejos para la programacioacuten 358
Coacutemo concluir el programa Java 358Nombres de viacutea de acceso del sistema dearchivos integrado para objetos de servidor 359Gestionar conexiones en programas Java 361Maacutequina virtual Java de IBM i 369
Comparacioacuten de la maacutequina virtual Java deIBM i y las clases de IBM Toolbox para Java 369Ejecutar las clases de IBM Toolbox para Javaen la maacutequina virtual Java de IBM i 370Establecer el nombre del sistema el ID deusuario y la contrasentildea con un objeto AS400en la maacutequina virtual Java de IBM i 371
Agrupacioacuten de almacenamiento auxiliar (ASP)independiente 373Excepciones 374Clase Trace 375Optimizacioacuten de IBM i 377Mejoras en el rendimiento 379Clases de instalacioacuten y actualizacioacuten en cliente 381AS400ToolboxJarMaker 381Soporte de idiomas nacionales para Java 383Servicio y soporte para IBM Toolbox para Java 383
Ejemplos de coacutedigo 384Ejemplos clases de acceso 384Ejemplos JavaBeans 473Ejemplos clases commtrace 480Ejemplos de las clases HTML 480Ejemplos PCML (Program Call MarkupLanguage) 504Ejemplos clases ReportWriter 513Ejemplos RFML 530Ejemplo coacutemo se utiliza una credencial desiacutembolo de perfil para intercambiar la identidadde la hebra de IBM i 531Ejemplos de las clases de servlets 532Ejemplos simples de programacioacuten 560Ejemplos consejos para la programacioacuten 574Ejemplos clases de utilidades 575Ejemplos XPCML 577
Informacioacuten relacionada para IBM Toolbox paraJava 588
Avisos 593Informacioacuten sobre interfaces de programacioacuten 595
Contenido v
|||
Marcas registradas 595 Teacuterminos y condiciones 595
vi IBM Toolbox para Java IBM Toolbox para Java
IBM Toolbox para Java
IBMreg Toolbox para Javatrade es un conjunto de clases Java que permiten utilizar programas Java paraacceder a datos del sistema Con estas clases puede escribir aplicaciones de clienteservidor applets yservlets que funcionen con datos existentes en el sistema Tambieacuten puede ejecutar las aplicaciones Javaque utilizan las clases de IBM Toolbox para Java en la maacutequina virtual Java (JVM) de IBM i
IBM Toolbox para Java utiliza los servidores de host de IBM i como puntos de acceso al sistema Dadoque IBM Toolbox para Java utiliza funciones de comunicacioacuten incorporadas a Java no es necesarioutilizar IBM i Access para Windows para utilizar IBM Toolbox para Java Cada servidor se ejecuta en untrabajo aparte en el servidor y cada trabajo servidor enviacutea y recibe corrientes de datos a traveacutes de unaconexioacuten por socket
Nota al utilizar los ejemplos de coacutedigo acepta los teacuterminos del ldquoInformacioacuten sobre licencia de coacutedigo yexencioacuten de responsabilidadrdquo en la paacutegina 590
Novedades de IBM i 72Conozca la informacioacuten nueva o con modificaciones importantes de la coleccioacuten de temas de IBMToolbox para Java
Se han realizado los siguientes cambios en IBM Toolbox para Java en IBM i 72v Las clases siguientes se han antildeadido desde el release anterior de IBM i Todas las clases listadas aquiacute
estaacuten en el paquete comibmas400access a menos que se indique lo contrariondash comibmas400accessAS400JDBCTimestamp
v Se han realizado mejoras significativas en las clases de JDBC que estaacuten en el paquetecomibmas400access
v Se ha antildeadido informacioacuten sobre ldquoJTOpenLiterdquo en la paacutegina 20 ubicada en el paquetecomibmjtopenlite JTOpenLite permite escribir programas Java que permiten a diversos dispositivosmoacuteviles acceder directamente a datos y recursos de IBM i
Obtener IBM Toolbox para Java
IBM Toolbox para Java estaacute disponible en los formatos siguientesv Los Archivos JAR de IBM Toolbox para Java se instalan en el sistema de archivos integrado de IBM i
bajo el directorio QIBMProdDataOS400jt400v IBM Toolbox para Java tambieacuten estaacute disponible en una versioacuten de fuente abierto Puede descargar el
coacutedigo y obtener maacutes informacioacuten en el sitio Web de JTOpen
Coacutemo ver las novedades y los cambios realizados
Para ayudarle a ver doacutende se han realizado cambios teacutecnicos el Information Center utilizav La imagen para marcar doacutende empieza la informacioacuten nueva o modificadav La imagen para marcar doacutende finaliza la informacioacuten nueva o modificada
En los archivos PDF aparecen barras de revisioacuten (|) en el margen izquierdo de la informacioacuten nueva omodificada
Si desea obtener otra informacioacuten sobre las novedades o modificaciones de este release consulte eldocumento Memoraacutendum para los usuarios
copy Copyright IBM Corp 1999 2014 1
Archivo PDF para IBM Toolbox para JavaPuede visualizar e imprimir un archivo PDF de esta informacioacuten
Para visualizar o descargar la versioacuten en PDF de este documento seleccione IBM Toolbox para Java
Puede visualizar o descargar estos archivos PDF de temas relacionadosv IBM Developer Kit para Javav Depurador de IBM i
Otra informacioacuten
Tambieacuten puede descargar un paquete comprimido en zip del tema IBM Toolbox para Java que incluye
los Javadocs del sitio Web de IBM Toolbox para Java y JTOpen
Nota la informacioacuten del paquete comprimido tiene enlaces con documentos que no se incluyen en elpaquete comprimido por lo que esos enlaces no funcionaraacuten
Guardar archivos PDF
Para guardar un PDF en la estacioacuten de trabajo con el fin de verlo o imprimirlo1 Pulse el enlace PDF con el botoacuten derecho del ratoacuten en el navegador2 Pulse la opcioacuten que guarda el PDF localmente3 Navegue al directorio en el que desea guardar el archivo PDF4 Pulse Guardar
Descargar Adobe Reader
Necesita tener instalado Adobe Reader en el sistema para poder visualizar o imprimir estos PDF Puededescargar una copia gratuita desde el sitio Web de Adobe
(wwwadobecomproductsacrobatreadstephtml)
Instalacioacuten y gestioacuten de IBM Toolbox para JavaEl uso de IBM Toolbox para Java facilita la tarea de escribir applets servlets y aplicaciones Java clienteque accedan a los recursos datos y programas del sistema
Gestioacuten de la instalacioacuten de IBM Toolbox para JavaSolo es necesario que instale IBM Toolbox para Java en los sistemas cliente que lo utilicen o en unaubicacioacuten de la red en la que los clientes puedan acceder al mismo Los clientes pueden ser PCestaciones de trabajo dedicadas o sistemas IBM i Es importante recordar que puede configurar unservidor IBM i o una particioacuten del servidor como cliente En el segundo caso debe instalar IBM Toolboxpara Java en la particioacuten cliente del servidor
Puede utilizar cualquiera de los meacutetodos siguientes (solos o combinados) para instalar y gestionar IBMToolbox para Javav Gestioacuten individual para instalar y gestionar de forma individual IBM Toolbox para Java en cada
clientev Gestioacuten en red de una sola instalacioacuten utilizando la red para instalar y gestionar una uacutenica instalacioacuten
compartida de IBM Toolbox para Java en un servidor
2 IBM Toolbox para Java IBM Toolbox para Java
En los apartados siguientes se describe brevemente coacutemo afecta al rendimiento y a la facilidad de gestioacutencada uno de los meacutetodos El modo de desarrollo de las aplicaciones Java y gestioacuten de los recursos queelija determinaraacute cuaacutel de los meacutetodos (o cuaacutel de las combinaciones de meacutetodos) utilizaraacute
Gestioacuten individual
Puede elegir gestionar las instalaciones de IBM Toolbox para Java de forma individual en los distintosclientes La principal ventaja de instalar IBM Toolbox para Java en clientes individuales es que con ello sereduce el tiempo que tarda un cliente en iniciar una aplicacioacuten que utiliza las clases de IBM Toolbox paraJava
La principal desventaja es la gestioacuten individual de esas instalaciones Un usuario o una aplicacioacuten creadapor el usuario debe hacer un seguimiento de queacute versioacuten de IBM Toolbox para Java estaacute instalada encada estacioacuten de trabajo y llevar a cabo las tareas de gestioacuten
Gestioacuten en red de una sola instalacioacuten
Tambieacuten puede utilizar la red para instalar y gestionar una uacutenica copia de IBM Toolbox para Java en unservidor al que todos los clientes puedan acceder Este tipo de instalacioacuten en red proporciona lassiguientes ventajasv Todos los clientes utilizan la misma versioacuten de IBM Toolbox para Javav La actualizacioacuten de la uacutenica instalacioacuten de IBM Toolbox para Java beneficia a todos los clientesv Los distintos clientes no tienen que preocuparse de llevar a cabo ninguna tarea de mantenimiento
excepto la de establecer la misma CLASSPATH inicial
Este tipo de instalacioacuten tambieacuten tiene el inconveniente de aumentar el tiempo que tarda un cliente eniniciar una aplicacioacuten de IBM Toolbox para Java Asimismo debe permitir que la CLASSPATH del clienteapunte al servidor Puede utilizar NetServer que estaacute integrado en IBM i u otro meacutetodo que le permitaacceder a los archivos del sistema como IBM i Access para Windows
Instalacioacuten de IBM Toolbox para JavaEl meacutetodo que utilice para instalar IBM Toolbox para Java dependeraacute de coacutemo desee gestionar lainstalacioacuten Utilice estos temas para instalar IBM Toolbox para Java
Requisitos de IBM i para IBM Toolbox para JavaEste tema detalla los requisitos que el entorno debe cumplir para poder utilizar IBM Toolbox para Java
Nota antes de utilizar IBM Toolbox para Java compruebe que se cumplen los requisitos de estacioacuten detrabajo que corresponden a su entorno
Opciones de IBM i necesarias
Para ejecutar IBM Toolbox para Java en un entorno de clienteservidor debe habilitar el perfil de usuarioQUSER iniciar los servidores de host y tener TCPIP en ejecucioacutenv El perfil de usuario QUSER debe estar habilitado para iniciar los servidores de hostv Los servidores de host escuchan y aceptan las peticiones de conexioacuten de los clientes La opcioacuten
Servidores de host IBM i se incluye con la opcioacuten base de IBM i Para obtener maacutes informacioacutenconsulte el tema acerca de la administracioacuten de servidores de host
v El soporte TCPIP que estaacute integrado en IBM i permite conectar el servidor a una red Para obtenermaacutes informacioacuten consulte TCPIP
Coacutemo iniciar las opciones de IBM i necesarias
En una liacutenea de mandatos inicie las opciones de IBM i necesarias siguiendo estos pasos
IBM Toolbox para Java 3
1 Compruebe que el perfil QUSER estaacute habilitado2 Para iniciar los servidores de host IBM i utilice el mandato CL Iniciar servidor de host Escriba
STRHOSTSVR ALL y pulse INTRO3 Para iniciar el servidor de gestioacuten de datos distribuidos (DDM) TCPIP utilice el mandato CL Iniciar
servidor TCPIP Escriba STRTCPSVR SERVER(DDM) y pulse INTRO
Coacutemo determinar si IBM Toolbox para Java estaacute instalado en el sistema
Para ver si IBM Toolbox para Java ya estaacute instalado en el servidor IBM i siga los pasos de este tema1 En System i Navigator seleccione el sistema que desea utilizar e inicie la sesioacuten en eacutel2 En el aacuterbol de funciones (el panel izquierdo) expanda el sistema y a continuacioacuten expanda
Configuracioacuten y servicio3 Expanda Software y a continuacioacuten expanda Productos instalados4 En el panel Detalles (el panel derecho) consulte si se ha instalado la opcioacuten 3 del producto 5770-SS1
Si ve este producto y la combinacioacuten de opciones IBM Toolbox para Java estaacute instalado en el servidorseleccionado
Nota tambieacuten puede averiguar si IBM Toolbox para Java estaacute instalado ejecutando el mandato CL Ira menuacute (GO MENU(LICPGM)) Opcioacuten 11
Si IBM Toolbox para Java no estaacute instalado puede instalar IBM Toolbox para Java instalando la opcioacuten 3del producto 5770-SS1
Comprobar el perfil QUSER
Los servidores de host IBM i se inician con el perfil de usuario QUSER por lo que primero debeasegurarse de que el perfil QUSER estaacute habilitado para poder ejecutar IBM Toolbox para Java en unentorno clienteservidor
Comprobar el perfil QUSER
Para utilizar la liacutenea de mandatos a fin de comprobar el perfil QUSER siga estos pasos1 En una liacutenea de mandatos escriba DSPUSRPRF USRPRF(QUSER) y pulse Intro2 Compruebe que Estado tiene establecido el valor ENABLED Si el estado del perfil no es ENABLED
cambie el perfil QUSER
Cambiar el perfil de usuario QUSER
Si el perfil QUSER no estaacute establecido en ENABLED (habilitado) debe habilitarlo para iniciar losservidores de host IBM i Asimismo la contrasentildea del perfil QUSER no puede ser NONE Si ese es elcaso debe restablecerla
Para utilizar la liacutenea de mandatos a fin de habilitar el perfil QUSER siga estos pasos1 Escriba CHGUSRPRF USRPRF(QUSER) y pulse INTRO2 Cambie el campo Estado a ENABLED y pulse INTRO
El perfil de usuario QUSER estaacute ahora preparado para iniciar los servidores de host IBM i
Dependencias de otros programas bajo licencia
En funcioacuten de coacutemo desee utilizar IBM Toolbox para Java puede que tenga que instalar otros programasbajo licencia
4 IBM Toolbox para Java IBM Toolbox para Java
Visor de archivos en spool
Si desea utilizar las funciones del visor de archivos en spool (clase SpooledFileViewer) de IBM Toolboxpara Java aseguacuterese de que en el servidor esteacute instalada la opcioacuten 8 de host (Fonts de compatibilidadAFP)
Nota las clases SpooledFileViewer PrintObjectPageInputStream y PrintObjectTransformedInputStreamsolo funcionan cuando se conectan a sistemas cuya versioacuten sea igual o posterior a V4R4
SSL (capa de sockets segura)
Si desea utilizar SSL (capa de sockets segura) compruebe que tenga instalado lo siguientev Programa bajo licencia IBM HTTP Server para i 5770-DG1v Opcioacuten 34 de IBM i (Digital Certificate Manager)
Para obtener maacutes informacioacuten sobre SSL consulte ldquoCapa de Sockets Segura y Extensioacuten de socketsseguros Javardquo en la paacutegina 293
Servidor HTTP para utilizar applets servlets o SSL
Si desea utilizar applets servlets o SSL en el servidor IBM i debe configurar un servidor HTTP e instalarlos archivos de clase en el sistema Para obtener maacutes informacioacuten acerca de IBM HTTP Server para i
consulte el sitio Web de HTTP Server
Si desea informacioacuten sobre el gestor de certificados digitales y sobre coacutemo crear certificados digitales conIBM HTTP Server y trabajar con ellos consulte Gestioacuten de certificados digitales
Compatibilidad con niveles distintos de IBM i
Dado que puede utilizar IBM Toolbox para Java tanto en el servidor como en el cliente las cuestiones decompatibilidad afectan tanto a la ejecucioacuten en un servidor como a la conexioacuten desde un cliente a unservidor
Utilizar IBM Toolbox para Java para conectarse desde un cliente a un servidor
Puede utilizar distintas versiones de IBM Toolbox para Java en un cliente y en el servidor al que seconecta Para utilizar IBM Toolbox para Java con el fin de acceder a los datos y recursos de un servidorIBM i el servidor al que se conecta debe ejecutar uno de los sistemas operativos siguientesv IBM i 72v IBM i 71v IBM i 61
La tabla siguiente muestra los requisitos de compatibilidad para la conexioacuten con distintas versionesanteriores de IBM i
Nota IBM Toolbox para Java no da soporte a la compatibilidad con versiones posteriores No se puedeinstalar IBM Toolbox para Java en un servidor que ejecute una versioacuten maacutes reciente de IBM i Porejemplo si utiliza la versioacuten de IBM Toolbox para Java que se distribuye con IBM i 61 no puedeconectarse a un servidor que ejecute IBM i 72
LPP Se suministra con IBM i Se conecta a IBM i
5761-JC1 61 53 y superior
5770-SS1 71 54 y superior
IBM Toolbox para Java 5
|
LPP Se suministra con IBM i Se conecta a IBM i
5770-SS1 72 61 y posterior
Optimizaciones nativas al llevar a cabo la ejecucioacuten en la JVM de IBM i
Las optimizaciones nativas son un conjunto de funciones que hacen que las clases de IBM Toolbox paraJava funcionen como un usuario esperariacutea que funcionaran al ejecutarse en IBM i Las optimizacionessolo inciden en el funcionamiento de IBM Toolbox para Java al ejecutarse en la JVM de IBM i
Las optimizaciones de IBM Toolbox para Java cuando se ejecuta en IBM i sonv Inicio de sesioacuten si no se especifica ninguacuten ID de usuario o ninguna contrasentildea en el objeto AS400 se
utilizan el ID de usuario y la contrasentildea del trabajo actualv Llamada directa a las API de IBM i en lugar de efectuar llamadas por socket a los servidores de host
ndash Acceso a base de datos a nivel de registro colas de datos y espacio de usuario cuando se cumplenlos requisitos de seguridad
ndash Llamada a programa y llamada a mandato cuando se cumplen los requisitos de seguridad y losrequisitos de seguridad de hebras
Nota para obtener un mejor rendimiento establezca la propiedad driver de JDBC para utilizar elcontrolador nativo cuando el programa Java y el archivo de base de datos esteacuten en el mismo servidor
No es necesario efectuar ninguacuten cambio en la aplicacioacuten Java para obtener las optimizaciones IBMToolbox para Java habilita automaacuteticamente las optimizaciones cuando corresponde
Para obtener las mejoras en el rendimiento debe asegurarse de utilizar el archivo JAR que contiene lasoptimizaciones nativas de IBM i Para obtener maacutes informacioacuten consulte la nota 1 de Archivos JAR
Si no utiliza el archivo JAR que incluye las optimizaciones nativas de IBM i IBM Toolbox para Javafunciona como si se ejecutara en un cliente
Requisitos de estacioacuten de trabajo para IBM Toolbox para JavaAseguacuterese de que la estacioacuten de trabajo cumple con los siguientes requisitos
Nota antes de utilizar IBM Toolbox para Java compruebe que se cumplen los requisitos de IBM irelativos a su entorno
Requisitos de estacioacuten de trabajo para ejecutar aplicaciones de IBM Toolbox para Java
Para desarrollar y ejecutar aplicaciones de IBM Toolbox para Java aseguacuterese de que la estacioacuten de trabajocumpla los requisitos siguientesv Se recomienda emplear una maacutequina virtual Java de Java 2 Standard Edition (J2SE) soportada Son
muchas las nuevas funciones de IBM Toolbox para Java que requieren utilizar la versioacuten 14 o superiorde la JVM
v TCPIP instalado y configurado
Requisitos de estacioacuten de trabajo para ejecutar applets de IBM Toolbox para Java
Para desarrollar y ejecutar aplicaciones de IBM Toolbox para Java aseguacuterese de que la estacioacuten de trabajocumpla los requisitos siguientesv Un navegador que tenga una maacutequina virtual Java (JVM) compatiblev TCPIP instalado y configuradov La estacioacuten de trabajo debe conectarse a un servidor que ejecute IBM i 61 o un release maacutes reciente
6 IBM Toolbox para Java IBM Toolbox para Java
|||
|
Instalacioacuten de IBM Toolbox para Java en el sistemaUacutenicamente debe instalar IBM Toolbox para Java en el servidor IBM i si ha configurado como cliente elsistema o una particioacuten del sistema
Antes de instalar IBM Toolbox para Java debe asegurarse de que la versioacuten de IBM i cumple losrequisitos para ejecutar IBM Toolbox para Java Puede resultarle de intereacutes determinar si IBM Toolboxpara Java ya estaacute instalado en el servidor
Instalacioacuten de IBM Toolbox para Java
Puede instalar IBM Toolbox para Java instalando la opcioacuten 3 de 5770-SS1 Puede utilizar System iNavigator o la liacutenea de mandatos
Utilizacioacuten de System i Navigator para instalar IBM Toolbox para Java
Para instalar IBM Toolbox para Java utilizando System i Navigator siga estos pasos1 En System i Navigator inicie la sesioacuten en el sistema que desea utilizar2 En el aacuterbol de funciones (el panel izquierdo) expanda Mis conexiones3 Bajo Mis conexiones pulse con el botoacuten derecho el sistema donde desea instalar IBM Toolbox para
Java4 Seleccione Ejecutar mandato5 En el diaacutelogo Restaurar programa bajo licencia (RSTLICPGM) escriba la siguiente informacioacuten y a
continuacioacuten pulse Aceptarv Producto 5770-SS1v Dispositivo el nombre del dispositivo o archivo de salvarv Parte opcional a a restaurar 3
Nota para obtener maacutes informacioacuten pulse Ayuda en el diaacutelogo Restaurar programa bajo licencia(RSTLICPGM)
Puede utilizar System i Navigator para ver el estado de la tarea Mandato de Management Centralresultante siguiendo estos pasos1 Expanda Management Central2 Expanda Actividad de tareas3 Bajo Actividad de tareas seleccione Mandatos4 En el panel de detalles pulse la tarea de Ejecutar mandato adecuada
Utilizar la liacutenea de mandatos para instalar IBM Toolbox para Java
Para instalar IBM Toolbox para Java desde una liacutenea de mandatos siga estos pasos1 En una liacutenea de mandatos utilice el mandato CL Ir a menuacute Escriba GO MENU(LICPGM) y pulse
INTRO2 Seleccione 11 Instalar programa bajo licencia3 Seleccione 5770-SS1 3 Soporte de directorio base ampliado
Encontraraacute maacutes informacioacuten sobre coacutemo instalar programas bajo licencia en Gestioacuten de software yprogramas bajo licencia
Instalacioacuten de IBM Toolbox para Java en la estacioacuten de trabajoAntes de instalar IBM Toolbox para Java compruebe que se cumplen los requisitos de estacioacuten de trabajoque corresponden a su entorno
IBM Toolbox para Java 7
El meacutetodo que utilice para instalar IBM Toolbox para Java en la estacioacuten de trabajo dependeraacute de coacutemodesee gestionar la instalacioacutenv Para instalar IBM Toolbox para Java en clientes individuales copie los archivos JAR en la estacioacuten de
trabajo y configure la CLASSPATH de la estacioacuten de trabajov Para utilizar el producto IBM Toolbox para Java instalado en un servidor solo tiene que configurar la
CLASSPATH de la estacioacuten de trabajo de modo que apunte a la instalacioacuten del servidor Para que laCLASSPATH de la estacioacuten de trabajo apunte al servidor el servidor debe tener instalado IBM iNetServer
En esta informacioacuten se describe coacutemo copiar los archivos de clase en la estacioacuten de trabajo Para obtenermaacutes informacioacuten sobre coacutemo establecer la CLASSPATH de la estacioacuten de trabajo consulte ladocumentacioacuten del sistema operativo de la estacioacuten de trabajo o la informacioacuten disponible en el sitio Web
de Sun Java
Nota para utilizar las clases de IBM Toolbox para Java en la aplicacioacuten tambieacuten es preciso que elsistema cumpla los requisitos de IBM i
Los archivos de clase de IBM Toolbox para Java estaacuten empaquetados en varios archivos JAR por lo quedebe copiar uno o maacutes de estos archivos JAR en la estacioacuten de trabajo Para obtener maacutes informacioacutensobre queacute archivos JAR son necesarios para las funciones de IBM Toolbox para Java especiacuteficas consulteArchivos JAR
Ejemplo coacutemo copiar jt400jar
En el ejemplo que figura a continuacioacuten se supone que se desea copiar jt400jar que contiene las clases denuacutecleo de IBM Toolbox para Java
Para copiar manualmente el archivo JAR siga estos pasos1 Busque el archivo jt400jar en el directorio siguiente QIBMProdDataHTTPPublicjt400lib2 Copie jt400jar del servidor en la estacioacuten de trabajo Para ello existen varios meacutetodos
v Utilice IBM i Access para Windows a fin de correlacionar una unidad de red de la estacioacuten detrabajo con el servidor y a continuacioacuten copie el archivo
v Utilice el protocolo de transferencia de archivos (FTP) para enviar el archivo a la estacioacuten de trabajo(en modalidad binaria)
3 Actualice la variable de entorno CLASSPATH de la estacioacuten de trabajov Por ejemplo si utiliza Windows NT y ha copiado jt400jar en Cjt400lib antildeada la serie siguiente
al final de la CLASSPATHCjt400libjt400jar
Tambieacuten tiene la opcioacuten de utilizar la versioacuten de fuente abierto de IBM Toolbox para Java denominadaJTOpen Para obtener maacutes informacioacuten sobre JTOpen consulte el sitio Web de IBM Toolbox para Java y
JTOpen
Archivos JAR
IBM Toolbox para Java se suministra en forma de conjunto de archivos JAR Cada uno de los archivosJAR contiene paquetes Java que proporcionan funciones especiacuteficas Puede reducir la cantidad de espaciode almacenamiento necesario utilizando uacutenicamente los archivos JAR que sean precisos para habilitar lasfunciones concretas que desee
Para utilizar un archivo JAR compruebe que especifica una entrada para el mismo en la variableCLASSPATH
8 IBM Toolbox para Java IBM Toolbox para Java
El diagrama siguiente indica los archivos JAR que debe antildeadir a la variable CLASSPATH para utilizar lafuncioacuten o el paquete asociado
Paquete o funcioacuten de IBM Toolbox para JavaArchivos JAR que deben estar en la variableCLASSPATH
Clases de acceso jt400jar (cliente) o jt400Nativejar (servidor) Nota 1 ojt400Proxyjar en un entorno de proxy
ldquoClase CommandHelpRetrieverrdquo en la paacutegina 253 jt400jar (cliente) o jt400Nativejar (servidor) Nota 1 y unanalizador XML y un procesador XSLT Nota 3
CommandPrompter Nota 3 jt400jar jui400jar util400jar Nota 4 y un analizador XMLNota 3
Clases commtrace jt400jar (cliente) o jt400Nativejar (servidor) Nota 1
Clases HTML jt400jar Nota 1 maacutes jt400Servletjar (cliente) ojt400Nativejar (servidor) Nota 1
Clase HTMLDocument Los mismos archivos JAR necesarios para las clasesHTML maacutes un analizador XML y un procesador XSLTNota 3
Clases JCA jt400jar (cliente) o jt400Nativejar (servidor) Nota 1
GUI de origen de datos JDBC jt400jar (cliente) Nota 1 y jui400jarNota 5
Mensajes de error y del sistema de NLS jt400Mri_lang_cntryjar Nota 6
PCML (desarrollo y ejecucioacuten analizado) Nota 7 jt400jar (cliente) o jt400Nativejar (servidor) Nota 1 Nota 8 yun analizador XML Nota 3
PCML (ejecucioacuten serializado) jt400jar (cliente) o jt400Nativejar (servidor) Nota 1 Nota 8
Clases ReportWriter jt400jar (cliente) o jt400Nativejar (servidor) Nota 1archivos JAR de reportwriter Nota 9 y un analizador XMLy un procesador XSLT Nota 3
RFML jt400jar (cliente) o jt400Nativejar (servidor) Nota 1 y unanalizador XML Nota 3
Clases de seguridad jt400jar (cliente) o jt400Nativejar (servidor) Nota 1 ojt400Proxyjar en un entorno de proxy
Clases de servlets jt400jar Nota 1 maacutes jt400Servletjar (cliente) ojt400Nativejar (servidor) Nota 1
Depurador de IBM i Nota 4 jt400jar (cliente) Nota 1 y tesjar
XPCML jt400jar (cliente) o jt400Nativejar (servidor) Nota 1 y unanalizador XML y un procesador XSLT Nota 3
Nota 1 no coloque jt400jar y jt400Nativejar en la CLASSPATH Elija el archivo JAR maacutes adecuado a suentorno y utilice soacutelo ese archivo JAR en la CLASSPATH
Nota 2 algunas de las clases de IBM Toolbox para Java se encuentran en maacutes de un archivo JARv jt400jar - Acceso commtrace JCA soporte para JDBC PCML RFML seguridad utilidades y XPCMLv jt400zip - Utilice jt400jar en lugar de jt400zip jt400zip se distribuye para mantener la compatibilidad
con los releases anteriores de IBM Toolbox para Javav jt400Accesszip - Las mismas clases que contiene jt400jar jtAccess400zip se distribuye para mantener
la compatibilidad con los releases anteriores de IBM Toolbox para Java Utilice jt400jar o jt400Nativejaren lugar de jt400Accesszip
v jt400Nativejar - Acceso HTML PCML RFML seguridad XPCML y optimizaciones nativas Lasoptimizaciones nativas son un conjunto de clases (menos de 20) que aprovechan la funcioacuten de IBM icuando se ejecuta en la JVM de IBM i Dado que jt400Nativejar contiene las optimizaciones nativas al
IBM Toolbox para Java 9
ejecutarse en la JVM de IBM i utilice jt400Nativejar en lugar de jt400jar jt400Nativejar se suministracon IBM i y reside en el directorio QIBMProdDataOS400jt400lib
v jt400Native11xjar - Utilice jt400Nativejar en lugar de jt400Native11xjar jt400Native11xjar sedistribuye para mantener la compatibilidad con los releases anteriores de IBM Toolbox para Java
Nota 3 cuando tenga que utilizar un analizador XML o procesador XSLT aseguacuterese de que es compatiblecon JAXP Encontraraacute maacutes informacioacuten en esta paacutegina
ldquoAnalizador XML y procesador XSLTrdquo en la paacutegina 330
Nota 4 al utilizar CommandPrompter o el depurador de IBM i tambieacuten es necesario un archivo JARadicional que no forma parte de IBM Toolbox para Java jhalljar Para obtener maacutes informacioacuten sobre
coacutemo bajar jhalljar consulte el sitio Web de Sun JavaHelp
Nota 5 util400jar contiene clases especiacuteficas de IBM i para dar formato a la entrada y para emplear elprograma de solicitud de liacutenea de mandatos Para utilizar la clase CommandPrompter se necesitautil400jar
Nota 6 jui400jar contiene las clases necesarias para utilizar la interfaz de GUI DataSource JDBC jt400jar(Nota 1) contiene las clases necesarias para todas las demaacutes funciones JDBC
Nota 7 jt400Mri_xx_yyjar contiene mensajes traducidos entre los que se encuentran series incluidas enmensajes de excepcioacuten diaacutelogos y salida de otros procesos normales En jt400Mri_lang_cntryjar lang = elcoacutedigo de idioma ISO y cntry = el coacutedigo de paiacutes o regioacuten ISO utilizado para traducir el texto incluidoEn algunos casos no se emplea el coacutedigo de paiacutes o regioacuten ISO Al instalar una versioacuten en idioma nacionalconcreta del programa bajo licencia IBM Toolbox para Java en el sistema se instala el archivojt400Mri_lang_cntryjar adecuado Si el idioma no estaacute soportado la instalacioacuten utiliza de formapredeterminada la versioacuten en ingleacutes que se incluye en los archivos JAR de IBM Toolbox para Javav Por ejemplo al instalar la versioacuten del idioma alemaacuten del programa bajo licencia 5770-SS1 se instala el
archivo JAR del idioma alemaacuten jt400Mri_dejar
Puede antildeadir soporte para otros idiomas antildeadiendo maacutes de uno de estos archivos JAR a la variableclasspath Java carga la serie correcta seguacuten el entorno local actual
Nota 8 la serializacioacuten del archivo PCML durante el desarrollo supone dos ventajas1 Tan solo deberaacute analizar el archivo PCML durante el desarrollo y no durante la ejecucioacuten2 Los usuarios necesitaraacuten incluir menos archivos JAR en la variable CLASSPATH para ejecutar la
aplicacioacuten
Para analizar el archivo PCML durante el desarrollo necesitaraacute el moacutedulo de ejecucioacuten de PCML dedatajar o jt400jar y el analizador PCML de x4j400jar Para ejecutar la aplicacioacuten serializada los usuariossolo necesitaraacuten jt400jar Para obtener maacutes informacioacuten consulte ldquoConstruir llamadas a programa IBM icon PCMLrdquo en la paacutegina 294
Nota 9 utilice jt400jar y jt400Nativejar en lugar de data400jar data400jar contiene las clases deejecucioacuten PCML que ahora tambieacuten estaacuten en jt400jar y jt400Nativejar (Nota 1) data400jar se distribuyepara mantener la compatibilidad con los releases anteriores de IBM Toolbox para Java
Nota 10 hay copias de las clases ReportWriter en maacutes de un archivo JARv composerjarv outputwriterjarv reportwritersjar
10 IBM Toolbox para Java IBM Toolbox para Java
Si su aplicacioacuten enviacutea corrientes de datos PCL a un archivo en spool del IBM i debe establecer comodisponibles las clases de acceso mediante el archivo JAR adecuado (Nota 1) Para crear un archivo enspool que contenga los datos PCL se necesitan las clases AS400 OutputQueue PrintParameterList ySpooledFileOutputStream Para obtener maacutes informacioacuten consulte las clases ReportWriter
Propiedades del sistemaPuede especificar propiedades del sistema para configurar diversos aspectos de IBM Toolbox para Java
Por ejemplo puede utilizar las propiedades del sistema para definir un servidor proxy o un nivel derastreo Las propiedades del sistema son uacutetiles para la adecuada configuracioacuten en tiempo de ejecucioacuten sinnecesidad de volver a compilar el coacutedigo Las propiedades del sistema funcionan como las variables deentorno en el sentido de que cuando se cambia una propiedad del sistema durante la ejecucioacuten por logeneral el cambio no se refleja hasta la proacutexima vez que se ejecuta la aplicacioacuten
Puede establecer las propiedades del sistema de varias formasv Mediante el meacutetodo javalangSystemsetProperties()
Puede establecer las propiedades del sistema de forma programaacutetica mediante el meacutetodojavalangSystemsetProperties()Por ejemplo el coacutedigo siguiente establece la propiedad comibmas400accessAS400proxyServer enhqoffice
Properties systemProperties = SystemgetProperties()systemPropertiesput (comibmas400accessAS400proxyServer hqoffice)SystemsetProperties (systemProperties)
v Mediante la opcioacuten -D del mandato java
Muchos entornos permiten establecer propiedades del sistema al ejecutar aplicaciones desde una liacuteneade mandatos mediante la opcioacuten -D del mandato javaPor ejemplo el programa siguiente ejecuta la aplicacioacuten denominada Inventory con la propiedadcomibmas400accessAS400proxyServer establecida en hqoffice
java -Dcomibmas400accessAS400proxyServer=hqoffice Inventory
v Mediante un archivo jt400properties
En algunos entornos puede resultar poco praacutectico ordenar a todos los usuarios que establezcan suspropias propiedades del sistema Como alternativa puede especificar las propiedades del sistema deIBM Toolbox para Java en un archivo denominado jt400properties donde se buscaraacute como si fueraparte del paquete comibmas400access Dicho de otro modo coloque el archivo jt400properties en undirectorio comibmas400access al que apunte la sentencia CLASSPATHPor ejemplo establezca la propiedad comibmas400accessAS400proxyServer en hqoffice insertandola liacutenea siguiente en el archivo jt400properties
comibmas400accessAS400proxyServer=hqoffice
El caraacutecter de barra inclinada invertida () funciona como caraacutecter de escape en los archivos depropiedades Para especificar un caraacutecter de barra inclinada invertida literal emplee dos caracteres debarra inclinada invertida ()Modifique este ejemplo de un archivo jt400properties para su entorno
v Mediante una clase Properties
Algunos navegadores no cargan los archivos de propiedades sin cambiar expliacutecitamente los valores deseguridad Sin embargo la mayoriacutea de los navegadores siacute admiten propiedades en archivos class demodo que las propiedades del sistema de IBM Toolbox para Java tambieacuten pueden especificarsemediante una clase denominada comibmas400accessProperties que ampliacutea javautilPropertiesPor ejemplo para establecer la propiedad comibmas400accessAS400proxyServer en hqofficeutilice el coacutedigo Java siguiente
package comibmas400access
public class Properties
IBM Toolbox para Java 11
extends javautilProperties
public Properties ()
put (comibmas400accessAS400proxyServer hqoffice)
Modifique y compile este ejemplo de un archivo fuente Propertiesjava para su entorno
Si una propiedad del sistema de IBM Toolbox para Java se establece mediante maacutes de uno de losprocedimientos descritos anteriormente se aplica la prioridad siguiente (por orden de prioridaddecreciente)1 La propiedad del sistema establecida programaacuteticamente mediante
javalangSystemsetProperties()
2 La propiedad del sistema establecida mediante la opcioacuten -D del mandato java
3 La propiedad del sistema establecida mediante una clase Properties4 La propiedad del sistema establecida mediante un archivo jt400properties
IBM Toolbox para Java da soporte a las propiedades del sistema siguientesv ldquoPropiedades de servidor proxyrdquov ldquoPropiedades de rastreordquo en la paacutegina 13v ldquoPropiedades de llamada a mandatoprogramardquo en la paacutegina 13v ldquoPropiedades de FTPrdquo en la paacutegina 13v ldquoPropiedades de conexioacutenrdquo en la paacutegina 14
Propiedades de servidor proxy
Propiedad de servidor proxy Descripcioacuten
comibmas400accessAS400proxyServer Especifica el nombre de host y el nuacutemero depuerto de servidor proxy con el formato
nombrehostnuacutemeropuerto
El nuacutemero de puerto es opcional
comibmas400accessTunnelProxyServerclientCleanupInterval Especifica con queacute frecuencia en segundosel servidor proxy busca si hay conexionesdesocupadas El servidor proxy inicia unahebra para buscar los clientes que ya notienen comunicacioacuten Utilice esta propiedadpara establecer con queacute frecuencia busca lahebra si hay conexiones desocupadas
comibmas400accessTunnelProxyServerclientLifetime Especifica durante cuaacutento tiempo ensegundos puede estar desocupado un clienteantes de que el servidor proxy elimine lasreferencias a los objetos de modo que lamaacutequina virtual Java pueda eliminarlos en larecogida de basura El servidor proxy iniciauna hebra para buscar los clientes que ya notienen comunicacioacuten Utilice esta propiedadpara establecer durante cuaacutento tiempo puedeestar desocupado un cliente antes de que seejecute la recogida de basura sobre eacutel
12 IBM Toolbox para Java IBM Toolbox para Java
Propiedades de rastreo
Propiedad de rastreo Descripcioacuten
comibmas400accessTracecategory Especifica queacute categoriacuteas de rastreo deben habilitarse Setrata de una lista delimitada por comas que contienecualquier combinacioacuten de categoriacuteas de rastreo La listacompleta de categoriacuteas de rastreo se define en la claseTrace
comibmas400accessTracefile Especifica el archivo en que se escribe la salida derastreo Por omisioacuten la salida de rastreo se escribe enSystemout
comibmas400accessServerTraceJDBC Especifica queacute categoriacuteas de rastreo deben iniciarse en eltrabajo servidor JDBC Para obtener informacioacuten sobrelos valores soportados consulte la propiedad de rastreodel servidor JDBC
Propiedades de llamada a mandatoprograma
Propiedad de llamada a mandatoprograma Descripcioacuten
comibmas400accessCommandCallthreadSafe Especifica si puede suponerse que las llamadas amandato son seguras en ejecucioacuten multihebra Si es truese supone que todas las llamadas a mandato son segurasen ejecucioacuten multihebra Si es false se supone que todaslas llamadas a mandato no son seguras en ejecucioacutenmultihebra Esta propiedad no se tiene en cuenta para unobjeto CommandCall determinado siCommandCallsetThreadSafe() oAS400setMustUseSockets(true) se ha llevado a cabosobre el objeto
comibmas400accessProgramCallthreadSafe Especifica si puede suponerse que las llamadas aprograma son seguras en ejecucioacuten multihebra Si estrue se supone que todas las llamadas a programa sonseguras en ejecucioacuten multihebra Si es false se suponeque todas las llamadas a programa no son seguras enejecucioacuten multihebra Esta propiedad no se tiene encuenta para un objeto ProgramCall determinado siProgramCallsetThreadSafe() oAS400setMustUseSockets(true) se ha llevado a cabosobre el objeto
Propiedades de FTP
Propiedad de FTP Descripcioacuten
comibmas400accessFTPreuseSocket Especifica si el socket se reutiliza para variastransferencias de archivo (a traveacutes de una sola instanciaFTP) cuando estaacute en la modalidad active Si el valor estrue se reutiliza el socket Si el valor es false se crea unsocket nuevo para cada transferencia de archivo Estapropiedad no se tiene en cuenta para un objeto FTP dadosi se ha realizado FTPsetReuseSocket() sobre el objeto
IBM Toolbox para Java 13
Propiedades de conexioacuten
Propiedad de conexioacuten Descripcioacuten
comibmas400accessAS400guiAvailable Indica si el entorno actual tiene capacidad GUI Si estrue puede solicitarse informacioacuten durante el inicio desesioacuten para mostrar las condiciones de error solicitarinformacioacuten adicional o solicitar un cambio decontrasentildea Si es false las condiciones de error o lainformacioacuten que falta generaraacuten excepciones Lasaplicaciones que se ejecutan como aplicaciones de IBM io que desean controlar la interfaz de usuario de inicio desesioacuten pueden ejecutarse con la modalidad de solicitudde informacioacuten establecida en false El valorpredeterminado es true
comibmas400accessAS400mustAddLanguageLibrary Indica si los objetos AS400 deben intentar antildeadir labiblioteca de idioma secundario a la lista de bibliotecascuando se ejecutan en el sistema Si establece labiblioteca de idioma se garantiza que los mensajes deerror del sistema que se devuelven esteacuten en el idiomanacional correspondiente al entorno local del cliente Sise establece en true los objetos AS400 intentaraacuten antildeadirla biblioteca de idioma secundario a la lista de bibliotecascuando se ejecutan en el sistema Si se establece enfalse los objetos AS400 no intentaraacuten antildeadir labiblioteca de idioma secundario a la lista de bibliotecasEl valor predeterminado es false
comibmas400accessAS400mustUseNetSockets Especifica si los objetos AS400 deben utilizar soacutelo socketsde dominio de Internet Cuando el programa Java seejecuta en el sistema algunas clases de IBM Toolbox paraJava crean conexiones de socket de dominio UNIX Si seestablece en true los objetos AS400 soacutelo utilizaraacutensockets de dominio de Internet Si se establece en falselos objetos AS400 pueden utilizar conexiones de socketde dominio UNIX ademaacutes de los sockets de dominio deInternet El valor predeterminado es false
comibmas400accessAS400mustUseSockets Especifica si los objetos AS400 deben utilizar socketsCuando el programa Java se ejecuta en el sistemaalgunas clases de IBM Toolbox para Java acceden a losdatos llamando a una API en lugar de realizar unallamada de socket al sistema Existen algunas pequentildeasdiferencias en el comportamiento de las clases cuando seutilizan llamadas de API en lugar de llamadas de socketSi el programa se ve afectado por estas diferenciaspuede obligar a las clases a que utilicen llamadas desocket en lugar de llamadas de API estableciendo lapropiedad en true El valor predeterminado es false
comibmas400accessAS400mustUseSuppliedProfile Especifica si los objetos AS400 deben utilizar soacutelo unperfil suministrado Cuando el programa Java se ejecutaen el sistema puede utilizarse la informacioacuten del perfilde usuario con el que se ha iniciado actualmente lasesioacuten (CURRENT) Si el valor es true debesuministrarse un perfil de usuario Si es false losobjetos AS400 recuperan la informacioacuten del perfil deusuario actual si no se suministra un perfil de usuario Elvalor predeterminado es false
14 IBM Toolbox para Java IBM Toolbox para Java
Propiedad de conexioacuten Descripcioacuten
comibmas400accessAS400signonHandler Especifica el manejador de inicio de sesioacutenpredeterminado Esta propiedad no se tiene en cuentapara un objeto AS400 dado si se ha realizadoAS400setSignonHandler() sobre el objeto o si se hallamado a AS400setDefaultSignonHandler()
comibmas400accessAS400threadUsed Especifica si los objetos AS400 usan hebras en unacomunicacioacuten con los servidores de host Si IBM Toolboxpara Java utiliza hebras puede ser ventajoso para elrendimiento la desactivacioacuten de las hebras puede sernecesaria si la aplicacioacuten debe ser compatible con laespecificacioacuten de Enterprise Java Beans El valorpredeterminado es true
Ejemplo archivo de propiedadesEste ejemplo muestra las propiedades del servidor proxy las categoriacuteas de rastreo las llamadas amandato las llamadas a programa las transferencias de archivo y las conexiones========================================================= IBM Toolbox para Java --------------------------------------------------------- Archivo de propiedades de ejemplo Denomine este archivo jt400properties y almaceacutenelo en un directorio comibmas400access al que apunte la la classpath =========================================================
--------------------------------------------------------- Propiedades del sistema de servidor proxy ---------------------------------------------------------
Esta propiedad del sistema especifica el nombre de host y el nuacutemero de puerto del servidor proxy con el formato nombrehostnuacutemeropuerto El nuacutemero de puerto es opcionalcomibmas400accessAS400proxyServer=hqoffice
Esta propiedad del sistema especifica con queacute frecuencia en segundos el servidor proxy buscaraacute si hay conexiones desocupadas El servidor proxy inicia una hebra para buscar los clientes que ya no tienen comunicacioacuten Utilice esta propiedad para establecer con queacute frecuencia busca la hebra si hay conexiones desocupadascomibmas400accessTunnelProxyServerclientCleanupInterval=7200
Esta propiedad del sistema especifica durante cuaacutento tiempo en segundos un cliente puede estar desocupado antes de eliminarse El servidor proxy inicia una hebra para buscar los clientes que ya no tienen comunicacioacuten Utilice esta propiedad para establecer cuaacutento tiempo puede estar desocupado un cliente antes de eliminarsecomibmas400accessTunnelProxyServerclientLifetime=2700
--------------------------------------------------------- Propiedades del sistema de rastreo ---------------------------------------------------------
Esta propiedad del sistema especifica queacute categoriacuteas de rastreo deben habilitarse Se trata de una lista delimitada por comas que contiene cualquier combinacioacuten de categoriacuteas de rastreo La lista completa de categoriacuteas de rastreo se define en la clase Tracecomibmas400accessTracecategory=errorwarninginformation
Esta propiedad del sistema especifica el archivo en que se escribe la
IBM Toolbox para Java 15
salida de rastreo Por omisioacuten la salida de rastreo se escribe en Systemoutcomibmas400accessTracefile=ctemptraceout
--------------------------------------------------------- Propiedades del sistema de llamada a mandato ---------------------------------------------------------
Esta propiedad del sistema especifica si las llamadas a mandato deben suponerse como seguras en ejecucioacuten multihebra Si es true se supone que todas las llamadas a mandato son seguras en ejecucioacuten multihebra Si es false se supone que todas las llamadas a mandato no son seguras en ejecucioacuten multihebra Esta propiedad se omite para un objeto CommandCall determinado si CommandCallsetThreadSafe(truefalse) o AS400setMustUseSockets(true) se ha llevado a cabo sobre el objetocomibmas400accessCommandCallthreadSafe=true
--------------------------------------------------------- Propiedades del sistema de llamada a programa ---------------------------------------------------------
Esta propiedad del sistema especifica si las llamadas a programa deben suponerse como seguras en ejecucioacuten multihebra Si es true se supone que todas las llamadas a mandato son seguras en ejecucioacuten multihebra Si es false se supone que todas las llamadas a mandato no son seguras en ejecucioacuten multihebra Esta propiedad se omite para un objeto ProgramCall determinado si ProgramCallsetThreadSafe(truefalse) o AS400setMustUseSockets(true) se ha llevado a cabo sobre el objetocomibmas400accessProgramCallthreadSafe=true
--------------------------------------------------------- Propiedades del sistema de FTP ---------------------------------------------------------
Esta propiedad del sistema especifica si se reutiliza el socket para varias transferencias de archivo (a traveacutes de una sola instancia FTP) cuando estaacute en la modalidad active Si el valor es true se reutiliza el socket Si es false se crea un socket nuevo para cada transferencia de archivo Esta propiedad no se tiene en cuenta para un objeto FTP dado si FTPsetReuseSocket(truefalse) se ha realizado sobre el objetocomibmas400accessFTPreuseSocket=true
--------------------------------------------------------- Propiedades del sistema de conexioacuten ---------------------------------------------------------
Esta propiedad del sistema especifica el manejador de inicio de sesioacuten predeterminado Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setSignonHandler() se ha ejecutado sobre el objeto o si se ha llamado a AS400setDefaultSignonHandler()comibmas400accessAS400signonHandler=mypackageMyHandler
Esta propiedad del sistema especifica si en Toolbox se debe suponer que el entorno actual tiene capacidad GUI Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setGuiAvailable() se ha ejecutado en el objetocomibmas400accessAS400guiAvailable=true
Esta propiedad del sistema especifica si debe antildeadirse la biblioteca de idioma secundario correspondiente a la lista de bibliotecas cuando se ejecuta en el sistema De forma predeterminada la biblioteca no se antildeade
16 IBM Toolbox para Java IBM Toolbox para Java
Esta propiedad no se tiene en cuenta para un objeto AS400 dado si se ha ejecutado AS400setMustAddLanguageLibrary() en el objetocomibmas400accessAS400mustAddLanguageLibrary=true
Esta propiedad del sistema especifica si deben utilizarse sockets cuando se comunica con el sistema Si se establece en true esta propiedad indica a Toolbox que no explote optimizaciones nativas cuando se ejecute directamente en el sistema De forma predeterminada cuando se ejecuta directamente en el sistema Toolbox explotaraacute optimizaciones nativas si estaacuten disponibles y sockets de elusioacuten Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setMustUseSockets() se ha ejecutado en el objetocomibmas400accessAS400mustUseSockets=true
Esta propiedad del sistema especifica si deben utilizarse sockets de dominio de Internet cuando se comunica con el sistema Si se establece en true esta propiedad indica a Toolbox que no explote los sockets Unix cuando se ejecute directamente en el sistema De forma predeterminada cuando se ejecuta directamente en el sistema Toolbox explotaraacute los sockets Unix si estaacuten disponibles en lugar de sockets de dominio de Internet Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setMustUseNetSockets() se ha ejecutado en el objetocomibmas400accessAS400mustUseNetSockets=true
Esta propiedad del sistema especifica si debe utilizarse el perfil proporcionado de forma expliacutecita cuando se comunica con el sistema Si se establece en true esta propiedad indica a Toolbox que no explote el perfil con el que se ha iniciado la sesioacuten actualmente de forma predeterminada cuando se ejecuta directamente en el sistema Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setMustUseSuppliedProfile() se ha ejecutado en el objetocomibmas400accessAS400mustUseSuppliedProfile=true
Esta propiedad del sistema especifica si se utilizan hebras cuando se comunica con los servidores de host De forma predeterminada el objeto AS400 crea hebras diferentes para escuchar en los sockets de comunicacioacuten a los servidores de host Si se establece en false esta propiedad indica a Toolbox que no cree hebras diferentes para las comunicaciones de los servidores de host Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setThreadUsed() se ha ejecutado en el objetocomibmas400accessAS400threadUsed=true End
Ejemplo archivo fuente de clase de propiedades del sistema========================================================= IBM Toolbox para Java--------------------------------------------------------- Archivo fuente de clase de propiedades de ejemplo Compile este archivo fuente y almacene el archivo de clase en la sentencia CLASSPATH=========================================================package comibmas400access
public class Propertiesextends javautilProperties
public Properties ()
--------------------------------------------------------- Propiedades del sistema de servidor proxy
IBM Toolbox para Java 17
---------------------------------------------------------
Esta propiedad del sistema especifica el nombre de host y el nuacutemero de puerto del servidor proxy con el formato nombrehostnuacutemeropuerto El nuacutemero de puerto es opcionalput (comibmas400accessAS400proxyServer hqoffice)
Esta propiedad del sistema especifica con queacute frecuencia en segundos el servidor proxy buscaraacute si hay conexiones desocupadas El servidor proxy inicia una hebra para buscar los clientes que ya no tienen comunicacioacuten Utilice esta propiedad para establecer con queacute frecuencia busca la hebra si hay conexiones desocupadasput(comibmas400accessTunnelProxyServerclientCleanupInterval 7200)
Esta propiedad del sistema especifica durante cuaacutento tiempo en segundos un cliente puede estar desocupado antes de eliminarse El servidor proxy inicia una hebra para buscar los clientes que ya no tienen comunicacioacuten Utilice esta propiedad para establecer cuaacutento tiempo puede estar desocupado un cliente antes de eliminarseput(comibmas400accessTunnelProxyServerclientLifetime 2700)
--------------------------------------------------------- Propiedades del sistema de rastreo ---------------------------------------------------------
Esta propiedad del sistema especifica queacute categoriacuteas de rastreo deben habilitarse Se trata de una lista delimitada por comas que contiene cualquier combinacioacuten de categoriacuteas de rastreo La lista completa de categoriacuteas de rastreo se define en la clase Traceput (comibmas400accessTracecategory errorwarninginformation)
Esta propiedad del sistema especifica el archivo en que se escribe la salida de rastreo Por omisioacuten la salida de rastreo se escribe en Systemoutput (comibmas400accessTracefile ctemptraceout)
--------------------------------------------------------- Propiedades del sistema de llamada a mandato ---------------------------------------------------------
Esta propiedad del sistema especifica si las llamadas a mandato deben suponerse como seguras en ejecucioacuten multihebra Si es true se supone que todas las llamadas a mandato son seguras en ejecucioacuten multihebra Si es false se supone que todas las llamadas a programa no son seguras en ejecucioacuten multihebra Esta propiedad se omite para un objeto CommandCall determinado si CommandCallsetThreadSafe(truefalse) o AS400setMustUseSockets(true) se ha llevado a cabo sobre el objetoput (comibmas400accessCommandCallthreadSafe true)
--------------------------------------------------------- Propiedades del sistema de llamada a programa ---------------------------------------------------------
Esta propiedad del sistema especifica si las llamadas a programa deben suponerse como seguras en ejecucioacuten multihebra Si es true se supone que todas las llamadas a mandato son seguras en ejecucioacuten multihebra Si es false se supone que todas las llamadas a programa no son seguras en ejecucioacuten multihebra Esta propiedad se omite para un objeto ProgramCall determinado si ProgramCallsetThreadSafe(truefalse) o AS400setMustUseSockets(true) se ha llevado a cabo sobre el objetoput (comibmas400accessProgramCallthreadSafe true)
--------------------------------------------------------- Propiedades del sistema de FTP
18 IBM Toolbox para Java IBM Toolbox para Java
---------------------------------------------------------
Esta propiedad del sistema especifica si se reutiliza el socket para varias transferencias de archivo (a traveacutes de una sola instancia FTP) en modalidad active Si el valor es true se reutiliza el socket Si el valor es false se crea un socket nuevo para cada transferencia de archivos Esta propiedad no se tiene en cuenta para un objeto FTP dado si FTPsetReuseSocket(truefalse) se ha realizado sobre el objetoput (comibmas400accessFTPreuseSocket true)
--------------------------------------------------------- Propiedades del sistema de conexioacuten ---------------------------------------------------------
Esta propiedad del sistema especifica el manejador de inicio de sesioacuten predeterminado Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setSignonHandler() se ha ejecutado en el objeto o si se ha llamado a AS400setDefaultSignonHandler()put (comibmas400accessAS400signonHandler mypackageMyHandler)
Esta propiedad del sistema especifica si en Toolbox se debe suponer que el entorno actual tiene capacidad GUI Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setGuiAvailable() se ha ejecutado en el objetoput (comibmas400accessAS400guiAvailable true)
Esta propiedad del sistema especifica si debe antildeadirse la biblioteca de idioma secundario correspondiente a la lista de bibliotecas cuando se ejecuta en el sistema De forma predeterminada la biblioteca no se antildeade Esta propiedad no se tiene en cuenta para un objeto AS400 dado si se ha ejecutado AS400setMustAddLanguageLibrary() en el objetoput (comibmas400accessAS400mustAddLanguageLibrary true)
Esta propiedad del sistema especifica si deben utilizarse sockets cuando se comunica con el sistema De forma predeterminada cuando se ejecuta directamente en el sistema Toolbox explotaraacute optimizaciones nativas si estaacuten disponibles y sockets de elusioacuten Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setMustUseSockets() se ha ejecutado en el objetoput (comibmas400accessAS400mustUseSockets true)
Esta propiedad del sistema especifica si deben utilizarse sockets de dominio de Internet cuando se comunica con el sistema Si se establece en true esta propiedad indica a Toolbox que no explote los sockets Unix cuando se ejecute directamente en el sistema De forma predeterminada cuando se ejecuta directamente en el sistema Toolbox explotaraacute los sockets Unix si estaacuten disponibles en lugar de sockets de dominio de Internet Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setMustUseNetSockets() se ha ejecutado en el objetoput (comibmas400accessAS400mustUseNetSockets true)
Esta propiedad del sistema especifica si debe utilizarse el perfil proporcionado de forma expliacutecita cuando se comunica con el sistema Si se establece en true esta propiedad indica a Toolbox que no explote el perfil con el que se ha iniciado la sesioacuten actualmente de forma predeterminada cuando se ejecuta directamente en el sistema Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setMustUseSuppliedProfile() se ha ejecutado en el objetoput (comibmas400accessAS400mustUseSuppliedProfile true)
IBM Toolbox para Java 19
Esta propiedad del sistema especifica si se utilizan hebras cuando se comunica con los servidores de host De forma predeterminada el objeto AS400 crea hebras diferentes para escuchar en los sockets de comunicacioacuten a los servidores de host Si se establece en false esta propiedad indica a Toolbox que no cree hebras diferentes para las comunicaciones de los servidores de host Esta propiedad no se tiene en cuenta para un objeto AS400 dado si AS400setThreadUsed() se ha ejecutado en el objetoput (comibmas400accessAS400threadUsed true)
JTOpenLiteEl paquete JTOpenLite (comibmjtopenlite) permite escribir programas Java que permiten a diversosdispositivos moacuteviles acceder directamente a datos y recursos de IBM i Aunque JTOpenLite se consideraparte de IBM Toolbox para Java no se incluye en el producto bajo licencia El archivo jar de JTOpenLite(jtopenlitejar) se incluye en la versioacuten de fuente abierto de IBM Toolbox para Java denominada JTOpenDebe bajar y configurar por separado JTOpenLite que estaacute contenido en JTOpen
Iniciacioacuten a JTOpenLite
Puede bajar JTOpenLite del sitio web de IBM Toolbox for JavaJTOpen El sitio web tambieacuten ofreceinformacioacuten adicional sobre la configuracioacuten de JTOpenLiteInformacioacuten relacionada
Sitio web de IBM Toolbox for JavaJTOpen
Clases de IBM Toolbox para JavaLas clases de IBM Toolbox para Java estaacuten categorizadas por paquetes como todas las clases Java Cadapaquete proporciona un tipo determinado de funcionalidad
Para mayor comodidad en esta documentacioacuten habitualmente se hace referencia a cada paquete con unnombre corto Por ejemplo el paquete comibmas400access se denomina paquete access
Clases de accesoLas clases de acceso de IBM Toolbox para Java representan datos y recursos de IBM iInformacioacuten relacionadaJavadoc de clases EventLogPermite anotar excepciones y mensajes con independencia del dispositivo utilizado para visualizarlosResumen de paquetes de acceso
Puntos de acceso de servidorLas clases de acceso de IBM Toolbox para Java suministran funciones similares al uso de las API de IBM iAccess para Windows Sin embargo la instalacioacuten de IBM i Access para Windows no es un requisito parala utilizacioacuten de estas clases
Las clases de acceso utilizan los sistemas existentes como puntos de acceso Cada servidor se ejecuta enun trabajo aparte del sistema y enviacutea y recibe corrientes de datos a traveacutes de una conexioacuten por socket
Figura 1 Puntos de acceso de servidor
20 IBM Toolbox para Java IBM Toolbox para Java
|
|||||
|
||
|
|
Clase AS400La clase AS400 de IBM Toolbox para Java gestiona un conjunto de conexiones por socket a los trabajos deservidor en el servidor sobre comportamiento de inicio de sesioacuten para el servidor incluido lapresentacioacuten al usuario de la solicitud de informacioacuten de inicio de sesioacuten la colocacioacuten de contrasentildeas enmemoria cacheacute y la gestioacuten de usuario predeterminado
El programa Java debe proporcionar un objeto AS400 cuando el programa Java utiliza una instancia deuna clase que accede al sistema IBM i Por ejemplo el objeto CommandCall requiere un objeto AS400para poder enviar mandatos al sistema
El objeto AS400 maneja de manera diferente las conexiones los ID de usuario y las contrasentildeas cuando seejecuta en la maacutequina virtual Java de IBM i Para obtener maacutes informacioacuten consulte ldquoMaacutequina virtualJava de IBM irdquo en la paacutegina 369
Los objetos AS400 ahora soportan la autenticacioacuten de Kerberos utilizando la interfaz de programacioacuten deaplicaciones Java Generic Security Service (API JGSS) para autenticar en el servidor en lugar de utilizarun ID de usuario y una contrasentildea
IBM Toolbox para Java 21
Nota para utilizar los tickets de kerberos debe configurarse la interfaz de programacioacuten de aplicacionesJava Generic Security Services (JGSS) Para obtener maacutes informacioacuten sobre JGSS consulte la
Documentacioacuten de seguridad de Java
Consulte la seccioacuten Gestionar conexiones para obtener informacioacuten acerca de coacutemo se gestionan lasconexiones con el servidor mediante el objeto AS400 En el Javadoc AS400ConnectionPool encontraraacuteinformacioacuten acerca de coacutemo reducir el tiempo de conexioacuten inicial solicitando conexiones desde unaagrupacioacuten de conexiones
La clase AS400 proporciona las siguientes funciones de inicio de sesioacutenv Autenticar el perfil de usuariov Obtener una credencial de siacutembolo de perfil y autenticar el perfil de usuario asociadov Establecer una credencial de siacutembolo de perfilv Gestionar identificadores de usuario predeterminadosv Colocar contrasentildeas en la memoria cacheacutev Solicitar ID de usuariov Cambiar una contrasentildeav Obtener la versioacuten y el release del sistema operativo
Para obtener informacioacuten acerca de coacutemo utilizar un objeto AS400 al enviar o recibir datos cifradosconsulte la clase SecureAS400Informacioacuten relacionadaJavadoc AS400ConnectionPoolJavadoc AS400
Gestioacuten de identificadores de usuario predeterminado
Si desea minimizar el nuacutemero de veces que un usuario debe iniciar la sesioacuten utilice un ID de usuariopredeterminado El programa Java utiliza el ID de usuario predeterminado si no se suministra ninguacuten IDde usuario El ID de usuario predeterminado puede establecerse ya sea por medio del programa Java omediante la interfaz de usuario Si el ID de usuario predeterminado no se ha establecido el diaacutelogo Iniciode sesioacuten permite al usuario establecer el ID de usuario predeterminado
Una vez establecido el ID de usuario predeterminado para un servidor determinado el diaacutelogo Inicio desesioacuten no permite realizar cambios en el mismo Cuando se construye un objeto AS400 el programa Javapuede suministrar el ID de usuario y la contrasentildea Cuando un programa suministra el ID de usuario alobjeto AS400 el ID de usuario predeterminado no se ve afectado El programa si va a establecer ocambiar el ID de usuario predeterminado debe establecer expliacutecitamente setUseDefaultUser() EnResumen de solicitudes ID de usuario predeterminado y colocacioacuten de contrasentildeas en memoria cacheacuteencontraraacute maacutes informacioacuten
El objeto AS400 tiene meacutetodos para obtener establecer y eliminar el ID de usuario predeterminado Elprograma Java tambieacuten puede inhabilitar el proceso de ID de usuario predeterminado mediante elmeacutetodo setUseDefaultUser() Si el proceso de ID de usuario predeterminado estaacute inhabilitado y laaplicacioacuten Java no suministra ninguacuten ID de usuario el objeto AS400 solicita el ID de usuario cada vezque se establece una conexioacuten con el servidor
Todos los objetos AS400 que representan el mismo servidor IBM i dentro de una maacutequina virtual Javautilizan el mismo ID de usuario predeterminado
En el ejemplo que sigue se crean dos conexiones con el servidor utilizando dos objetos AS400 Si elusuario al iniciar la sesioacuten marcoacute el recuadro ID de usuario predeterminado cuando se establezca lasegunda conexioacuten no se presentaraacute al usuario ninguna solicitud para que escriba un ID de usuario
22 IBM Toolbox para Java IBM Toolbox para Java
Cree dos objetos AS400 para elmismo sistema
AS400 sys1 = new AS400(mySystemmyCompanycom)AS400 sys2 = new AS400(mySystemmyCompanycom)
Inicie una conexioacuten con el servicio de llamada a mandato Se solicita al usuario el ID de usuario y la contrasentildeasys1connectService(AS400COMMAND)
Inicie otra conexioacuten con el servicio de llamada a mandato No se solicita informacioacuten al usuariosys2connectService(AS400COMMAND)
La informacioacuten de ID de usuario predeterminado se eliminaraacute cuando el colector de basura haya recogidoel uacuteltimo objeto AS400 correspondiente al servidor
Utilizacioacuten de una memoria cacheacute de contrasentildeas
La memoria cacheacute de contrasentildeas permite a IBM Toolbox para Java guardar informacioacuten de contrasentildea yde ID de usuario para que no se solicite al usuario dicha informacioacuten cada vez que se establezca unaconexioacuten
Los meacutetodos proporcionados por el objeto AS400 permiten realizar estas tareasv Borrar la memoria cacheacute de contrasentildeas e inhabilitarlav Minimizar el nuacutemero de veces que el usuario debe escribir informacioacuten de inicio de sesioacuten
La memoria cacheacute de contrasentildeas es aplicable a todos los objetos AS400 que representan un sistema IBM identro de una maacutequina virtual Java Java no permite a las maacutequinas virtuales compartir informacioacutenentre siacute por lo que una contrasentildea colocada en la memoria cacheacute en una maacutequina virtual Java no esvisible para otra maacutequina virtual La memoria cacheacute quedaraacute descartada en cuanto el colector de basurahaya recogido el uacuteltimo objeto AS400 El diaacutelogo Inicio de sesioacuten dispone de un recuadro de seleccioacutenque ofrece al usuario la opcioacuten de guardar la contrasentildea en la memoria cacheacute Cuando se construye unobjeto AS400 el programa Java tiene la opcioacuten de suministrar el ID de usuario y la contrasentildea Lascontrasentildeas suministradas en los constructores no se almacenan en la memoria cacheacute
El objeto AS400 proporciona meacutetodos para borrar la memoria cacheacute de contrasentildeas e inhabilitar lamemoria cacheacute de contrasentildeas En la seccioacuten Resumen de solicitudes ID de usuario predeterminado ycolocacioacuten de contrasentildeas en la memoria cacheacute encontraraacute maacutes informacioacuten
Solicitud de identificadores de usuario y contrasentildeas
Si se utiliza la clase AS400 la solicitud de ID de usuario y contrasentildea puede presentarse cuando seestablece la conexioacuten con el servidor La solicitud puede quedar desactivada por el programa Java
Los programas Java pueden desactivar la solicitud de ID de usuario y contrasentildea asiacute como las ventanasde mensajes visualizadas por el objeto AS400 Ello puede ser necesario por ejemplo cuando unaaplicacioacuten se estaacute ejecutando en una pasarela en nombre de muchos clientes Si las solicitudes y losmensajes se visualizan en la maacutequina pasarela el usuario no puede interactuar con las solicitudes Lasaplicaciones de este tipo pueden desactivar toda presentacioacuten de solicitudes utilizando el meacutetodosetGuiAvailable() en el objeto AS400
En Resumen de solicitudes ID de usuario predeterminado y colocacioacuten de contrasentildeas en memoria cacheacuteencontraraacute maacutes informacioacuten
IBM Toolbox para Java 23
Resumen de solicitudes ID de usuario predeterminado y colocacioacuten de contrasentildeas en memoriacacheacute
Los programas Java pueden controlar en queacute momento se presenta la solicitud de ID de usuario ycuaacutendo entra en juego la colocacioacuten de contrasentildeas en la memoria cacheacute La informacioacuten del diaacutelogoInicio de sesioacuten permite establecer el ID de usuario predeterminado y poner la contrasentildea en la memoriacacheacute La tabla que figura a continuacioacuten es un resumen de cuaacutendo se presentan las solicitudes queacuteinformacioacuten se recupera y cuaacutel es la informacioacuten que se establece
En esta tabla se presupone que el programa Java permite el proceso de ID de usuario predeterminado yla colocacioacuten de contrasentildeas en la memoria cacheacute y que se ha marcado el recuadro ID de usuariopredeterminado y el recuadro Guardar contrasentildea en el diaacutelogo Inicio de sesioacuten
Utilice esta tabla para las conexiones de cliente no para la ejecucioacuten de Java en el servidor
Sistemaproporcionado enel constructor
ID de usuarioproporcionado enel constructor
Contrasentildeaproporcionada enel constructor
Se estableceusuariopredeterminado
Contrasentildea enmemoria cacheacutepara ID deusuario
Resultado deutilizar valoresmarcados
Se solicita alusuario el nombredel sistema el IDde usuario y lacontrasentildea El IDde usuariopredeterminadose establece y lacontrasentildea sepone en memoriacacheacute
Siacute Se solicita alusuario el ID deusuario y lacontrasentildea Elnombre delsistema sevisualiza pero nopuede cambiarseEl ID de usuariopredeterminadose establece y lacontrasentildea sepone en memoriacacheacute
24 IBM Toolbox para Java IBM Toolbox para Java
Sistemaproporcionado enel constructor
ID de usuarioproporcionado enel constructor
Contrasentildeaproporcionada enel constructor
Se estableceusuariopredeterminado
Contrasentildea enmemoria cacheacutepara ID deusuario
Resultado deutilizar valoresmarcados
Siacute Siacute Se solicita alusuario lacontrasentildea El IDde usuario sevisualiza y puedecambiarse Elnombre delsistema sevisualiza pero nopuede cambiarseEl ID de usuariopredeterminadono cambia Lacontrasentildea sepone en memoriacacheacute
Siacute Siacute Siacute No se presentaninguna solicitudEl ID de usuariopredeterminadono cambia Lacontrasentildea no sepone en memoriacacheacute
Siacute Se solicita alusuario el nombredel sistema y lacontrasentildea El IDde usuario sevisualiza y puedecambiarseCambiar el ID deusuario nomodifica el ID deusuariopredeterminadoLa contrasentildea sepone en memoriacacheacute
Siacute Siacute Se solicita lacontrasentildea del IDde usuariopredeterminadoEl ID de usuariose visualiza ypuede cambiarseEl nombre delsistema sevisualiza pero nopuede cambiarseLa contrasentildea sepone en memoriacacheacute
IBM Toolbox para Java 25
Sistemaproporcionado enel constructor
ID de usuarioproporcionado enel constructor
Contrasentildeaproporcionada enel constructor
Se estableceusuariopredeterminado
Contrasentildea enmemoria cacheacutepara ID deusuario
Resultado deutilizar valoresmarcados
Siacute Siacute Siacute No se presentaninguna solicitudLa conexioacuten serealiza utilizandoel ID de usuariopredeterminado yla contrasentildea dela memoria cacheacute
Siacute Siacute Siacute No se presentaninguna solicitudLa conexioacuten serealiza como elusuarioespecificadoutilizando lacontrasentildea de lamemoria cacheacute
Siacute Siacute Siacute Siacute No se presentaninguna solicitudLa conexioacuten serealiza como elusuarioespecificadoutilizando lacontrasentildea de lamemoria cacheacute
Siacute Siacute Siacute Siacute No se presentaninguna solicitudLa conexioacuten serealiza como elusuarioespecificado
Clase SecureAS400La clase SecureAS400 permite utilizar un objeto AS400 al enviar o recibir datos cifrados Cuando unobjeto AS400 se comunica con el servidor los datos de usuario (excepto la contrasentildea de usuario) seenviacutean sin cifrar al servidor Por consiguiente los objetos de IBM Toolbox para Java asociados a un objetoAS400 intercambian datos con el servidor por medio de una conexioacuten normal
Si desea utilizar IBM Toolbox para Java para intercambiar datos confidenciales con el servidor puedecifrar los datos mediante SSL (capa de sockets segura) Utilice el objeto SecureAS400 para designar losdatos que desea cifrar Los objetos de IBM Toolbox para Java asociados a un objeto SecureAS400intercambian datos con el servidor por medio de una conexioacuten segura
Encontraraacute maacutes informacioacuten en el tema acerca de Capa de Sockets Segura y Extensioacuten de sockets segurosJava
La clase SecureAS400 es una subclase de la AS400
Puede configurar una conexioacuten de servidor segura creando una instancia de un objeto SecureAS400 delos modos siguientesv SecureAS400(String systemName String userID) le solicita informacioacuten de inicio de sesioacuten
26 IBM Toolbox para Java IBM Toolbox para Java
v SecureAS400(String systemName String userID String password) no le solicita informacioacuten de iniciode sesioacuten
A continuacioacuten figura un ejemplo de coacutemo se utiliza CommandCall para enviar mandatos al servidorutilizando una conexioacuten segura
Cree un objeto AS400 seguro Esta sentencia es la uacutenica que cambia en relacioacuten con el caso no SSLSecureAS400 sys = new SecureAS400(mySystemmyCompanycom)
Cree un objeto de llamada a mandatoCommandCall cmd = new CommandCall(sys myCommand)
Ejecute los mandatos Se establece una conexioacuten segura al ejecutarse el mandato Toda la informacioacuten pasada entre el cliente y el servidor estaacute cifradacmdrun()
Informacioacuten relacionadaJavadoc SecureAS400Javadoc AS400
Clase AS400JPingLa clase AS400JPing de IBM Toolbox para Java permite al programa Java consultar los servidores de hostpara ver queacute servicios estaacuten en ejecucioacuten y queacute puertos estaacuten en servicio
Para consultar los servidores desde una liacutenea de mandatos utilice la clase JPing
La clase AS400JPing proporciona varios meacutetodosv Realizar un ping del servidorv Realizar un ping de un servicio especiacutefico en el servidorv Establecer un objeto PrintWriter en el que desea anotar la informacioacuten de la operacioacuten pingv Establecer el tiempo de espera de la operacioacuten ping
Ejemplo coacutemo se utiliza AS400JPing
El ejemplo siguiente muestra coacutemo utilizar AS400JPing dentro de un programa Java para realizar un pingdel servicio de mandatos remotos
AS400JPing pingObj = new AS400JPing(myAS400 AS400COMMAND false)if (pingObjping())
Systemoutprintln(SATISFACTORIO)else
Systemoutprintln(ANOacuteMALO)
Informacioacuten relacionadaClase AS400JPing
Clase BidiTransformLa clase BidiTransform de IBM Toolbox para Java proporciona transformaciones de disentildeo que hacenposible la conversioacuten de texto bidireccional en formato IBM i (tras convertirlo primero a Unicode) a textobidireccional en formato Java o de formato Java a formato IBM i
Clase AS400BidiTransform
La clase AS400BidiTransform permite llevar a cabo estas accionesv Obtener y establecer el CCSID del sistemav Obtener y establecer el tipo de serie de los datos IBM iv Obtener y establecer el tipo de serie de los datos de Java
IBM Toolbox para Java 27
v Convertir datos de un disentildeo Java a IBM iv Convertir datos de un disentildeo IBM i a Java
Ejemplo coacutemo se utiliza AS400BidiTransform
El ejemplo que sigue muestra coacutemo se puede utilizar la clase AS400BidiTransform para transformar textobidireccional
Datos Javaa disentildeo del sistema
AS400BidiTransform abtabt = new AS400BidiTransform(424)String dst = abttoAS400Layout(alguna serie bidireccional)
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Clase BidiConversionPropertiesLa clase BidiConversionProperties proporciona un conjunto de propiedades que pueden utilizarse paracontrolar la conversioacuten de datos del juego de caracteresInformacioacuten relacionadaDocumentacioacuten java de BidiConversionProperties
Clase CallStackEntryLa clase CallStackEntry representa una entrada en la pila de llamadas de una hebra especiacutefica de untrabajo servidor
Los objetos de este tipo se generan llamando a JobgetCallStack()Informacioacuten relacionadaJavadoc de CallStackEntry
Clases ClusteredHashTableLas clases ClusteredHashTable de IBM Toolbox para Java permiten a los programas Java utilizar tablashash agrupadas en cluacutester de gran disponibilidad para compartir y duplicar datos en almacenamiento nopersistente entre los nodos de un cluacutester
Para utilizar las clases ClusteredHashTable compruebe que puede emplear almacenamiento nopersistente para los datos Los datos duplicados no estaacuten cifrados
Nota la siguiente informacioacuten da por supuesto que se han entendido los conceptos y teacuterminoshabituales de la tecnologiacutea de cluacutester de IBM i Consulte la seccioacuten Tecnologiacutea de cluacutester de IBM i paraobtener detalles
Para utilizar la clase ClusteredHashTable es necesario haber definido y activado un cluacutester en lossistemas Tambieacuten debe iniciar un servidor de tablas hash agrupadas en cluacutester Para obtener maacutesinformacioacuten consulte Configurar cluacutesteres e Interfaces API de tablas hash agrupadas en cluacutester
Los paraacutemetros obligatorios son el nombre del servidor de tablas hash agrupadas en cluacutester y el objetoAS400 que representa el sistema que contiene el servidor de tablas hash agrupadas en cluacutester
Para almacenar datos en un servidor de tablas hash agrupadas en cluacutester necesita un handle de conexioacuteny una clavev Al abrir una conexioacuten el servidor de tablas hash agrupadas en cluacutester asigna el handle de conexioacuten
que debe especificar en las peticiones posteriores efectuadas al servidor de tablas hash agrupadas encluacutester Este handle de conexioacuten solo es adecuado para el objeto AS400 del que se ha creado unainstancia por lo que debe abrir otra conexioacuten si utiliza un objeto AS400 distinto
28 IBM Toolbox para Java IBM Toolbox para Java
v Debe especificar la clave para acceder a los datos de la tabla hash agrupada en cluacutester y cambiar losdatos Las claves duplicadas no estaacuten soportadas
La clase ClusteredHashTable proporciona meacutetodos que permiten llevar a cabo las acciones siguientesv Abrir una conexioacuten con el trabajo servidor de tablas hash agrupadas en cluacutesterv Generar una clave exclusiva para almacenar datos en la tabla hash agrupada en cluacutesterv Cerrar la conexioacuten activa con el trabajo servidor de tablas hash agrupadas en cluacutester
Algunos meacutetodos de la clase ClusteredHashTable utilizan la clase ClusteredHashTableEntry para llevar acabo las acciones siguientesv Obtener una entrada de la tabla hash agrupada en cluacutesterv Almacenar una entrada en la tabla hash agrupada en cluacutesterv Obtener una lista de entradas de la tabla hash agrupada en cluacutester para todos los perfiles de usuario
Ejemplo coacutemo se utiliza ClusteredHashTable
El ejemplo siguiente se ejecuta en el servidor de tablas hash agrupadas en cluacutester denominadoCHTSVR01 Supone que ya hay un cluacutester y un servidor de tablas hash agrupadas en cluacutester activosAbre una conexioacuten genera una clave coloca una entrada utilizando la clave nueva en la tabla hashagrupada en cluacutester obtiene una entrada de la tabla hash agrupada en cluacutester y cierra la conexioacuten
ClusteredHashTableEntry myEntry = null
String myData = new String(Estos son mis datos)Systemoutprintln(Datos que deben almacenarse + myData)
AS400 system = new AS400()
ClusteredHashTable cht = new ClusteredHashTable(systemCHTSVR01)
Abra una conexioacutenchtopen()
Obtenga una clave para la tabla hashbyte[] key = nullkey = chtgenerateKey()
Prepare algunos datos que desee almacenar en la tabla hash ENTRY_AUTHORITY_ANY_USER significa que cualquier usuario puede acceder a la entrada de la tabla hash agrupada en cluacutester DUPLICATE_KEY_FAIL significa que si la clave especificada ya existe la peticioacuten ClusteredHashTableput() no se ejecutaraacute correctamenteint timeToLive = 500myEntry = new ClusteredHashTableEntry(keymyDatagetBytes()timeToLive
ClusteredHashTableEntryENTRY_AUTHORITY_ANY_USERClusteredHashTableEntryDUPLICATE_KEY_FAIL)
Almacene (o coloque) la entrada en la tabla hashchtput(myEntry)
Obtenga una entrada de la tabla hashClusteredHashTableEntry output = chtget(key)
Cierre la conexioacutenchtclose()
La utilizacioacuten de la clase ClusteredHashTable hace que el objeto AS400 se conecte al servidor Paraobtener maacutes informacioacuten consulte Gestioacuten de conexiones
IBM Toolbox para Java 29
Clase CommandCallLa clase CommandCall permite a un programa Java llamar a un mandato IBM i no interactivo
Los resultados del mandato estaacuten disponibles en una lista de objetos AS400Message
La entrada de CommandCall esv La serie del mandato que ha de ejecutarsev El objeto AS400 que representa el sistema que va a ejecutar el mandato
La serie del mandato se puede establecer en el constructor mediante el meacutetodo setCommand() deCommandCall o se puede establecer en el meacutetodo run() Una vez ejecutado el mandato el programa Javapuede emplear el meacutetodo getMessageList() para recuperar los mensajes de IBM i que se hayan producidocomo consecuencia del mandato
La utilizacioacuten de la clase CommandCall hace que el objeto AS400 se conecte al sistema En Gestioacuten deconexiones encontraraacute informacioacuten acerca de coacutemo se gestionan las conexiones
Cuando el programa Java y el mandato de IBM i estaacuten en el mismo servidor el comportamientopredeterminado de IBM Toolbox para Java es consultar la seguridad de la hebra para el mandato en elsistema Si es segura el mandato se ejecuta en la hebra Puede suprimir la consulta en tiempo deejecucioacuten especificando expliacutecitamente la seguridad de la hebra para el mandato con el meacutetodosetThreadSafe()
Ejemplos
En los ejemplos siguientes se muestran varios modos de utilizar la clase CommandCall para ejecutardistintos tipos de mandatos
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Ejemplo ejecutar un mandato
El ejemplo siguiente muestra coacutemo se utiliza la clase CommandCall para ejecutar un mandato en elsistema
Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de llamada a mandato Este programa establece el mandato para que se ejecute maacutes adelante Puede establecerse aquiacute en el constructorCommandCall cmd = new CommandCall(sys)
Ejecute el mandato CRTLIBcmdrun(CRTLIB MYLIB)
Obtenga la lista de mensajes que contiene el resultado del mandatoAS400Message[] messageList = cmdgetMessageList()
Procese la lista de mensajes
Desconecte puesto que ya ha terminado de enviar mandatos al servidorsysdisconnectService(AS400COMMAND)
Ejemplo ejecutar un mandato especificado por el usuario
30 IBM Toolbox para Java IBM Toolbox para Java
En ldquoEjemplo coacutemo se utiliza CommandCallrdquo en la paacutegina 387 se muestra coacutemo ejecutar un mandatoespecificado por el usuarioInformacioacuten relacionadaJavadoc CommandCallJavadoc AS400MessageJavadoc AS400
Agrupacioacuten de conexionesUtilice las agrupaciones de conexiones para compartir conexiones y gestionar conjuntos (agrupaciones) deconexiones con un sistema IBM i Por ejemplo una aplicacioacuten puede recuperar una conexioacuten de unaagrupacioacuten utilizarla y a continuacioacuten devolverla a la agrupacioacuten para volver a utilizarla
La clase AS400ConnectionPool gestiona una agrupacioacuten de objetos AS400 La claseAS400JDBCConnectionPool representa una agrupacioacuten de AS400JDBCConnections disponibles para suuso por parte de un programa Java como parte del soporte de IBM Toolbox para Java para la API JDBC20 Optional Package La interfaz JDBC ConnectionPool tambieacuten estaacute soportada en la API JDBC 30 queestaacute empaquetada con Java 2 Platform Standard Edition versioacuten 14
Una agrupacioacuten de conexiones de cualquiera de los dos tipos posibles hace un seguimiento del nuacutemerode conexiones que crea Con los meacutetodos heredados de ConnectionPool puede establecer diversaspropiedades de agrupacioacuten de conexiones entre las que se incluyen las siguientesv el nuacutemero maacuteximo de conexiones que una agrupacioacuten puede proporcionarv el tiempo maacuteximo de vida de una conexioacutenv el tiempo maacuteximo de inactividad de una conexioacuten
En teacuterminos de rendimiento la conexioacuten con el servidor es una operacioacuten cara El uso de agrupacionesde conexiones puede mejorar el rendimiento al evitar tiempos de conexioacuten repetidos Por ejemplo creeconexiones cuando cree la agrupacioacuten de conexiones rellenando la agrupacioacuten con conexiones activas(preconectadas) utilizando la clase AS400ConnectionPool En lugar de crear nuevas conexiones puedeutilizar una agrupacioacuten de conexiones para recuperar utilizar devolver y volver a utilizar faacutecilmente losobjetos de conexioacuten
Puede recuperar una conexioacuten mediante AS400ConnectionPool especificando el nombre del sistema el IDde usuario la contrasentildea y (si lo desea) el servicio Para especificar el servicio al que desea conectarutilice las constantes de la clase AS400 (FILE PRINT COMMAND etc)
Tras recuperar y utilizar la conexioacuten las aplicaciones devuelven las conexiones a la agrupacioacuten Es cadaaplicacioacuten la responsable de devolver las conexiones a la agrupacioacuten para que vuelvan a emplearse Si lasconexiones no se devuelven a la agrupacioacuten el tamantildeo de la agrupacioacuten de conexiones sigue creciendo ylas conexiones no se reutilizan
Consulte la seccioacuten Gestioacuten de conexiones para obtener maacutes informacioacuten acerca de coacutemo gestionarcuaacutendo se abre una conexioacuten con el sistema al utilizar las clases AS400ConnectionPool
Ejemplo coacutemo se utiliza AS400ConnectionPool
En ldquoEjemplo coacutemo se utiliza AS400ConnectionPoolrdquo en la paacutegina 389 se muestra coacutemo reutilizar losobjetos AS400Informacioacuten relacionadaJavadoc AS400ConnectionPoolJavadoc AS400
IBM Toolbox para Java 31
Aacuterea de datosLa clase DataArea de IBM Toolbox para Java es una clase base abstracta que representa un objeto aacuterea dedatos de IBM i
Esta clase base tiene cuatro subclases que dan soporte a estos elementos datos de tipo caraacutecter datosdecimales datos loacutegicos y aacutereas de datos locales que contienen datos de tipo caraacutecter
Mediante la clase DataArea se pueden realizar estas tareasv Obtener el tamantildeo del aacuterea de datosv Obtener el nombre del aacuterea de datosv Devolver el objeto de sistema AS400 correspondiente al aacuterea de datosv Renovar los atributos del aacuterea de datosv Establecer el sistema en el que existe el aacuterea de datos
La utilizacioacuten de la clase DataArea hace que el objeto AS400 se conecte al servidor En Gestioacuten deconexiones encontraraacute informacioacuten acerca de coacutemo se gestionan las conexiones
CharacterDataArea
La clase CharacterDataArea representa un aacuterea de datos existente en el servidor que contiene datos detipo caraacutecter Las aacutereas de datos de tipo caraacutecter no disponen de un servicio que permita identificar losdatos con el debido CCSID por lo tanto el objeto aacuterea de datos presupone que el CCSID de los datos esel del usuario En la escritura el objeto aacuterea de datos se convierte de un tipo serie (Unicode) al CCSIDdel usuario antes de que los datos se escriban en el servidor En la lectura el objeto aacuterea de datospresupone que el CCSID de los datos es el del usuario y la conversioacuten se realiza desde dicho CCSID aUnicode antes de devolver la serie al programa Cuando se leen datos del aacuterea de datos la cantidad dedatos leiacutedos viene expresada en el nuacutemero de caracteres no en el nuacutemero de bytes
Mediante la clase CharacterDataArea se pueden realizar estas tareasv Borrar el aacuterea de datos para que solo contenga blancosv Crear en el sistema un aacuterea de datos de tipo caraacutecter utilizando los valores predeterminados de las
propiedadesv Crear un aacuterea de datos de tipo caraacutecter con los atributos especificadosv Suprimir el aacuterea de datos del sistema en el que existev Devolver el nombre de viacutea de acceso de IFS del objeto representado por el aacuterea de datosv Leer la totalidad de los datos contenidos en el aacuterea de datosv Leer una cantidad especificada de datos del aacuterea de datos a partir del desplazamiento 0 o del
desplazamiento que se haya especificadov Establecer el nombre totalmente calificado de la viacutea de acceso del sistema de archivos integrado del
aacuterea de datosv Escribir datos al principio del aacuterea de datosv Escribir una cantidad especificada de datos en el aacuterea de datos a partir del desplazamiento 0 o del
desplazamiento que se haya especificado
DecimalDataArea
La clase DecimalDataArea representa un aacuterea de datos existente en el servidor que contiene datosdecimales
Mediante la clase DecimalDataArea se pueden realizar estas tareasv Borrar el aacuterea de datos para que contenga 00
32 IBM Toolbox para Java IBM Toolbox para Java
v Crear en el sistema un aacuterea de datos decimales utilizando los valores predeterminados de laspropiedades
v Crear un aacuterea de datos decimales con los atributos especificadosv Suprimir el aacuterea de datos del servidor en el que existev Devolver el nuacutemero de diacutegitos que hay en el aacuterea de datos a la derecha de la coma decimalv Devolver el nombre de viacutea de acceso de IFS del objeto representado por el aacuterea de datosv Leer la totalidad de los datos contenidos en el aacuterea de datosv Establecer el nombre totalmente calificado de la viacutea de acceso del sistema de archivos integrado del
aacuterea de datosv Escribir datos al principio del aacuterea de datos
Ejemplo coacutemo se utiliza DecimalDataArea El siguiente ejemplo muestra coacutemo se crea un aacuterea de datosdecimales y coacutemo se escribe en ella
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Establezca una conexioacuten con el servidor MyServerAS400 system = new AS400(MyServer)
Cree un objeto DecimalDataAreaQSYSObjectPathName path = new QSYSObjectPathName(MYLIB MYDATA DTAARA)DecimalDataArea dataArea = new DecimalDataArea(system pathgetPath())
Cree en el servidor el aacuterea de datos decimales utilizando los valores predeterminadosdataAreacreate()
Borre el aacuterea de datosdataAreaclear()
Escriba en el aacuterea de datosdataAreawrite(new BigDecimal(12))
Lea el aacuterea de datosBigDecimal data = dataArearead()
Suprima el aacuterea de datos del servidordataAreadelete()
LocalDataArea
La clase LocalDataArea representa un aacuterea de datos local existente en el servidor En el servidor existe unaacuterea de datos local como aacuterea de datos de tipo caraacutecter pero el aacuterea de datos local tiene algunasrestricciones que deben tenerse en cuenta
El aacuterea de datos local estaacute asociada a un trabajo servidor y no es posible acceder a ella desde otro trabajoPor lo tanto esta aacuterea de datos local no se puede crear ni suprimir Cuando el trabajo servidor finaliza elaacuterea de datos local asociada a dicho trabajo se suprime automaacuteticamente y el objeto LocalDataArea quehace referencia al trabajo deja de ser vaacutelido Tambieacuten es preciso tener presente que las aacutereas de datoslocales tienen un tamantildeo fijo de 1024 caracteres en el servidor
Mediante la clase LocalDataArea se pueden realizar estas tareasv Borrar el aacuterea de datos para que solo contenga blancosv Leer la totalidad de los datos contenidos en el aacuterea de datosv Leer una cantidad especificada de datos del aacuterea de datos a partir del desplazamiento que se haya
especificadov Escribir datos al principio del aacuterea de datosv Escribir una cantidad especificada de datos en el aacuterea de datos escribieacutendose el primer caraacutecter en el
desplazamiento
IBM Toolbox para Java 33
LogicalDataArea
La clase LogicalDataArea representa un aacuterea de datos existente en el servidor que contiene datos loacutegicos
Mediante la clase LogicalDataArea puede realizar estas tareasv Borrar el aacuterea de datos para que contenga falsev Crear un aacuterea de datos de tipo caraacutecter en el servidor utilizando los valores predeterminados de las
propiedadesv Crear un aacuterea de datos de tipo caraacutecter con los atributos especificadosv Suprimir el aacuterea de datos del servidor en el que existev Devolver el nombre de viacutea de acceso de IFS del objeto representado por el aacuterea de datosv Leer la totalidad de los datos contenidos en el aacuterea de datosv Establecer el nombre totalmente calificado de la viacutea de acceso del sistema de archivos integrado del
aacuterea de datosv Escribir datos al principio del aacuterea de datos
DataAreaEvent
La clase DataAreaEvent representa un evento de aacuterea de datos
La clase DataAreaEvent se puede usar con cualquiera de las clases DataArea Mediante la claseDataAreaEvent puede realizar esta tareav Obtener el identificador del evento
DataAreaListener
La clase DataAreaListener proporciona una interfaz que permite recibir eventos de aacuterea de datos
La clase DataAreaListener se puede usar con cualquiera de las clases DataArea Es posible invocar laclase DataAreaListener cuando se lleva a cabo cualquiera de estas accionesv Borrarv Crearv Suprimirv Leerv Escribir
Javadoc DataAreaJavadoc CharacterDataAreaJavadoc DecimalDataAreaJavadoc LocalDataAreaJavadoc LogicalDataAreaJavadoc DataAreaEventJavadoc DataAreaListener
Conversioacuten y descripcioacuten de datosLas clases de conversioacuten de datos proporcionan la posibilidad de convertir datos de tipo caraacutecter ynumeacuterico entre los formatos de IBM i y Java La conversioacuten puede ser necesaria cuando se accede a datosde IBM i desde un programa Java Las clases de conversioacuten de datos soportan la conversioacuten de diversosformatos numeacutericos y entre diversas paacuteginas de coacutedigos EBCDIC y Unicode
Las clases de descripcioacuten de datos se construyen sobre las clases de conversioacuten de datos para convertirtodos los campos de un registro con una sola llamada de meacutetodo La clase RecordFormat permite al
34 IBM Toolbox para Java IBM Toolbox para Java
programa describir los datos que constituyen un objeto DataQueueEntry un paraacutemetro ProgramCall unregistro de un archivo de base de datos al que se accede mediante clases de acceso a nivel de registro ocualquier almacenamiento intermedio de datos del sistema La clase Record permite al programaconvertir el contenido del registro y acceder a los datos por nombre de campo o por iacutendice
Las clases conversoras permiten realizar la conversioacuten entre Java y el sistema BinaryConverter realiza laconversioacuten entre las matrices de bytes Java y los tipos de datos simples Java CharConverter realiza laconversioacuten entre los objetos de tipo serie Java y las paacuteginas de coacutedigos de IBM i Para obtener maacutesinformacioacuten consulte el tema Conversores
Tipos de datos
AS400DataType es una interfaz que define los meacutetodos necesarios para la conversioacuten de datos Unprograma Java utiliza los tipos de datos cuando es necesario convertir fragmentos de datos individualesExisten clases de conversioacuten para los siguientes tipos de datosv Numeacutericov Texto (tipo caraacutecter)v Compuesto (numeacuterico y texto)
Ejemplo coacutemo se utilizan las clases AS400DataType
El ejemplo siguiente muestra coacutemo utilizar las clases AS400DataType con ProgramCall tanto paraproporcionar datos para los paraacutemetros de programa como para interpretar los datos devueltos en losparaacutemetros de programa
Ejemplo coacutemo se utilizan las clases AS400DataType con ProgramCall
Conversioacuten que especifica un formato de registro
IBM Toolbox para Java proporciona clases sobre las que construir las clases de tipos de datos quepermiten que los datos se conviertan de registro en registro en vez de convertirse de campo en campoPor ejemplo supongamos que un programa Java lee datos de salida de una cola de datos El objeto colade datos devuelve una matriz de bytes de datos de IBM i al programa Java Esta matriz puede enpotencia contener muchos tipos de datos de IBM i La aplicacioacuten puede convertir de uno en uno loscampos de la matriz de bytes utilizando las clases de tipos de datos o bien el programa puede crear unformato de registro que describa los campos en la matriz de bytes Luego ese registro realiza laconversioacuten
La conversioacuten de formato de registro puede ser de utilidad cuando se estaacute trabajando con datos de lallamada a programa de la cola de datos y de las clases de acceso a nivel de registro La entrada y lasalida de estas clases son matrices de bytes que pueden contener muchos campos de diversos tipos Losconversores de formato de registro pueden facilitar la conversioacuten de estos datos entre el formato de IBM iy el formato Java
La conversioacuten mediante el formato de registro emplea tres clasesv Las clases FieldDescription identifican un campo o paraacutemetro con un tipo de datos y un nombrev Una clase RecordFormat describe un grupo de camposv Una clase Record une la descripcioacuten de un registro (en la clase RecordFormat) con los datos realesv Una clase LineDataRecordWriter escribe un registro en un objeto OutputStream en formato de datos de
liacutenea
Ejemplos coacutemo se utilizan las clases de conversioacuten de formato de registro
IBM Toolbox para Java 35
Los ejemplos siguientes ilustran coacutemo se utilizan las clases de conversioacuten de formato de registro con lascolas de datos
Coacutemo se utilizan las clases Record y RecordFormat para poner datos en una cola
Coacutemo se utilizan las clases FieldDescription RecordFormat y RecordJavadoc AS400DataType
Clases de conversioacuten para datos numeacutericos
Las clases de conversioacuten para datos numeacutericos convierten los datos numeacutericos del formato utilizado enIBM i (denominado formato del sistema en la tabla siguiente) al formato Java
En la tabla siguiente se muestran los tipos de datos soportados
Tipo numeacuterico Descripcioacuten
AS400Bin2 La conversioacuten se realiza entre un nuacutemero de dos bytescon signo con el formato del sistema y un objeto ShortJava
AS400Bin4 La conversioacuten se realiza entre un nuacutemero de cuatro bytescon signo con el formato del sistema y un objeto IntegerJava
AS400ByteArray La conversioacuten se realiza entre dos matrices de bytes Esde utilidad porque el conversor rellena con ceroscorrectamente y rellena con datos el almacenamientointermedio destino
AS400Float4 La conversioacuten se realiza entre un nuacutemero de comaflotante de cuatro bytes con signo con el formato delsistema y un objeto Float Java
AS400Float8 La conversioacuten se realiza entre un nuacutemero de comaflotante de ocho bytes con signo con el formato delsistema y un objeto Double Java
AS400PackedDecimal La conversioacuten se realiza entre un nuacutemero decimalempaquetado con el formato del sistema y un objetoBigDecimal Java
AS400UnsignedBin2 La conversioacuten se realiza entre un nuacutemero de dos bytessin signo con el formato del sistema y un objeto IntegerJava
AS400UnsignedBin4 La conversioacuten se realiza entre un nuacutemero de cuatro bytessin signo con el formato del sistema y un objeto LongJava
AS400ZonedDecimal La conversioacuten se realiza entre un nuacutemero decimal conzona con el formato del sistema y un objeto BigDecimalJava
Ejemplos
En los ejemplos que siguen se muestran conversiones de datos de tipo numeacuterico con el formato delsistema a un objeto int Java
Ejemplo realizar una conversioacuten del formato del sistema a un objeto int Java Cree un almacenamiento intermedio que contenga el tipo de datos del sistema Supongamos que el almacenamiento intermedio se rellena con datos numeacutericos con el formato del sistema procedentes de colas de datos llamadas a programa etc
36 IBM Toolbox para Java IBM Toolbox para Java
byte[] data = new byte[100]
Cree un conversor para este tipo de datos del sistemaAS400Bin4 bin4Converter = new AS400Bin4()
Realice la conversioacuten del tipo del sistema al objeto Java El nuacutemero empieza al principio del almacenamiento intermedioInteger intObject = (Integer) bin4ConvertertoObject(data0)
Extraiga el tipo Java simple del objeto Javaint i = intObjectintValue()
Ejemplo realizar la conversioacuten de un objeto int Java al formato del sistema Cree un objeto Java que contenga el valor que se ha de convertirInteger intObject = new Integer(22)
Cree un conversor para el tipo de datos del sistemaAS400Bin4 bin4Converter = new AS400Bin4()
Realice la conversioacuten del objeto Java al tipo de datos del sistemabyte[] data = bin4ConvertertoBytes(intObject)
Averiguumle cuaacutentos bytes del almacenamiento intermedio se rellenaron con el valor del sistemaint length = bin4ConvertergetByteLength()
Conversioacuten de texto
Los datos de tipo caraacutecter se convierten mediante la clase AS400Text de IBM Toolbox para Java Esta clasehace que los datos de tipo caraacutecter que tienen la paacutegina de coacutedigos y el juego de caracteres (CCSID)EBCDIC se conviertan a Unicode
Al construir el objeto AS400Text el programa Java especifica la longitud de la serie que se debe convertirasiacute como el CCSID o la codificacioacuten del servidor Se supone que el CCSID del programa Java es Unicode13488 El meacutetodo toBytes() hace que el formato Java se convierta en una matriz de bytes en formato deIBM i El meacutetodo toObject() hace que una matriz de bytes en formato IBM i se convierta al formato Java
La clase AS400BidiTransform proporciona transformaciones de disentildeo que hacen posible la conversioacuten detexto bidireccional en formato de IBM i (tras convertirlo primero a Unicode) a texto bidireccional enformato Java o de formato Java a formato de IBM i La conversioacuten predeterminada se basa en el CCSIDdel trabajo Para modificar la direccioacuten y el formato del texto especifique BidiStringType Tenga encuenta que cuando los objetos IBM Toolbox para Java llevan a cabo la conversioacuten internamente como enla clase DataArea los objetos tienen un meacutetodo para cambiar el tipo de serie Por ejemplo la claseDataArea tiene el meacutetodo addVetoableChangeListener() que se puede especificar para escuchar cambiosde veto a determinadas propiedades entre ellas el tipo de serie
Ejemplo convertir datos de texto
En el ejemplo siguiente se supone que un objeto DataQueueEntry devuelve un texto en EBCDIC Elejemplo convierte los datos EBCDIC a Unicode para que el programa Java pueda utilizarlos
Supongamos que ya se ha realizado el trabajo de configuracioacuten de la cola de datos para recuperar el texto del sistema y los datos se han colocado en el siguiente almacenamiento intermedioint textLength = 100byte[] data = new byte[textLength]
Cree un conversor para el tipo de datos del sistema Observe que se construye un conversor predeterminado Este conversor supone que la paacutegina de coacutedigos
EBCDIC de IBM i coincide con el entorno nacional del cliente Si ello no corresponde a la realidad el programa Java puede especificar expliacutecitamente el CCSID de
IBM Toolbox para Java 37
EBCDIC que se debe utilizar Sin embargo se recomienda especificar un CCSID cuando sea posible (consulte las notas siguientes)AS400Text textConverter = new AS400Text(textLength)
Nota si lo desea puede crear un conversor para un CCSID especiacutefico Utilice un objeto AS400 por si el programa se ejecuta como un cliente proxy de IBM Toolbox para Javaint ccsid = 37AS400 system = Objeto AS400AS400Text textConverter = new AS400Text(textLength ccsid system)
Nota tambieacuten puede crear un conversor solo con el objeto AS400 Este conversor supone que la paacutegina de coacutedigos de IBM i coincide con el CCSID devuelto por el objeto AS400AS400Text textConverter = new AS400Text(textLength system)
Convierta los datos de EBCDIC a Unicode Si la longitud del objeto AS400Text es superior al nuacutemero de caracteres convertidos la serie (String) resultante se rellenaraacute con blancos hasta la longitud especificadaString javaText = (String) textConvertertoObject(data)
Informacioacuten relacionadaJavadoc AS400TextJavadoc AS400BidiTransformJavadoc BidiStringType
Clases de conversioacuten para tipos compuestos
Este tema describe las clases de conversioacuten de IBM Toolbox para Java para tipos compuestosv AS400Array - Permite al programa Java trabajar con una matriz de tipos de datosv AS400Structure - Permite al programa Java trabajar con una estructura cuyos elementos son tipos de
datos
Ejemplo convertir tipos de datos compuestos
En el ejemplo que sigue se muestra la conversioacuten desde una estructura Java a una matriz de bytes ycoacutemo se realiza la conversioacuten inversa El ejemplo presupone que se emplea el mismo formato de datostanto para el enviacuteo como para la recepcioacuten de los datos
Cree una estructura de tipos de datos que se corresponda con una estructura que contiene - un nuacutemero de cuatro bytes - cuatro bytes de relleno - un nuacutemero de ocho bytes - 40 caracteresAS400DataType[] myStruct =
new AS400Bin4()new AS400ByteArray(4)new AS400Float8()new AS400Text(40)
Cree un objeto conversioacuten que utilice la estructuraAS400Structure myConverter = new AS400Structure(myStruct)
Cree el objeto Java que contiene los datos que deben enviarse al servidorObject[] myData =
new Integer(88) el nuacutemero de cuatro bytesnew byte[0] el relleno (permite rellenar con 0 el objeto conversioacuten)new Double(2345) el nuacutemero de coma flotante de ocho bytesEsa es mi estructura la serie de caracteres
38 IBM Toolbox para Java IBM Toolbox para Java
Haga que el objeto Java se convierta en matriz de bytesbyte[] myAS400Data = myConvertertoBytes(myData)
Enviacutee la matriz de bytes al servidor Obtenga los datos nuevamente del servidor Los datos devueltos seraacuten asimismo una matriz de bytes
Convierta los datos devueltos desde IBM i al formato JavaObject[] myRoundTripData = (Object[])myConvertertoObject(myAS400Data0)
Saque el tercer objeto de la estructura Es el objeto doubleDouble doubleObject = (Double) myRoundTripData[2]
Extraiga el tipo Java simple del objeto Javadouble d = doubleObjectdoubleValue()
Javadoc AS400ArrayJavadoc AS400Structure
Clases de descripcioacuten de campo
Las clases de descripciones de campo permiten al programa Java describir el contenido de un campo oun paraacutemetro con un tipo de datos y una serie que contenga el nombre del campo El programa si estaacutetrabajando con datos de acceso a nivel de registro puede asimismo especificar cualquier palabra clave deespecificacioacuten de definicioacuten de datos (DDS) IBM i que describa el campo con maacutes detalle
Clases de Descripcioacuten de campo
Las clases de descripcioacuten de campo son las siguientesv BinaryFieldDescriptionv CharacterFieldDescriptionv DateFieldDescriptionv DBCSEitherFieldDescriptionv DBCSGraphicFieldDescriptionv DBCSOnlyFieldDescriptionv DBCSOpenFieldDescriptionv FloatFieldDescriptionv HexFieldDescriptionv PackedDecimalFieldDescriptionv TimeFieldDescriptionv TimestampFieldDescriptionv ZonedDecimalFieldDescription
Ejemplo crear descripciones de campo
En el ejemplo siguiente se supone que las entradas existentes en una cola de datos tienen el mismoformato Cada entrada tiene un nuacutemero de mensaje (AS400Bin4) una indicacioacuten de la hora (8 caracteres)y un texto de mensaje (50 caracteres) que puede describir con descripciones de campo
Cree una descripcioacuten de campo para los datos numeacutericos Observe que utiliza el tipo de datos AS400Bin4 Tambieacuten denomina el campo para que sea posible acceder a eacutel por el nombre en la clase de registroBinaryFieldDescription bfd = new BinaryFieldDescription(new AS400Bin4() msgNumber)
Cree una descripcioacuten de campo para los datos de tipo caraacutecter Observe que utiliza el tipo de datos AS400Text Tambieacuten denomina el campo para que sea posible
IBM Toolbox para Java 39
acceder a eacutel por el nombre en la clase de registroCharacterFieldDescription cfd1 = new CharacterFieldDescription(new AS400Text(8) msgTime)
Cree una descripcioacuten de campo para los datos de tipo caraacutecter Observe que utiliza el tipo de datos AS400Text Tambieacuten denomina el campo para que sea posible acceder a eacutel por el nombre en la clase de registroCharacterFieldDescription cfd2 = new CharacterFieldDescription(new AS400Text(50) msgText)
Ahora puede agrupar las descripciones de campo en una instancia de la clase RecordFormat Para vercoacutemo antildeadir las descripciones de campo a un objeto RecordFormat vea el ejemplo de la paacutegina siguiente
ldquoClase RecordFormatrdquo
Clase RecordFormat
La clase RecordFormat de IBM Toolbox para Java permite al programa Java describir un grupo decampos o paraacutemetros Un objeto Record contiene los datos descritos por un objeto RecordFormat Si elprograma utiliza clases de acceso a nivel de registro la clase RecordFormat tambieacuten permite al programaespecificar descripciones para campos clave
Un objeto RecordFormat contiene un conjunto de descripciones de campo El acceso a la descripcioacuten decampo se puede realizar por iacutendice o por nombre En la clase RecordFormat hay meacutetodos que permitenrealizar estas tareasv Antildeadir descripciones de campo al formato de registrov Antildeadir descripciones de campo de clave al formato de registrov Recuperar descripciones de campo del formato de registro por iacutendice o por nombrev Recuperar descripciones de campo de clave del formato de registro por iacutendice o por nombrev Recuperar los nombres de los campos que constituyen el formato de registrov Recuperar los nombres de los campos de clave que constituyen el formato de registrov Recuperar el nuacutemero de campos existentes en el formato de registrov Recuperar el nuacutemero de campos de clave existentes en el formato de registrov Crear un objeto Record basado en este formato de registro
Ejemplo antildeadir descripciones de campo a un formato de registro
En el ejemplo siguiente se antildeade a un formato de registro las descripciones de campo creadas en elejemplo de descripcioacuten de campo
Cree un objeto formato de registro despueacutes relleacutenelo con descripciones de campoRecordFormat rf = new RecordFormat()rfaddFieldDescription(bfd)rfaddFieldDescription(cfd1)rfaddFieldDescription(cfd2)
Para ver coacutemo crear un registro a partir del formato de registro vea el ejemplo de la paacutegina siguiente
ldquoClase RecordrdquoJavadoc RecordFormat
Clase Record
La clase de registro de IBM Toolbox para Java permite al programa Java procesar los datos descritos porla clase de formato de registro
La conversioacuten de datos se realiza entre matrices de bytes que contienen datos del servidor y objetos JavaEn la clase registro hay meacutetodos que permiten realizar estas tareas
40 IBM Toolbox para Java IBM Toolbox para Java
v Recuperar el contenido de un campo por iacutendice o por nombre como objeto Javav Recuperar el nuacutemero de campos del registrov Establecer el contenido de un campo por iacutendice o por nombre con un objeto Javav Recuperar el contenido del registro como datos del servidor en una matriz de bytes o en una corriente
de datos de salidav Establecer el contenido del registro desde una matriz de bytes o una corriente de datos de entradav Convertir el contenido del registro en una serie (String)
Ejemplo leer un registro
En el ejemplo siguiente se utiliza el formato de registro creado en el ejemplo de formato de registro Supongamos que ya se ha realizado el trabajo de configuracioacuten de la cola de datos Ahora debe leerse un registro de la cola de datosDataQueueEntry dqe = dqread()
Los datos de la cola de datos estaacuten ahora en una entrada de cola de datos Obtenga los datos de la entrada de cola de datos y poacutengalos en el registro Obtenemos un registro predeterminado del objeto de formato de registro y lo inicializamos con los datos de la entrada de cola de datosRecord dqRecord = rfgetNewRecord(dqegetData())
Ahora que los datos estaacuten en el registro saque los datos de un campo a razoacuten de un campo cada vez convirtiendo los datos a medida que se vayan eliminando El resultado son los datos de un objeto Java que ahora el programa puede procesarInteger msgNumber = (Integer) dqRecordgetField(msgNumber)String msgTime = (String) dqRecordgetField(msgTime)String msgText = (String) dqRecordgetField(msgText)
Informacioacuten relacionadaJavadoc Record
Recuperacioacuten del contenido de un campo
Para recuperar el contenido de un objeto Record puede hacer que el programa Java obtenga los camposde uno en uno o que obtenga todos los campos a la vez
El meacutetodo getField() de la clase Record permite recuperar un campo individual por nombre o por iacutendiceEl meacutetodo getFields() permite recuperar la totalidad de los campos como Object[]
El programa Java debe hacer que el objeto Object (o un elemento de Object[]) devuelto se conviertatemporalmente al objeto Java adecuado para el campo recuperado La tabla que figura a continuacioacutenmuestra el objeto Java adecuado al que se ha de convertir temporalmente en funcioacuten del tipo de campo
Tipo de campo (DDS) Tipo de campo (FieldDescription) Objeto Java
BINARIO (B) longitud lt= 4 BinaryFieldDescription Short
BINARIO (B) longitud gt= 5 BinaryFieldDescription Integer
CARAacuteCTER (A) CharacterFieldDescription String
Cualquier DBCS (E) DBCSEitherFieldDescription String
DBCS graacutefico (G) DBCSGraphicFieldDescription String
Solo DBCS (J) DBCSOnlyFieldDescription String
DBCS abierto (O) DBCSOpenFieldDescription String
FECHA (L) DateFieldDescription String
FLOTANTE (F) precisioacuten simple FloatFieldDescription Float
FLOTANTE (F) precisioacuten doble FloatFieldDescription Double
IBM Toolbox para Java 41
Tipo de campo (DDS) Tipo de campo (FieldDescription) Objeto Java
HEXADECIMAL (H) HexFieldDescription byte[]
DECIMAL EMPAQUETADO (P) PackedDecimalFieldDescription BigDecimal
HORA (T) TimeDecimalFieldDescription String
INDICACIOacuteN DE LA HORA (Z) TimestampDecimalFieldDescription String
DECIMAL CON ZONA (P) ZonedDecimalFieldDescription BigDecimal
Informacioacuten relacionadaJavadoc Record
Establecimiento del contenido de un campo
Para establecer el contenido de un objeto Record utilice el meacutetodo setField() en el programa Java
El programa Java debe especificar el objeto Java adecuado para el campo que se va a establecer La tablaque figura a continuacioacuten muestra el objeto Java adecuado para cada tipo de campo posible
Tipo de campo (DDS) Tipo de campo (FieldDescription) Objeto Java
BINARIO (B) longitud lt= 4 BinaryFieldDescription Short
BINARIO (B) longitud gt= 5 BinaryFieldDescription Integer
CARAacuteCTER (A) CharacterFieldDescription String
Cualquier DBCS (E) DBCSEitherFieldDescription String
DBCS graacutefico (G) DBCSGraphicFieldDescription String
Solo DBCS (J) DBCSOnlyFieldDescription String
DBCS abierto (O) DBCSOpenFieldDescription String
FECHA (L) DateFieldDescription String
FLOTANTE (F) precisioacuten simple FloatFieldDescription Float
FLOTANTE (F) precisioacuten doble FloatFieldDescription Double
HEXADECIMAL (H) HexFieldDescription byte[]
DECIMAL EMPAQUETADO (P) PackedDecimalFieldDescription BigDecimal
HORA (T) TimeDecimalFieldDescription String
INDICACIOacuteN DE LA HORA (Z) TimestampDecimalFieldDescription String
DECIMAL CON ZONA (P) ZonedDecimalFieldDescription BigDecimal
Informacioacuten relacionadaJavadoc Record
Clase LineDataRecordWriter
La clase LineDataRecordWriter escribe los datos de registro en formato de datos de liacutenea en un objetoOutputStream La clase convierte los datos en bytes utilizando el CCSID especificado El formato deregistro asociado al registro determina el formato de los datos
LineDataRecordWriter
La utilizacioacuten de LineDataRecordWriter requiere que se hayan establecido los siguientes atributos deformato de registrov ID de formato de registro
42 IBM Toolbox para Java IBM Toolbox para Java
v Tipo de formato de registro
Junto con las clases Record o RecordFormat la clase LineDataRecordWriter toma un registro comoentrada para el meacutetodo writeRecord() (El registro toma RecordFormat como entrada cuando se crea unainstancia del mismo)
La clase LineDataRecordWriter proporciona meacutetodos que permiten llevar a cabo estas accionesv Obtener el CCSIDv Obtener el nombre de la codificacioacutenv Escribir los datos de registro en formato de datos de liacutenea en un objeto OutputStream
Ejemplo coacutemo se utiliza la clase LineDataRecordWriter
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
En el ejemplo siguiente se muestra un modo de emplear la clase LineDataRecordWriter para escribir unregistro
Ejemplo de coacutemo se utiliza la clase LineDataRecordWritertry
Cree un CCSIDccsid_ = system_getCcsid()
Cree una cola de salida e indique que los datos del archivo en spool sean LINEOutputQueue outQ = new OutputQueue(system_ QSYSLIBRLPLIBLIBLDRWOUTQ)PrintParameterList parms = new PrintParameterList()parmssetParameter(PrintObjectATTR_PRTDEVTYPE LINE)
Inicialice el formato de registro para escribir datosRecordFormat recfmt = initializeRecordFormat()
Cree un registro y asigne datos para imprimirRecord record = new Record(recfmt)createRecord(record)
SpooledFileOutputStream os = nulltry
Cree el archivo en spool de salida para contener los datos de registroos = new SpooledFileOutputStream(system_ parms null outQ)
catch (Exception e) Systemoutprintln(Se ha producido un error al crear el archivo en spool)eprintStackTrace()
Cree el transcriptor de registro de datos de liacuteneaLineDataRecordWriter ldwldw = new LineDataRecordWriter(os ccsid_ system_)
Escriba el registro de datosldwwriteRecord(record)
Cierre el objeto OutputStreamosclose()
catch(Exception e)
failed(e Se ha producido una excepcioacuten)
Javadoc LineDataRecordWriter
IBM Toolbox para Java 43
Javadoc RecordJavadoc RecordFormat
Colas de datosLas clases DataQueue permiten al programa Java interactuar con las colas de datos del servidor
Las colas de datos de IBM i tienen las caracteriacutesticas siguientesv La cola de datos permite agilizar las comunicaciones entre trabajos Por lo tanto es un excelente
procedimiento para sincronizar los trabajos y pasar datos entre ellosv Muchos trabajos pueden acceder simultaacuteneamente a las colas de datosv Los mensajes pueden tener un formato libre en una cola de datos Los campos no son obligatorios
como en los archivos de base de datosv La cola de datos puede utilizarse tanto para procesos siacutencronos como asiacutencronosv En una cola de datos los mensajes pueden ordenarse de varias maneras
ndash Uacuteltimo en entrar primero en salir (LIFO) El uacuteltimo mensaje (el maacutes reciente) colocado en la cola dedatos es el primer mensaje que se saca de ella
ndash Primero en entrar primero en salir (FIFO) El primer mensaje (el maacutes antiguo) colocado en la cola dedatos es el primer mensaje que se saca de ella
ndash Por clave Cada mensaje de la cola de datos tiene una clave asociada a eacutel Para poder sacar unmensaje de la cola de datos es preciso especificar la clave asociada al mismo
Las clases de cola de datos proporcionan un conjunto completo de interfaces que permiten acceder a lascolas de datos del servidor desde el programa Java Es un excelente meacutetodo de comunicacioacuten entre losprogramas Java y los programas del servidor escritos en cualquier lenguaje de programacioacuten
Cada objeto de cola de datos tiene como paraacutemetro obligatorio el objeto AS400 que representa el servidorque tiene la cola de datos o donde se debe crear la cola de datos
La utilizacioacuten de las clases de cola de datos hace que el objeto AS400 se conecte al servidor En Gestioacutende conexiones encontraraacute informacioacuten acerca de coacutemo se gestionan las conexiones
Cada objeto cola de datos requiere el nombre de viacutea de acceso del sistema de archivos integrado de lacola de datos El tipo correspondiente a la cola de datos es DTAQ En Nombres de viacutea de acceso delsistema de archivos integrado puede encontrar maacutes informacioacuten
Colas de datos secuenciales y por clave
Las clases de cola de datos dan soporte a colas de datos secuenciales y por claves
Los meacutetodos comunes a los dos tipos de colas estaacuten en la clase BaseDataQueue La clase DataQueueampliacutea la clase BaseDataQueue para completar la implementacioacuten de las colas de datos secuenciales Laclase KeyedDataQueue ampliacutea la clase BaseDataQueue para completar la implementacioacuten de las colas dedatos por clave
Cuando se leen de una cola de datos los datos se colocan en un objeto DataQueueEntry Este objetocontiene los datos de los dos tipos de colas de datos las que son por clave y las secuenciales Los datosadicionales disponibles cuando se leen de una cola de datos por clave se colocan en un objetoKeyedDataQueueEntry que ampliacutea la clase DataQueueEntry
Las clases de cola de datos no alteran los datos que se escriben en la cola de datos del servidor o se leende ella El programa Java debe dar el formato correcto a los datos Las clases de conversioacuten de datosproporcionan meacutetodos para convertir los datos
44 IBM Toolbox para Java IBM Toolbox para Java
Ejemplo coacutemo se utiliza DataQueue y DataQueueEntry
En el ejemplo que sigue se crea un objeto DataQueue se leen datos del objeto DataQueueEntry y luego selleva a cabo la desconexioacuten del sistema
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Cree el objeto DataQueueDataQueue dq = new DataQueue(sys QSYSLIBMYLIBLIBMYQUEUEDTAQ)
Lea datos de la colaDataQueueEntry dqData = dqread()
Obtenga datos del objeto DataQueueEntrybyte[] data = dqDatagetData()
Procese los datos
Desconecte puesto que ya ha terminado de utilizar las colas de datossysdisconnectService(AS400DATAQUEUE)
Informacioacuten relacionadaJavadoc BaseDataQueueJavadoc DataQueueJavadoc KeyedDataQueueJavadoc DataQueueEntryJavadoc KeyedDataQueueEntry
Colas de datos secuenciales
Las entradas existentes en una cola de datos secuencial del servidor se eliminan por orden FIFO (primeroen entrar primero en salir) o LIFO (uacuteltimo en entrar primero en salir)
Las clases BaseDataQueue y DataQueue proporcionan los siguientes meacutetodos para trabajar con las colasde datos secuencialesv El meacutetodo create que permite crear una cola de datos en el servidor El programa Java debe especificar
el tamantildeo maacuteximo de una entrada en la cola de datos El programa Java puede especificaropcionalmente paraacutemetros de cola de datos (FIFO frente a LIFO guardar informacioacuten de remitenteespecificar informacioacuten de autorizacioacuten forzar en disco y proporcionar una descripcioacuten de cola)cuando se crea la cola
v El meacutetodo peek que permite echar una mirada raacutepida a una entrada en la cola de datos sin eliminardicha entrada de la cola El programa Java puede esperar o devolver inmediatamente si en estemomento no hay ninguna entrada en la cola
v El meacutetodo read que permite leer una entrada quitaacutendola de la cola El programa Java puede esperar odevolver inmediatamente si no hay ninguna entrada disponible en la cola
v El meacutetodo write que permite escribir una entrada en la colav El meacutetodo clear que permite borrar todas las entradas de la colav El meacutetodo delete que permite suprimir la cola
La clase BaseDataQueue proporciona meacutetodos adicionales para recuperar los atributos de la cola dedatos
IBM Toolbox para Java 45
Ejemplos trabajar con colas de datos secuenciales
En los siguientes ejemplos de cola de datos secuencial el productor pone elementos en una cola de datosy el consumidor saca los elementos de la cola y los procesa
ldquoEjemplo coacutemo se utilizan las clases DataQueue para poner datos en una colardquo en la paacutegina 403
ldquoEjemplo coacutemo se utilizan las clases DataQueue para leer entradas en una cola de datosrdquo en lapaacutegina 406
Javadoc BaseDataQueueJavadoc DataQueue
Colas de datos por clave
Las clases BaseDataQueue y KeyedDataQueue proporcionan meacutetodos para trabajar con colas de datos porclavev El meacutetodo create que permite crear una cola de datos por clave en el sistema El programa Java debe
especificar la longitud de la clave y el tamantildeo maacuteximo de una entrada en la cola El programa Javapuede especificar opcionalmente informacioacuten de autorizacioacuten guardar informacioacuten de remitente forzaren disco y proporcionar una descripcioacuten de cola
v El meacutetodo peek que permite echar una mirada raacutepida a una entrada en funcioacuten de la claveespecificada sin eliminar la entrada de la cola El programa Java puede esperar o devolverinmediatamente si en la cola no hay actualmente ninguna entrada que coincida con los criterios de laclave
v El meacutetodo read que permite leer una entrada en funcioacuten de la clave especificada quitaacutendola de la colaEl programa Java puede esperar o devolver inmediatamente si en la cola no hay ninguna entradadisponible que coincida con los criterios de la clave
v El meacutetodo write que permite escribir una entrada por clave en la colav El meacutetodo clear que permite borrar todas las entradas o solo las que coincidan con una clave
especificadav El meacutetodo delete que permite suprimir la cola
Las clases BaseDataQueue y KeyedDataQueue proporcionan asimismo meacutetodos adicionales que permitenrecuperar los atributos de la cola de datos
Ejemplos trabajar con colas de datos por clave
En los siguientes ejemplos de cola de datos por clave el productor pone elementos en una cola de datosy el consumidor saca los elementos de la cola y los procesa
ldquoEjemplo coacutemo se utiliza KeyedDataQueuerdquo en la paacutegina 412
ldquoEjemplo coacutemo se utilizan las clases KeyedDataQueue para leer entradas de una cola de datosrdquo enla paacutegina 415
Javadoc BaseDataQueueJavadoc KeyedDataQueue
Certificados digitalesLos certificados digitales son sentencias con firma digital utilizadas para las transacciones protegidas enInternet
Para establecer una conexioacuten segura utilizando SSL (capa de sockets segura) se requiere un certificadodigital
46 IBM Toolbox para Java IBM Toolbox para Java
Los certificados digitales constan de estos elementosv La clave puacuteblica de cifrado del usuariov El nombre y la direccioacuten del usuariov La firma digital de una autoridad certificadora (CA) de terceros La firma de la autoridad garantiza
que el usuario es una entidad de confianzav La fecha de emisioacuten del certificadov La fecha de caducidad del certificado
Como administrador de un servidor protegido puede antildeadir al servidor una clave de raiacutez de confianzade una autoridad certificadora Esto quiere decir que el servidor se fiaraacute de cualquier persona quedisponga de un certificado procedente de esa determinada autoridad certificadora
Los certificados digitales ofrecen tambieacuten el cifrado garantizando una transferencia segura de los datosmediante una clave privada de cifrado
Es posible crear certificados digitales con la herramienta javakey (Encontraraacute maacutes informacioacuten sobre
javakey y la seguridad Java en la paacutegina sobre seguridad Java de Sun Microsystems Inc ) IBMToolbox para Java tiene clases que administran certificados digitales en el sistema
Las clases AS400Certificate proporcionan meacutetodos para gestionar certificados X509 ASN1 codificados Seproporcionan clases para realizar estas tareasv Obtener y establecer datos de certificadosv Listar certificados por lista de validacioacuten o perfil de usuariov Gestionar certificados por ejemplo antildeadir un certificado a un perfil de usuario o suprimir un
certificado de una lista de validacioacuten
La utilizacioacuten de una clase de certificado hace que el objeto AS400 se conecte al servidor En Gestioacuten deconexiones encontraraacute informacioacuten acerca de coacutemo se gestionan las conexiones
En el servidor los certificados pertenecen a una lista de validacioacuten o a un perfil de usuariov La clase AS400CertificateUserProfileUtil tiene meacutetodos para gestionar certificados en un perfil de
usuariov La clase AS400CertificateVldlUtil tiene meacutetodos para gestionar los certificados de una lista de
validacioacuten
Para utilizar AS400CertificateUserProfileUtil y AS400CertificateVldlUtil es necesario instalar la opcioacuten 34del sistema operativo base (Gestor de Certificados Digitales) Estas dos clases ampliacutean la claseAS400CertificateUtil que es una clase base abstracta que define meacutetodos que son comunes a las dossubclases
La clase AS400Certificate proporciona meacutetodos para leer y escribir datos de certificado El acceso a losdatos se realiza en forma de matriz de bytes El paquete JavaSecurity de la maacutequina virtual Java 12proporciona clases que permiten obtener y establecer campos individuales del certificado
Lista de certificados
Para obtener una lista de certificados el programa Java debe llevar a cabo estas tareas1 Crear un objeto AS4002 Construir el objeto certificado correcto Los objetos que se utilizan para listar certificados en un perfil
de usuario (AS400CertificateUserProfileUtil) son distintos de los utilizados para listar certificados enuna lista de validacioacuten (AS400CertificateVldlUtil)
IBM Toolbox para Java 47
3 Crear criterios de seleccioacuten basados en los atributos de certificado La clase AS400CertificateAttributecontiene atributos que se utilizan como criterios de seleccioacutenUno o varios objetos atributo definen loscriterios que deben satisfacerse para poder antildeadir un certificado a la lista Por ejemplo una listapodriacutea contener uacutenicamente certificados para un determinado usuario u organizacioacuten
4 Crear un espacio de usuario en el servidor y poner el certificado en el espacio de usuario Unaoperacioacuten de listar puede generar una gran cantidad de datos Para que un programa Java puedarecuperar los datos primero es necesario colocarlos en un espacio de usuario Utilice el meacutetodolistCertificates() para colocar los certificados en el espacio de usuario
5 Utilice el meacutetodo getCertificates() de AS400CertificateUtil para recuperar certificados del espacio deusuario
Ejemplo listar certificados digitales
El ejemplo que figura a continuacioacuten lista certificados de una lista de validacioacuten Solo lista los certificadospertenecientes a una determinada persona
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Cree un objeto AS400 Los certificados estaacuten en este sistemaAS400 sys = new AS400(mySystemmyCompanycom)
Cree el objeto certificadoAS400CertificateVldlUtil certificateList =
new AS400CertificateVldlUtil(sys QSYSLIBMYLIBLIBCERTLISTVLDL)
Cree la lista de atributos de certificado Solo queremos certificados correspondientes a una uacutenica persona por lo que la lista consta de un solo elementoAS400CertificateAttribute[] attributeList = new AS400CertificateAttribute[1]attributeList[0] =
new AS400CertificateAttribute(AS400CertificateAttributeSUBJECT_COMMON_NAME Jane Doe)
Recupere la lista que coincide con los criterios Se utilizaraacute el espacio de usuario myspace de la biblioteca mylib para almacenar los certificados El espacio de usuario debe existir antes de llamar a esta APIint count = certificateListlistCertificates(attributeList QSYSLIBMYLIBLIBMYSPACEUSRSPC)
Recupere los certificados del espacio de usuarioAS400Certificates[] certificates =
certificateListgetCertificates(QSYSLIBMYLIBLIBMYSPACEUSRSPC 0 8)
Procese los certificados
Javadoc AS400CertificateUserProfileUtilJavadoc AS400CertificateVldUtilJavadoc AS400CertificateAttribute
Clase EnvironmentVariableLa clase EnvironmentVariable y la clase EnvironmentVariableList de IBM Toolbox para Java permitenacceder a variables de entorno a nivel de sistema de IBM i y establecerlas
Cada una de las variables tiene identificadores exclusivos el nombre de sistema y el nombre de variablede entorno Cada variable de entorno tiene asociado un CCSID (que de forma predeterminada es elCCSID del trabajo actual) que describe doacutende estaacute almacenado el contenido de la variable
Nota las variables de entorno son distintas de los valores del sistema aunque a menudo se utilizan conel mismo fin Encontraraacute maacutes informacioacuten acerca de coacutemo acceder a los valores del sistema en Valores delsistema
48 IBM Toolbox para Java IBM Toolbox para Java
Utilice un objeto EnvironmentVariable para llevar a cabo las acciones siguientes en una variable deentornov Obtener y establecer el nombrev Obtener y establecer el sistemav Obtener y establecer el valor (lo que permite cambiar el CCSID)v Renovar el valor
Ejemplo crear establecer y obtener variables de entorno
El ejemplo que sigue crea dos variables de entorno (EnvironmentVariable) y posteriormente establece yobtiene sus valores
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Cree el objeto de sistemaAS400 system = new AS400(mySystem)
Cree la variable de entorno de color de primer plano y estableacutezcala en rojo (red)EnvironmentVariable fg = new EnvironmentVariable(system FOREGROUND)fgsetValue(RED)
Cree la variable de entorno de color de fondo y obtenga su valorEnvironmentVariable bg = new EnvironmentVariable(system BACKGROUND)String background = bggetValue()
Javadoc EnvironmentVariableJavadoc EnvironmentVariableList
ExcepcionesLas clases de acceso de IBM Toolbox para Java lanzan excepciones cuando se producen errores dedispositivo limitaciones fiacutesicas errores de programacioacuten o errores de entrada de usuario Las clases deexcepcioacuten se basan en el tipo de error que se produce en vez de basarse en la ubicacioacuten origen del error
La mayor parte de las excepciones contiene la informacioacuten siguientev Tipo de error El objeto de excepcioacuten lanzado indica queacute tipo de error se ha producido Los errores del
mismo tipo se agrupan en una clase de excepcioacutenv Detalles del error La excepcioacuten contiene un coacutedigo de retorno para identificar con maacutes precisioacuten la
causa del error producido Los valores del coacutedigo de retorno son constantes dentro de la clase deexcepcioacuten
v Texto del error La excepcioacuten contiene una serie de caracteres descriptiva del error que se haproducido La serie se traduce al idioma del entorno local de la maacutequina virtual Java del cliente
Ejemplo capturar una excepcioacuten lanzada
El siguiente ejemplo muestra coacutemo capturar una excepcioacuten lanzada recuperar el coacutedigo de retorno yvisualizar el texto de la excepcioacuten
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Todo el trabajo de configuracioacuten para suprimir un archivo en el servidor mediante la clase IFSFile ya se ha terminado Ahora intente suprimir el archivotry
aFiledelete()
IBM Toolbox para Java 49
La supresioacuten ha falladocatch (ExtendedIOException e)
Visualice la serie traducida que indica la razoacuten por la que ha fallado la supresioacutenSystemoutprintln(e)
Obtenga el coacutedigo de retorno de la excepcioacuten y visualice informacioacuten adicional basada en el coacutedigo de retornoint rc = egetReturnCode()
switch (rc)
case ExtendedIOExceptionFILE_IN_USESystemoutprintln(Supresioacuten anoacutemala archivo en uso )break
case ExtendedIOExceptionPATH_NOT_FOUNDSystemoutprintln(Supresioacuten anoacutemala viacutea no encontrada )break
Para cada error especiacutefico del que desea efectuar un seguimiento
defaultSystemoutprintln(Supresioacuten anoacutemala rc = )Systemoutprintln(rc)
Clase FileAttributesLa clase FileAttributes de IBM Toolbox para Java representa el conjunto de atributos de archivo quepueden recuperarse y establecerse mediante las API Obtener atributos (Qp0lGetAttr) y Estableceratributos (Qp0lSetAttr)
Para obtener los atributos de un objeto eacuteste debe existir y el llamador debe tener autorizacioacuten sobre eacutelSoacutelo los atributos soportados por el sistema de archivos especiacutefico el tipo de objeto y el release delsistema operativo pueden recuperarse o establecerse
Puede encontrar una lista completa de los atributos disponibles en el Javadoc FileAttributesInformacioacuten relacionadaJavadoc FileAttributesAPI Obtener atributos (Qp0lGetAttr)API Establecer atributos (Qp0lSetAttr)
Clase FTPLa clase FTP de IBM Toolbox para Java proporciona una interfaz programable con las funciones FTP
Ya no es necesario que utilice javaruntimeexec() ni que indique a los usuarios que ejecuten los mandatosFTP en una aplicacioacuten aparte Es decir puede programar las funciones FTP directamente en la aplicacioacutenAsiacute desde dentro de su programa puede hacer estas tareasv Conectarse a un servidor FTPv Enviar mandatos al servidorv Listar los archivos de un directoriov Obtener los archivos del servidor y colocar archivos en el servidor
Ejemplo coacutemo se utiliza FTP para copiar archivos de un servidor
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
50 IBM Toolbox para Java IBM Toolbox para Java
Por ejemplo con la clase FTP puede copiar en un servidor un conjunto de archivos de un directorioFTP client = new FTP(myServer myUID myPWD)clientcd(myDir)clientsetDataTransferType(FTPBINARY)String [] entries = clientls()
for (int i = 0 i lt entrieslength i++)
Systemoutprintln(Copiando + entries[i])try
clientget(entries[i] cftptest + entries[i])catch (Exception e)
Systemoutprintln( la operacioacuten de copia ha fallado probablemente sea un directorio)
clientdisconnect()
FTP es una interfaz geneacuterica que funciona con numerosos y variados servidores FTP Por lo tanto esresponsabilidad del programador el adoptar la semaacutentica del servidor
Subclase AS400FTP
Mientras que la clase FTP es una interfaz FTP geneacuterica la subclase AS400FTP estaacute escrita especiacuteficamentepara el servidor FTP del servidor Es decir esta subclase entiende la semaacutentica del servidor FTP en elservidor IBM i Por ejemplo esta clase entiende los diversos pasos que se necesitan para transferir alservidor un archivo de salvar y los lleva a cabo automaacuteticamente AS400FTP tambieacuten encaja bien en losrecursos de seguridad de IBM Toolbox para Java Al igual que con las otras clases de IBM Toolbox paraJava AS400FTP depende del objeto AS400 para obtener el nombre del sistema el ID de usuario y lacontrasentildea
Ejemplo coacutemo se utiliza AS400FTP para guardar un archivo en el servidor
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
El ejemplo siguiente pone un archivo de salvar en el servidor Fiacutejese en coacutemo la aplicacioacuten no establece eltipo de transferencia de datos en binario ni utiliza CommandCall para crear el archivo de salvar Debidoa que la extensioacuten es savf la clase AS400FTP detecta que el archivo que se ha de poner es un archivo desalvar y realiza esos pasos automaacuteticamente
AS400 system = new AS400()AS400FTP ftp = new AS400FTP(system)ftpput(myDatasavf QSYSLIBMYLIBLIBMYDATASAVF)
Javadoc FTPJavadoc AS400FTP
Clases del sistema de archivos integradoLas clases del sistema de archivos integrado permiten a un programa Java acceder a los archivos delsistema de archivos integrado de IBM i como una corriente de bytes o una corriente de caracteres Lasclases del sistema de archivos integrado se crearon debido a que el paquete javaio no proporciona lafuncioacuten de redireccioacuten de archivos ni otras funciones delIBM i
Las funciones proporcionadas por las clases IFSFile forman un superconjunto de las funcionesproporcionadas por las clases de entradasalida (IO) de archivo existentes en el paquete javaio Todos losmeacutetodos de javaio FileInputStream FileOutputStream y RandomAccessFile estaacuten en las clases del sistemade archivos integrado
IBM Toolbox para Java 51
Ademaacutes las clases contienen meacutetodos para llevar a cabo las tareas siguientesv Especificar una modalidad de compartimiento de archivos para denegar el acceso a un archivo que se
esteacute utilizandov Especificar una modalidad de creacioacuten de archivo para abrir crear o sustituir el archivov Bloquear una seccioacuten del archivo y denegar el acceso a dicha parte del archivo mientras se esteacute
utilizandov Listar el contenido de un directorio de manera maacutes eficazv Almacenar en la memoria cacheacute el contenido de un directorio para mejorar el rendimiento al limitar las
llamadas al servidorv Determinar el nuacutemero de bytes que estaacuten disponibles en el sistema de archivos del servidorv Permitir a un applet Java acceder a los archivos del sistema de archivos del servidorv Leer y escribir datos como texto en vez de como datos binariosv Determinar el tipo de objeto de archivo (loacutegico fiacutesico de salvar etc) cuando el objeto estaacute en el
sistema de archivos QSYSLIB
Mediante las clases del sistema de archivos integrado el programa Java puede acceder directamente a losarchivos continuos existentes en el sistema El programa Java puede seguir utilizando el paquete javaiopero en ese caso el sistema operativo del cliente debe proporcionar un meacutetodo de redireccioacuten Porejemplo si el programa Java se estaacute ejecutando en un sistema operativo Windows 95 o Windows NT serequiere la funcioacuten Unidades de red de IBM i Access para Windows a fin de redirigir las llamadas javaioal sistema Con las clases del sistema de archivos integrado no se necesita IBM i Access para Windows
Las clases del sistema de archivos integrado tienen como paraacutemetro obligatorio el objeto AS400 querepresenta el sistema que contiene el archivo El hecho de utilizar las clases de sistema de archivosintegrado hace que el objeto AS400 se conecte al sistema En Gestioacuten de conexiones encontraraacuteinformacioacuten acerca de coacutemo se gestionan las conexiones
Las clases del sistema de archivos integrado requieren el nombre jeraacuterquico que el objeto tiene en elsistema de archivos integrado Como caraacutecter separador de las viacuteas de acceso utilice la barra inclinadahacia delante El ejemplo que figura a continuacioacuten muestra coacutemo se accede a FILE1 en la viacutea dedirectorio DIR1DIR2
DIR1DIR2FILE1
Ejemplos coacutemo se utilizan las clases del sistema de archivos integrado
En ldquoEjemplo coacutemo se utilizan las clases del sistema de archivos integrado (IFS) para copiar un archivo deun directorio en otrordquo en la paacutegina 423 se muestra coacutemo se utilizan las clases del sistema de archivosintegrado para copiar un archivo de un directorio en otro en el sistema
En ldquoEjemplo coacutemo se utilizan las clases del sistema de archivos integrado (IFS) para listar el contenidode un directoriordquo en la paacutegina 425 se muestra coacutemo se utilizan las clases del sistema de archivosintegrado para listar el contenido de un directorio en el sistema
Clase IFSFile
La clase IFSFile de IBM Toolbox para Java representa un objeto del sistema de archivos integrado de IBMi
Los meacutetodos que hay en IFSFile representan operaciones realizadas en el objeto como un todo Se puedeutilizar IFSFileInputStream IFSFileOutputStream y IFSRandomAccessFile para leer y escribir en elarchivo La clase IFSFile permite al programa Java llevar a cabo estas tareasv Determinar si el objeto existe y es un directorio o un archivov Determinar si el programa Java puede leer o escribir en un archivo
52 IBM Toolbox para Java IBM Toolbox para Java
v Determinar la longitud de un archivov Determinar los permisos de un objeto y establecer los permisos de un objetov Crear un directoriov Suprimir un archivo o un directoriov Redenominar un archivo o un directoriov Obtener o establecer la fecha de la uacuteltima modificacioacuten de un archivov Listar el contenido de un directoriov Listar el contenido de un directorio y guardar la informacioacuten de atributos en una memoria cacheacute localv Determinar la cantidad de espacio disponible en el sistemav Determinar el tipo de objeto de archivo cuando estaacute en el sistema de archivos QSYSLIB
Puede obtener la lista de archivos de un directorio con el meacutetodo list() o el meacutetodo listFiles()v El meacutetodo listFiles() almacena en la memoria cacheacute informacioacuten de cada uno de los archivos de la
llamada inicial Tras efectuar la llamada a listFiles() la utilizacioacuten de otros meacutetodos para consultardetalles de archivo permite obtener un mejor rendimiento ya que la informacioacuten se recupera de lamemoria cacheacute Por ejemplo realizar una llamada a isDirectory() en un objeto IFSFile devuelto porlistFiles() no requiere efectuar una llamada al servidor
v El meacutetodo list() recupera informacioacuten sobre cada uno de los archivos en una peticioacuten independienterealizada al servidor lo que hace que sea maacutes lento y que utilice maacutes recursos del servidor
Nota la utilizacioacuten de listFiles() significa que la informacioacuten de la memoria cacheacute puede quedarobsoleta por lo que puede que deba renovar los datos volviendo a efectuar una llamada a listFiles()
Ejemplos
Los ejemplos que hay a continuacioacuten muestran coacutemo se utiliza la clase IFSFilev ldquoEjemplo crear un directoriordquo en la paacutegina 418v ldquoEjemplo coacutemo se utilizan las excepciones de IFSFile para hacer seguimiento de erroresrdquo en la paacutegina
419v ldquoEjemplo listar archivos con la extensioacuten txtrdquo en la paacutegina 419v ldquoEjemplo coacutemo se utiliza el meacutetodo de IFSFile listFiles() para listar el contenido de un directoriordquo en la
paacutegina 420Informacioacuten relacionadaJavadoc IFSFile
Clase IFSJavaFile
Esta clase de IBM Toolbox para Java representa un archivo del sistema de archivos integrado de IBM i yampliacutea la clase javaioFile IFSJavaFile permite escribir archivos para la interfaz javaioFile que accede alos sistemas de archivos integrados
IFSJavaFile crea interfaces portables que son compatibles con javaioFile y uacutenicamente utiliza los erroresy las excepciones que utiliza la clase javaioFile IFSJavaFile emplea las caracteriacutesticas del gestor deseguridad de javaioFile pero a diferencia de javaioFile IFSJavaFile emplea las caracteriacutesticas deseguridad de forma continua
La clase IFSJavaFile se utiliza junto con IFSFileInputStream y IFSFileOutputStream No da soporte a lasclases javaioFileInputStream y javaioFileOutputStream
IFSJavaFile estaacute basada en IFSFile sin embargo la interfaz de IFSJavaFile se parece maacutes a javaioFile quea IFSFile IFSFile es una alternativa de la clase IFSJavaFile
IBM Toolbox para Java 53
Puede obtener la lista de archivos de un directorio con el meacutetodo list() o el meacutetodo listFiles()v El meacutetodo listFiles() permite obtener un mejor rendimiento ya que recupera y almacena en la memoria
cacheacute la informacioacuten de cada uno de los archivos de la llamada inicial Posteriormente la informacioacutende cada uno de los archivos se recupera de la memoria cacheacute
v El meacutetodo list() recupera informacioacuten sobre cada uno de los archivos en una peticioacuten independiente loque hace que sea maacutes lento y que utilice maacutes recursos del servidor
Nota la utilizacioacuten de listFiles() significa que la informacioacuten de la memoria cacheacute puede quedarobsoleta por lo que puede que deba renovar los datos
Ejemplo coacutemo se utiliza IFSJavaFile
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
El siguiente ejemplo muestra coacutemo se utiliza la clase IFSJavaFile Trabaje con DirFiletxt en la memoria flash del sistemaAS400 as400 = new AS400(flash)IFSJavaFile file = new IFSJavaFile(as400 DirFiletxt)
Determine el directorio padre del archivoString directory = filegetParent()
Determine el nombre del archivoString name = filegetName()
Determine el tamantildeo del archivolong length = filelength()
Determine cuaacutendo se modificoacute el archivo por uacuteltima vezDate date = new Date(filelastModified())
Suprima el archivoif (filedelete() == false)
Visualice el coacutedigo de errorSystemerrprintln(No se ha podido suprimir el archivo)
try
IFSFileOutputStream os =new IFSFileOutputStream(filegetSystem() file IFSFileOutputStreamSHARE_ALL false)
byte[] data = new byte[256]int i = 0for ( i lt datalength i++)
data[i] = (byte) ioswrite(data[i])
osclose()
catch (Exception e)
Systemerrprintln (Excepcioacuten + egetMessage())
Informacioacuten relacionadaJavadoc IFSJavaFile
54 IBM Toolbox para Java IBM Toolbox para Java
IFSFileInputStream
La clase IFSFileInputStream de IBM Toolbox para Java representa una corriente de entrada para leer datosde un archivo en el servidor
Al igual que en la clase IFSFile en IFSFileInputStream hay meacutetodos que duplican los meacutetodos deFileInputStream del paquete javaio Ademaacutes de estos meacutetodos IFSFileInputStream dispone de meacutetodosadicionales especiacuteficos para la plataforma IBM i La clase IFSFileInputStream permite a un programa Javahacer lo siguientev Abrir un archivo para lectura El archivo debe existir debido a que esta clase no crea archivos en el
servidor Puede utilizar un constructor que le permita especificar la modalidad de compartimiento dearchivo
v Determinar el nuacutemero de bytes de la corrientev Leer bytes de la corrientev Saltarse bytes de la corrientev Bloquear o desbloquear bytes de la corrientev Cerrar el archivo
Al igual que FileInputStream de javaio esta clase permite a un programa Java leer una corriente de bytesdel archivo El programa Java lee los bytes de modo secuencial con la uacutenica opcioacuten adicional de saltarsebytes de la corriente
Ademaacutes de los meacutetodos de FileInputStream IFSFileInputStream proporciona al programa Java lasopciones siguientesv Bloquear y desbloquear bytes de la corriente En IFSKey encontraraacute maacutes informacioacutenv Especificar una modalidad de compartimiento al abrir el archivo En Modalidades de compartimiento
encontraraacute maacutes informacioacuten
Ejemplo coacutemo se utiliza IFSFileInputStream
El ejemplo que sigue muestra coacutemo se utiliza la clase IFSFileInputStream Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Abra un objeto de archivo que represente el archivoIFSFileInputStream aFile = new IFSFileInputStream(sysmydir1mydir2myfile)
Determine el nuacutemero de bytes en el archivoint available = aFileavailable()
Asigne un almacenamiento intermedio que contenga los datosbyte[] data = new byte[10240]
Lea todo el archivo de 10 en 10 Kfor (int i = 0 i lt available i += 10240)
aFileread(data)
Cierre el archivoaFileclose()
Informacioacuten relacionadaJavadoc IFSFileInputStream
Clase IFSTextFileInputStream
IFSTextFileInputStream ha quedado en desuso y la sustituye la clase IFSFileReader
IBM Toolbox para Java 55
La clase IFSTextFileInputStream representa una corriente de datos de tipo caraacutecter leiacutedos en un archivoLos datos leiacutedos del objeto IFSTextFileInputStream se proporcionan al programa Java en un objeto StringJava por lo que siempre es Unicode Al abrir el archivo el objeto IFSTextFileInputStream determina elCCSID de los datos del archivo Si los datos estaacuten almacenados en una codificacioacuten distinta de Unicodeel objeto IFSTextFileInputStream convierte los datos de la codificacioacuten del archivo a Unicode antes dedaacuterselos al programa Java Si no es posible convertir los datos se lanza una excepcioacutenUnsupportedEncodingException
El ejemplo que sigue muestra coacutemo se utiliza la clase IFSTextFileInputStream Trabaje con File en
el mySystem del sistemaAS400 as400 = new AS400(mySystem)IFSTextFileInputStream file = new IFSTextFileInputStream(as400 File)
Lea los primeros cuatro caracteres del archivoString s = fileread(4)
Visualice los caracteres leiacutedos Lea los primeros cuatro caracteres del archivo De ser necesario el objeto IFSTextFileInputStream convierte los datos a UnicodeSystemoutprintln(s)
Cierre el archivofileclose()
Referencia relacionadaldquoIFSFileReaderrdquoUtilice esta clase para leer archivos de caracteres del sistema de archivos integrado
IFSFileReader
Utilice esta clase para leer archivos de caracteres del sistema de archivos integrado
IFSFileReader estaacute disentildeado para leer corrientes de caracteres IFSFileReader sustituye aIFSTextFileOutputStream
Ejemplo coacutemo se utiliza IFSFileReader
El ejemplo siguiente muestra coacutemo se utiliza IFSFileReaderimport javaioBufferedReader
Trabaje con File1 en el eniac del sistemaAS400 system = new AS400(eniac)IFSFile file = new IFSFile(system File1)BufferedReader reader = new BufferedReader(new IFSFileReader(file))
Lea la primera liacutenea del archivo convirtiendo caracteresString line1 = readerreadLine()
Visualice la serie leiacutedaSystemoutprintln(line1)
Cierre el lectorreaderclose()
Informacioacuten relacionadaJavadoc IFSFileReader
56 IBM Toolbox para Java IBM Toolbox para Java
Clase IFSFileOutputStream
La clase IFSFileOutputStream representa una corriente de salida para escribir datos en un archivo en elservidor
Al igual que en la clase IFSFile en IFSFileOutputStream hay meacutetodos que duplican los meacutetodos deFileOutputStream del paquete javaio IFSFileOutputStream dispone asimismo de meacutetodos adicionalesespeciacuteficos para el servidor La clase IFSFileOutputStream permite a un programa Java hacer lo siguientev Abrir un archivo para escritura El archivo si ya existe se sustituye Existen constructores que
permiten especificar la modalidad de compartimiento de archivo y si se ha antildeadido el contenido de unarchivo existente
v Escribir bytes en la corrientev Comprometer en el disco los bytes que se escriben en la corrientev Bloquear o desbloquear bytes de la corrientev Cerrar el archivo
Al igual que FileOutputStream de javaio esta clase permite a un programa Java escribir secuencialmenteuna corriente de bytes en el archivo
Ademaacutes de los meacutetodos de FileOutputStream IFSFileOutputStream proporciona al programa Java lasopciones siguientesv Bloquear y desbloquear bytes de la corriente En IFSKey encontraraacute maacutes informacioacutenv Especificar una modalidad de compartimiento al abrir el archivo En Modalidades de compartimiento
encontraraacute maacutes informacioacuten
Ejemplo coacutemo se utiliza IFSFileOutputStream
El siguiente ejemplo muestra coacutemo se utiliza la clase IFSFileOutputStream Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Abra un objeto de archivo que represente el archivoIFSFileOutputStream aFile =
new IFSFileOutputStream(sysmydir1mydir2myfile)
Escriba en el archivobyte i = 123aFilewrite(i)
Cierre el archivoaFileclose()
Javadoc IFSFileOutputStream
Clase IFSTextFileOutputStream
IFSTextFileOutputStream ha quedado en desuso y la sustituye la clase IFSFileWriter
La clase IFSTextFileOutputStream representa una corriente de datos de tipo caraacutecter que se estaacutenescribiendo en un archivo Los datos proporcionados al objeto IFSTextFileOutputStream estaacuten en unobjeto String Java por lo que la entrada siempre es Unicode Sin embargo el objetoIFSTextFileOutputStream puede convertir los datos a otro CCSID a medida que se escriben en el archivoEl comportamiento predeterminado es escribir caracteres Unicode en el archivo pero el programa Javapuede establecer el CCSID destino antes de que se abra el archivo En este caso el objetoIFSTextFileOutputStream convierte los caracteres de Unicode al CCSID especificado antes de escribirlosen el archivo Si no es posible convertir los datos se lanza una excepcioacutenUnsupportedEncodingException
IBM Toolbox para Java 57
Ejemplo coacutemo se utiliza IFSTextFileOutputStream
El ejemplo que sigue muestra coacutemo se utiliza la clase IFSTextFileOutputStream Trabaje con File en el mySystem del
sistemaAS400 as400 = new AS400(mySystem)IFSTextFileOutputStream file =
new IFSTextFileOutputStream(as400 File)
Escriba una serie (String) en el archivo Como no se ha especificado ninguacuten CCSID antes de escribir en el archivo los caracteres Unicode se escribiraacuten en el archivo En el archivo se etiquetaraacute indicando que tiene datos Unicodefilewrite(Hola a todos)
Cierre el archivofileclose()
Referencia relacionadaldquoIFSFileWriterrdquoUtilice IFSFileWriter para escribir en archivos de caracteres del sistema de archivos integradoIFSFileWriter estaacute disentildeado para escribir corrientes de caracteres
IFSFileWriter
Utilice IFSFileWriter para escribir en archivos de caracteres del sistema de archivos integradoIFSFileWriter estaacute disentildeado para escribir corrientes de caracteres
IFSFileWriter es el sustituto de IFSTextFileOutputStream
Ejemplo coacutemo se utiliza IFSFileWriter
El ejemplo siguiente muestra coacutemo se utiliza IFSFileWriterimport javaioPrintWriterimport javaioBufferedWriter
Trabaje con File1 en el mysystem del sistemaAS400 as400 = new AS400(mysystem)IFSFile file = new IFSFile(system File1)
PrintWriter writer =new PrintWriter(new BufferedWriter(new IFSFileWriter(file)))
Escriba una liacutenea de texto en el archivo convirtiendo caractereswriterprintln(text)
Cierre el archivowriterclose()
Informacioacuten relacionadaJavadoc IFSFileWriter
IFSRandomAccessFile
La clase IFSRandomAccessFile de IBM Toolbox para Java representa un archivo existente en el servidorpara la lectura y la escritura de datos
El programa Java puede leer y escribir datos de forma secuencial o aleatoria Al igual que en la claseIFSFile en IFSRandomAccessFile hay meacutetodos que duplican los meacutetodos de RandomAccessFile delpaquete javaio Ademaacutes de estos meacutetodos IFSRandomAccessFile dispone de meacutetodos adicionalesespeciacuteficos para IBM i Mediante IFSRandomAccessFile un programa Java puede llevar a cabo estastareas
58 IBM Toolbox para Java IBM Toolbox para Java
v Abrir un archivo para acceso de lectura escritura o lecturaescritura El programa Java puedeespecificar opcionalmente la modalidad de compartimiento de archivo y la opcioacuten de existencia
v Leer datos en el desplazamiento actual del archivov Escribir datos en el desplazamiento actual del archivov Obtener o establecer el desplazamiento actual del archivov Cerrar el archivo
Ademaacutes de los meacutetodos de la clase RandomAccessFile de javaio IFSRandomAccessFile proporciona alprograma Java las opciones siguientesv Comprometer en disco los bytes escritosv Bloquear y desbloquear bytes del archivov Bloquear y desbloquear bytes de la corriente En IFSKey encontraraacute maacutes informacioacutenv Especificar una modalidad de compartimiento al abrir el archivo En Modalidades de compartimiento
encontraraacute maacutes informacioacutenv Especificar la opcioacuten de existencia al abrir un archivo El programa Java puede elegir una de estas
posibilidadesndash Si el archivo existe abrirlo si el archivo no existe crearlondash Si el archivo existe sustituirlo si el archivo no existe crearlondash Si el archivo existe no realizar la apertura si el archivo no existe crearlondash Si el archivo existe abrirlo si el archivo no existe no realizar la aperturandash Si el archivo existe sustituirlo si el archivo no existe no realizar la apertura
Ejemplo coacutemo se utiliza IFSRandomAccessFile
El ejemplo que sigue muestra coacutemo se utiliza la clase IFSRandomAccessFile para escribir cuatro bytes aintervalos de 1 K en un archivo
Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Abra un objeto de archivo que represente el archivoIFSRandomAccessFile aFile =
new IFSRandomAccessFile(sysmydir1myfile rw)
Establezca los datos que han de escribirsebyte i = 123
Escriba en el archivo 10 veces a intervalos de 1 Kfor (int j=0 jlt10 j++)
Mueva el desplazamiento actualaFileseek(j 1024)
Escriba en el archivo El desplazamiento actual avanza seguacuten el tamantildeo de la escrituraaFilewrite(i)
Cierre el archivoaFileclose()
Informacioacuten relacionadaJavadoc IFSRandomAccessFile
Clase IFSKey
Si el programa Java permite a otros programas acceder a un archivo simultaacuteneamente dicho programaJava puede bloquear bytes en el archivo por un tiempo Durante ese tiempo el programa tiene el uso
IBM Toolbox para Java 59
exclusivo de esa seccioacuten del archivo Cuando un bloqueo se realiza satisfactoriamente las clases delsistema de archivos integrado devuelven un objeto IFSKey
Este objeto se proporciona al meacutetodo unlock() para indicar cuaacuteles son los bytes que se han dedesbloquear Al cerrar el archivo el sistema desbloquea todos los bloqueos que auacuten quedan en el archivo(el sistema realiza un desbloqueo de todos los bloqueos que el programa no desbloqueoacute)
Ejemplo coacutemo se utiliza IFSKey
El ejemplo que sigue muestra coacutemo se utiliza la clase IFSKey Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Abra una corriente de entrada Este constructor se abre con share_all para que otros programas puedan abrir este archivoIFSFileInputStream aFile =
new IFSFileInputStream(sysmydir1mydir2myfile)
Bloquee el primer Kilobyte del archivo Ahora ninguna otra instancia puede leer estos bytesIFSKey key = aFilelock(1024)
Lea el primer Kilobyte del archivobyte data[] = new byte[1024]aFileread(data)
Desbloquee los bytes del archivoaFileunlock(key)
Cierre el archivoaFileclose()
Informacioacuten relacionadaJavadoc IFSKey
Modalidad de compartimiento de archivo
El programa Java puede especificar una modalidad de compartimiento al abrir un archivo Puede ser queel programa permita a los demaacutes programas abrir el archivo simultaacuteneamente o bien que tenga un accesoexclusivo al archivo
El ejemplo que sigue muestra coacutemo se especifica una modalidad de compartimiento de archivo Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Abra un objeto de archivo que represente el archivo Dado que este programa especifica share-none los demaacutes intentos abiertos fallaraacuten hasta que se cierre esta instanciaIFSFileOutputStream aFile =
new IFSFileOutputStream(sysmydir1mydir2myfileIFSFileOutputStreamSHARE_NONEfalse)
Lleve a cabo operaciones en el archivo
Cierre el archivo Ahora las demaacutes peticiones abiertas se ejecutaraacuten correctamenteaFileclose()
60 IBM Toolbox para Java IBM Toolbox para Java
IFSSystemView
IFSSystemView proporciona una pasarela para el sistema de archivos integrado de IBM i que se utiliza alconstruir objetos javaxswingJFileChooser
JFileChooser es un procedimiento Java estaacutendar para construir diaacutelogos a fin de recorrer y seleccionararchivos
Ejemplo coacutemo se utiliza IFSSystemView
El ejemplo siguiente muestra coacutemo se utiliza IFSSystemViewimport comibmas400accessAS400import comibmas400accessIFSJavaFileimport comibmas400accessIFSSystemViewimport javaxswingJFileChooserimport javaawtFrame
Trabaje con el directorio Dir en el sistema myAS400AS400 system = new AS400(myAS400)IFSJavaFile dir = new IFSJavaFile(system Dir)
JFileChooser chooser = new JFileChooser(dir new IFSSystemView(system))Frame parent = new Frame()int returnVal = choosershowOpenDialog(parent)if (returnVal == JFileChooserAPPROVE_OPTION)
IFSJavaFile chosenFile = (IFSJavaFile)(choosergetSelectedFile())Systemoutprintln(Ha seleccionado el archivo denominado +
chosenFilegetName())
Informacioacuten relacionadaJavadoc IFSSystemView
Clase ISeriesNetServerLa clase ISeriesNetServer representa el servicio NetServer en un servidor Esta clase permite al usuarioconsultar y modificar el estado y la configuracioacuten del NetServer
ISeriesNetServer sustituye a la clase NetServerInformacioacuten relacionadaJavadoc ISeriesNetServer
Clase JavaApplicationCallLa clase JavaApplicationCall proporciona la posibilidad de que el cliente utilice la JVM del servidor paraejecutar un programa Java que reside en el servidor
Despueacutes de establecer una conexioacuten con el servidor desde el cliente la clase JavaApplicationCall lepermite realizar estas tareas de configuracioacuten1 Establecer la variable de entorno CLASSPATH en el servidor con el meacutetodo setClassPath()2 Definir los paraacutemetros del programa con el meacutetodo setParameters()3 Ejecutar el programa con run()4 Enviar una entrada desde el cliente al programa Java El programa Java lee la entrada por medio de
una entrada estaacutendar que se establece con el meacutetodo sendStandardInString() La salida estaacutendar y lasalida de error estaacutendar se pueden redirigir desde el programa Java al cliente por medio degetStandardOutString() y getStandardErrorString()
JavaApplicationCall es una clase a la que se llama desde el programa Java Sin embargo IBM Toolboxpara Java tambieacuten proporciona programas de utilidad para llamar a programas Java que residen en el
IBM Toolbox para Java 61
servidor Estos programas de utilidad son programas Java completos que se pueden ejecutar desde laestacioacuten de trabajo Puede encontrar maacutes informacioacuten en la clase RunJavaApplication
Ejemplo
El ejemplo de la documentacioacuten de consulta de javadocs de JavaApplicationCall muestra coacutemo ejecutaren el servidor un programa (con la salida iexclHola a todos) desde el cliente
JavaApplicationCallInformacioacuten relacionadaJavadoc JavaApplicationCall
Clases JDBCJDBC es una interfaz de programas de aplicacioacuten (API) incluida en la plataforma Java que permite a losprogramas Java conectar con una gran variedad de bases de datos
Interfaces soportadas
La tabla siguiente muestra las interfaces JDBC soportadas y la API necesaria para utilizarlas
Interfaz JDBC soportada API necesaria
Blob proporciona acceso a los objetos binarios de grantamantildeo (BLOB)
Nuacutecleo de JDBC 21 soporte mejorado en JDBC 40
CallableStatement ejecuta procedimientos almacenadosde SQL
JDK 11 soporte mejorado en JDBC 40
Clob proporciona acceso a los objetos de tipo caraacutecter degran tamantildeo (CLOB)
Nuacutecleo de JDBC 21 soporte mejorado en JDBC 40
Connection representa una conexioacuten con una base dedatos especiacutefica
JDK 11 soporte mejorado en JDBC 40
ConnectionPool representa una agrupacioacuten de objetosConnection
Paquete opcional de JDBC 20
ConnectionPoolDataSource representa una faacutebrica deobjetos AS400JDBCPooledConnection reunidos en unaagrupacioacuten
Paquete opcional de JDBC 20
DatabaseMetaData proporciona informacioacuten acerca de labase de datos como conjunto
JDK 11 soporte mejorado en JDBC 40
DataSource representa una faacutebrica de conexiones de basede datos
Paquete opcional de JDBC 20 soporte mejorado en JDBC40
Driver crea la conexioacuten y devuelve informacioacuten acerca dela versioacuten del controlador
JDK 11
ParameterMetaData ofrece la posibilidad de obtenerinformacioacuten acerca de los tipos y las propiedades de losparaacutemetros de un objeto PreparedStatement
API de JDBC 30 soporte mejorado en JDBC 40
PooledConnection proporciona ganchos para la gestioacutende agrupaciones de conexiones
Paquete opcional de JDBC 20 soporte mejorado en JDBC40
PreparedStatement ejecuta sentencias SQL compiladas JDK 11 soporte mejorado en JDBC 40
ResultSet proporciona acceso a una tabla de datos que segenera mediante la ejecucioacuten de una consulta SQL o elmeacutetodo catalog de DatabaseMetaData
JDK 11 soporte mejorado en JDBC 40
ResultSetMetaData proporciona informacioacuten sobre unconjunto de resultados (ResultSet) especiacutefico
JDK 11 soporte mejorado en JDBC 40
RowId representa un valor ROWID de SQL JDBC 40
62 IBM Toolbox para Java IBM Toolbox para Java
Interfaz JDBC soportada API necesaria
RowSet es un conjunto de filas conectado que encapsulaun conjunto de resultados (ResultSet)
Paquete opcional de JDBC 20
Savepoint proporciona un control maacutes especiacutefico en lastransacciones
API JDBC 30
SQLXML representa un valor XML de SQL JDBC 40
Statement ejecuta sentencias SQL y obtiene losresultados
JDK 11 soporte mejorado en JDBC 40
StatementEvent se enviacutea a todos losStatementEventListeners que se han registrado en unaPooledConnection Eso se produce cuando el controladordetermina que una PreparedStatement que estaacute asociadacon la PooledConnection se ha cerrado o el controladordetermina que no es vaacutelida
StatementEventListener registra las notificaciones deeventos producidos en PreparedStatements que seencuentran en la agrupacioacuten Statement
JDBC 40
XAConnection es una conexioacuten de base de datos queparticipa en transacciones XA globales
Paquete opcional de JDBC 20
XAResource es un gestor de recursos destinado a su usoen las transacciones XA
Paquete opcional de JDBC 20
Referencia relacionadaldquoJDBCrdquo en la paacutegina 256JDBC es una interfaz de programas de aplicacioacuten (API) incluida en la plataforma Java que permite a losprogramas Java conectar con una gran variedad de bases de datosldquoEjemplo coacutemo se utiliza JDBCPopulate para crear y llenar con datos una tablardquo en la paacutegina 428Este programa utiliza el controlador JDBC de IBM Toolbox para Java para crear y llenar una tablaldquoEjemplo coacutemo se utiliza JDBCQuery para consultar una tablardquo en la paacutegina 439Este programa utiliza el controlador JDBC de IBM Toolbox para Java para consultar una tabla y enviar sucontenido a la salidaInformacioacuten relacionada
JTOpen La versioacuten de coacutedigo fuente abierto de IBM Toolbox para JavaJavadoc AS400JDBCConnectionPoolDataSourceJavadoc AS400JDBCPooledConnectionRowID
Clase AS400JDBCBlob
Puede utilizar un objeto AS400JDBCBlob para acceder a objetos binarios de gran tamantildeo (BLOB) comopor ejemplo los archivos de sonido (wav) o los archivos de imagen (gif)
La diferencia clave entre la clase AS400JDBCBlob y la clase AS400JDBCBlobLocator es el lugar dealmacenamiento del blob Con la clase AS400JDBCBlob el blob se almacena en la base de datos que inflael tamantildeo del archivo de base de datos La clase AS400JDBCBlobLocator almacena en el archivo de basede datos un localizador (es como si fuese un puntero) que sentildeala al lugar en el que se encuentra el blob
Con la clase AS400JDBCBlob puede utilizarse la propiedad de umbral de lob Esta propiedad especificael tamantildeo maacuteximo (en kilobytes) de LOB (objeto de gran tamantildeo) que puede recuperarse como parte deun conjunto de resultados Los LOB cuyo tamantildeo sobrepasa este umbral se recuperan en fragmentosutilizando una comunicacioacuten adicional con el servidor Los umbrales de LOB de mayor tamantildeo reducenla frecuencia de la comunicacioacuten con el servidor pero bajan maacutes datos de LOB aunque dichos datos no
IBM Toolbox para Java 63
se utilicen Los umbrales de LOB de menor tamantildeo pueden incrementar la frecuencia de la comunicacioacutencon el servidor pero uacutenicamente bajan los datos de LOB seguacuten se necesiten En Propiedades de JDBCencontraraacute informacioacuten sobre las propiedades adicionales que estaacuten disponibles
Mediante la clase AS400JDBCBlob se pueden realizar estas tareasv Devolver el blob entero como una corriente de bytes sin interpretarv Devolver parte del contenido del blobv Devolver la longitud del blobv Crear una corriente de datos binarios para escribir en el blobv Escribir una matriz de bytes en el blobv Escribir la totalidad o una parte de una matriz de bytes en el blobv Truncar el blob
Ejemplos
Los ejemplos que hay a continuacioacuten muestran coacutemo se utiliza la clase AS400JDBCBlob para leerinformacioacuten de un blob y actualizar un blob
Ejemplo coacutemo se utiliza la clase AS400JDBCBlob para leer informacioacuten de un blobBlob blob = resultSetgetBlob (1)long length = bloblength ()byte[] bytes = blobgetBytes(1 (int) length)
Ejemplo coacutemo se utiliza la clase AS400JDBCBlob para actualizar un blobResultSet rs = statementexecuteQuery (SELECT BLOB FROM MYTABLE)rsabsolute(5)Blob blob = rsgetBlob(1)
Cambie los bytes del blob empezando por el byte nuacutemero 7 del blobblobsetBytes (7 new byte[] (byte) 57 (byte) 58 (byte) 98)
Actualice el blob en el conjunto de resultados cambiando el blob que empieza en el byte nuacutemero 7 del blob (empezando a contar a partir del 1) y truncando el blob al final de los bytes actualizados (ahora el blob tiene 9 bytes)rsupdateBlob(1 blob)
Actualice la base de datos con el cambio Asiacute se cambiaraacute el blob en la base de datos empezando en el byte nuacutemero 7 del blob y truncando el blob al final de los bytes actualizadosrsupdateRow()rsclose()
Clase AS400JDBCBlobLocator
Puede utilizar un objeto AS400JDBCBlobLocator para acceder a objetos binarios de gran tamantildeo
Mediante la clase AS400JDBCBlobLocator se pueden realizar estas tareasv Devolver el blob entero como una corriente de bytes sin interpretarv Devolver parte del contenido del blobv Devolver la longitud del blobv Crear una corriente de datos binarios para escribir en el blobv Escribir una matriz de bytes en el blobv Escribir la totalidad o una parte de una matriz de bytes en el blobv Truncar el blob
64 IBM Toolbox para Java IBM Toolbox para Java
Javadoc AS400JDBCBlobJavadoc AS400JDBCBlobLocator
Interfaz CallableStatement
Puede utilizar un objeto CallableStatement para ejecutar procedimientos almacenados de SQL Elprocedimiento almacenado al que se llama debe estar ya almacenado en la base de datos El objetoCallableStatement no contiene el procedimiento almacenado sino que uacutenicamente llama a dichoprocedimiento
Un procedimiento almacenado puede devolver uno o varios objetos ResultSet y utilizar paraacutemetros INOUT e INOUT Utilice ConnectionprepareCall() para crear objetos CallableStatement nuevos
El objeto CallableStatement permite someter a una base de datos varios mandatos SQL como si fuesen unsolo grupo mediante el uso del soporte de proceso por lotes Puede obtener un mejor rendimientoempleando el soporte de proceso por lotes ya que normalmente se tarda menos en procesar un grupo deoperaciones que en procesarlas una a una
CallableStatement permite obtener y establecer paraacutemetros y columnas por nombre aunque el uso deliacutendice de columna permite conseguir un mejor rendimiento
Ejemplo coacutemo se utiliza CallableStatement
El ejemplo que sigue muestra coacutemo se utiliza la interfaz CallableStatement Coneacutectese al servidorConnection c = DriverManagergetConnection(jdbcas400mySystem)
Cree el objeto CallableStatement Este objeto precompila la llamada especificada en un procedimiento almacenado Los signos de interrogacioacuten indican doacutende deben establecerse los paraacutemetros de entrada y doacutende pueden recuperarse los paraacutemetros de salida Los primeros dos paraacutemetros son paraacutemetros de entrada y el tercer paraacutemetro es un paraacutemetro de salidaCallableStatement cs = cprepareCall(CALL MYLIBRARYADD ( ))
Establezca paraacutemetros de entradacssetInt (1 123)cssetInt (2 234)
Registre el tipo del paraacutemetro de salidacsregisterOutParameter (3 TypesINTEGER)
Ejecute el procedimiento almacenadocsexecute ()
Obtenga el valor del paraacutemetro de salidaint sum = csgetInt (3)
Cierre CallableStatement y la conexioacutencsclose()cclose()
Javadoc AS400JDBCCallableStatement
Clase AS400JDBCClob
Puede utilizar un objeto AS400JDBCClob para acceder a los objetos de tipo caraacutecter de gran tamantildeo(CLOB) como por ejemplo los grandes documentos
La diferencia clave entre la clase AS400JDBCClob y la clase AS400JDBCClobLocator es el lugar dealmacenamiento del clob Con la clase AS400JDBCClob el clob se almacena en la base de datos que infla
IBM Toolbox para Java 65
el tamantildeo del archivo de base de datos La clase AS400JDBCClobLocator almacena en el archivo de basede datos un localizador (es como si fuese un puntero) que sentildeala al lugar en el que se encuentra el clob
Con la clase AS400JDBCClob puede utilizar la propiedad de umbral de lob Esta propiedad especifica eltamantildeo maacuteximo (en kilobytes) de LOB (objeto de gran tamantildeo) que puede recuperarse como parte de unconjunto de resultados Los LOB cuyo tamantildeo sobrepasa este umbral se recuperan en fragmentosutilizando una comunicacioacuten adicional con el servidor Los umbrales de LOB de mayor tamantildeo reducenla frecuencia de la comunicacioacuten con el servidor pero bajan maacutes datos de LOB aunque dichos datos nose utilicen Los umbrales de LOB de menor tamantildeo pueden incrementar la frecuencia de la comunicacioacutencon el servidor pero uacutenicamente bajan los datos de LOB seguacuten se necesiten En ldquoPropiedades JDBC deIBM Toolbox para Javardquo en la paacutegina 266 encontraraacute informacioacuten sobre las propiedades adicionales queestaacuten disponibles
Mediante la clase AS400JDBCClob se pueden realizar estas tareasv Devolver el clob entero como una corriente de caracteres ASCIIv Devolver el contenido del clob como una corriente de caracteresv Devolver una parte del contenido del clobv Devolver la longitud del clobv Crear una corriente de caracteres Unicode o una corriente de caracteres ASCII para escribir en el clobv Escribir una serie en el clobv Truncar el clob
Ejemplos
Los ejemplos que hay a continuacioacuten muestran coacutemo se utiliza la clase AS400JDBCClob para leerinformacioacuten de un clob y actualizar un clob
Ejemplo coacutemo se utiliza la clase AS400JDBCClob para leer informacioacuten de un clobClob clob = rsgetClob(1)int length = cloblength()String s = clobgetSubString(1 (int) length)
Ejemplo coacutemo se utiliza la clase AS400JDBCClob para actualizar un clobResultSet rs = statementexecuteQuery (SELECT CLOB FROM MYTABLE)rsabsolute(4)Clob clob = rsgetClob(1)
Cambie los caracteres del clob empezando por el tercer caraacutecter del clobclobsetString (3 Small)
Actualice el clob en el conjunto de resultados empezando por el tercer caraacutecter del clob y truncando el clob al final de la serie de actualizacioacuten (el clob ahora tiene 7 caracteres)rsupdateClob(1 clob)
Actualice la base de datos con el clob actualizado Asiacute se cambiaraacute el clob en la base de datos empezando en el tercer caraacutecter del clob y truncando el clob al final de la serie de actualizacioacutenrsupdateRow()rsclose()
Clase AS400JDBCClobLocator
Puede utilizar un objeto AS400JDBCClobLocator para acceder a los objetos de tipo caraacutecter de grantamantildeo (CLOB)
66 IBM Toolbox para Java IBM Toolbox para Java
Mediante la clase AS400JDBCClobLocator se pueden realizar estas tareasv Devolver el clob entero como una corriente de caracteres ASCIIv Devolver el clob entero como una corriente de caracteresv Devolver una parte del contenido del clobv Devolver la longitud del clobv Crear una corriente de caracteres Unicode o una corriente de caracteres ASCII para escribir en el clobv Escribir una serie en el clobv Truncar el clob
Javadoc AS400JDBCClobJavadoc AS400JDBCClobLocator
Clase AS400JDBCConnection
La clase AS400JDBCConnection proporciona una conexioacuten JDBC con una base de datos DB2 para IBM iespeciacutefica
Utilice DriverManagergetConnection() para crear nuevos objetos AS400JDBCConnection Para obtenermaacutes informacioacuten consulte ldquoRegistro del controlador JDBCrdquo en la paacutegina 80
Hay muchos paraacutemetros opcionales que pueden especificarse al crearse la conexioacuten Las propiedadespueden especificarse como parte del URL o en un objeto javautilProperties En ldquoPropiedades JDBC deIBM Toolbox para Javardquo en la paacutegina 266 encontraraacute una lista completa de las propiedades soportadaspor AS400JDBCDriver
Nota una conexioacuten puede contener como maacuteximo 9999 sentencias abiertas
AS400JDBCConnection incluye soporte para los puntos de salvar y la posibilidad de retencioacuten a nivel delas sentencias asiacute como soporte limitado para la devolucioacuten de claves generadas automaacuteticamente
Para utilizar los tickets de kerberos establezca uacutenicamente el nombre de sistema (y no la contrasentildea) enel objeto URL JDBC La identidad del usuario se recupera mediante la infraestructura JGSS (Java GenericSecurity Services) por lo que tampoco necesita especificar un usuario en el URL JDBC Solo puedeestablecer un meacutetodo de autenticacioacuten en un objeto AS400JDBCConnection a la vez Al establecer lacontrasentildea se borran los tickets de kerberos o los siacutembolos de perfil Para obtener maacutes informacioacutenconsulte ldquoClase AS400rdquo en la paacutegina 21
Mediante la clase AS400JDBCConnection se pueden realizar estas tareasv Crear una sentencia (objetos Statement PreparedStatement o CallableStatement)v Crear una sentencia que tenga un tipo de conjunto de resultados y una concurrencia especiacuteficos
(objetos Statement PreparedStatement o CallableStatement)v Comprometer y retrotraer los cambios efectuados en la base de datos y liberar los bloqueos de base de
datos que estaacuten retenidos actualmentev Cerrar la conexioacuten y los recursos del servidor de inmediato en lugar de esperar a que se liberen
automaacuteticamentev Establecer la posibilidad de retencioacuten y obtener la posibilidad de retencioacuten de la conexioacutenv Establecer el aislamiento de transaccioacuten y obtener el aislamiento de transaccioacuten de la conexioacutenv Obtener los metadatos de la conexioacutenv Activar o desactivar el compromiso automaacuteticov Obtener el identificador de trabajo del trabajo servidor de host que corresponde a la conexioacuten
Si utiliza JDBC 30 y se conecta a un servidor que ejecuta IBM i 52 o posterior puede emplearAS400JDBCConnection para llevar a cabo las acciones siguientes
IBM Toolbox para Java 67
v Crear una sentencia con una posibilidad de retencioacuten de conjunto de resultados especiacutefica (objetoStatement PreparedStatement o CallableStatement)
v Crear una sentencia preparada que devuelva las claves generadas automaacuteticamente (cuando se llama agetGeneratedKeys() en el objeto Statement)
v Utilizar puntos de salvar que ofrecen un control maacutes especiacutefico de las transaccionesndash Establecer puntos de salvarndash Retrotraer puntos de salvarndash Liberar puntos de salvar
Javadoc AS400JDBCConnection
AS400JDBCConnectionPool
La clase AS400JDBCConnectionPool representa una agrupacioacuten de objetos AS400JDBCConnectiondisponibles para su uso por un programa Java como parte del soporte de IBM Toolbox para Java para laAPI JDBC 20 Optional Package
Puede emplear un objeto AS400JDBCConnectionPoolDataSource para especificar las propiedades de lasconexiones que se crean en la agrupacioacuten como se muestra en el ejemplo siguiente
No podraacute cambiar el origen de datos de la agrupacioacuten de conexiones una vez que haya solicitado unaconexioacuten y la agrupacioacuten esteacute en uso Para restablecer el origen de datos de la agrupacioacuten de conexionesprimero debe efectuar una llamada a close() en la agrupacioacuten
Para devolver conexiones a un objeto AS400JDBCConnectionPool utilice close() en el objetoAS400JDBCConnection
Nota si las conexiones no se devuelven a la agrupacioacuten el tamantildeo de la agrupacioacuten de conexionessigue creciendo y las conexiones no se reutilizan
Para establecer propiedades en la agrupacioacuten utilice los meacutetodos heredados de ConnectionPool Entre laspropiedades que puede establecer se encuentran las siguientesv Nuacutemero maacuteximo de conexiones permitidas en la agrupacioacutenv Tiempo maacuteximo de vida de una conexioacutenv Tiempo maacuteximo de inactividad de una conexioacuten
Tambieacuten puede registrar objetos AS400JDBCConnectionPoolDataSource mediante un proveedor deservicio JNDI (Java Naming and Directory Interface) Para obtener maacutes informacioacuten acerca de losproveedores de servicios JNDI consulte los enlaces de referencia de IBM Toolbox para Java
Ejemplo coacutemo se utiliza la agrupacioacuten de conexiones
El ejemplo siguiente obtiene de JNDI un origen de datos de agrupacioacuten de conexiones y lo emplea paracrear una agrupacioacuten de conexiones con 10 conexiones
Obtenga un objeto AS400JDBCConnectionPoolDataSource de JNDI (se supone que el entorno JNDI estaacute establecido)Context context = new InitialContext(environment)AS400JDBCConnectionPoolDataSource datasource =
(AS400JDBCConnectionPoolDataSource)contextlookup(jdbcmyDatabase)
Cree un objeto AS400JDBCConnectionPoolAS400JDBCConnectionPool pool = new AS400JDBCConnectionPool(datasource)
Antildeada 10 conexiones a la agrupacioacuten que la aplicacioacuten pueda utilizar (las conexiones fiacutesicas de base de datos se crean
68 IBM Toolbox para Java IBM Toolbox para Java
seguacuten el origen de datos)poolfill(10)
Obtenga un handle con una conexioacuten de base de datos de la agrupacioacutenConnection connection = poolgetConnection()
Realizar diversas consultasactualizaciones en la base de datos
Cierre el handle de la conexioacuten para devolverla a la agrupacioacutenconnectionclose()
La aplicacioacuten trabaja con varias aplicaciones maacutes de la agrupacioacuten
Cierre la agrupacioacuten para liberar todos los recursospoolclose()
Javadoc AS400JDBCConnectionPoolJavadoc AS400JDBCConnectionPoolJavadoc AS400JDBCConnectionPoolDataSource
Clase AS400JDBCManagedConnectionPoolDataSource
La agrupacioacuten de conexiones JDBC es una agrupacioacuten de conexiones gestionadas que permite reutilizarconexiones
La clase AS400JDBCManagedConnectionPoolDataSource simplifica el mantenimiento de agrupaciones deconexiones eliminando la necesidad de que las aplicaciones de usuario implementen su propio coacutedigo degestioacuten La agrupacioacuten de conexiones se utiliza en combinacioacuten con el mecanismo de la interfazDataSource de JDBC La clase AS400JDBCManagedConnectionPoolDataSource contiene unaimplementacioacuten de la interfaz javaxsqlDataSource Esta clase gestiona las funciones del mecanismo deagrupacioacuten de conexiones y permite acceder a eacutel igual que a un DataSource habitual La configuracioacuten yutilizacioacuten del gestor de agrupaciones de conexiones JDBC autogestionadas implica la utilizacioacuten de JNDI(Java Naming and Directory Interface) para enlazar el origen de datos gestionado de la agrupacioacuten deconexiones Para que la agrupacioacuten de conexiones JDBC autogestionada funcione es necesario JNDI
Estas propiedades permiten configurar los atributos de la agrupacioacuten de conexionesv InitialPoolSizev MinPoolSizev MaxPoolSizev MaxLifetimev MaxIdleTimev PropertyCyclev ReuseConnections
Para obtener maacutes informacioacuten consulte los Javadocs sobre los meacutetodos setX() siendo X la propiedad
Ejemplos coacutemo se utiliza la clase AS400JDBCManagedConnectionPoolDataSource
Estos ejemplos ilustran la utilizacioacuten de la clase AS400JDBCManagedConnectionPoolDataSource La claseAS400JDBCManagedConnectionPoolDataSource simplifica el mantenimiento de agrupaciones deconexiones eliminando la necesidad de que las aplicaciones de usuario implementen su propio coacutedigo degestioacuten
Nota al utilizar los ejemplos de coacutedigo acepta los teacuterminos del ldquoInformacioacuten sobre licencia de coacutedigo yexencioacuten de responsabilidadrdquo en la paacutegina 590
IBM Toolbox para Java 69
Ejemplo 1
Este breve ejemplo muestra la utilizacioacuten baacutesica de la claseAS400JDBCManagedConnectionPoolDataSourceimport javaxnamingContextimport javaxnamingInitialContextimport javaxsqlDataSource
import comibmas400accessAS400JDBCManagedConnectionPoolDataSourceimport comibmas400accessAS400JDBCManagedDataSource
public class TestJDBCConnPoolSnippet
void test()
AS400JDBCManagedConnectionPoolDataSource cpds0 = new AS400JDBCManagedConnectionPoolDataSource()
Establecer propiedades generales de origen de datos Tenga en cuenta que tanto el origen de datos de agrupacioacuten de conexiones (CPDS) como el origen de datos gestionado (MDS) tienen estas propiedades y pueden tener valores diferentescpds0setServerName(host)cpds0setDatabaseName(host)iasp puede especificarse aquiacutecpds0setUser(userid)cpds0setPassword(password)
cpds0setSavePasswordWhenSerialized(true)
Establecer propiedades especiacuteficas de agrupacioacuten de conexionescpds0setInitialPoolSize(initialPoolSize_)cpds0setMinPoolSize(minPoolSize_)cpds0setMaxPoolSize(maxPoolSize_)cpds0setMaxLifetime((int)(maxLifetime_1000)) convertir a segundoscpds0setMaxIdleTime((int)(maxIdleTime_1000)) convertir a segundoscpds0setPropertyCycle((int)(propertyCycle_1000)) convertir a segundoscpds0setReuseConnections(false) no reutilizar conexiones
Establecer la faacutebrica de contexto inicial que debe utilizarseSystemsetProperty(ContextINITIAL_CONTEXT_FACTORY comsunjndifscontextRefFSContextFactory)
Obtener el contexto inicial JNDIContext ctx = new InitialContext()
Nota a continuacioacuten figura un procedimiento alternativo para establecer las propiedades de contexto localmente Properties env = new Properties() envput(ContextINITIAL_CONTEXT_FACTORY comsunjndifscontextRefFSContextFactory) Contexto ctx = new InitialContext(env)
ctxrebind(mydatasource cpds0) Ahora pueden realizarse buacutesquedas en cpds por el nombre mydatasource
Crear un objeto DataSource estaacutendar que haga referencia a eacutel
AS400JDBCManagedDataSource mds0 = new AS400JDBCManagedDataSource()mds0setDescription(DataSource que da soporte a la agrupacioacuten de conexiones)mds0setDataSourceName(mydatasource)ctxrebind(ConnectionPoolingDataSource mds0)
DataSource dataSource_ = (DataSource)ctxlookup(ConnectionPoolingDataSource)
AS400JDBCManagedDataSource mds_ = (AS400JDBCManagedDataSource)dataSource_
boolean isHealthy = mds_checkPoolHealth(false) comprobar el estado de la agrupacioacuten
Connection c = dataSource_getConnection()
Ejemplo 2
Este ejemplo muestra maacutes detalles acerca de la utilizacioacuten de la claseAS400JDBCManagedConnectionPoolDataSource
70 IBM Toolbox para Java IBM Toolbox para Java
import javaawtTextAreaimport javaioBufferedReaderimport javaioFileimport javaioFileReaderimport javaioFileInputStreamimport javaioFileOutputStreamimport javaioOutputStreamimport javaioPrintStreamimport javautilVectorimport javautilProperties
import javasqlConnectionimport javaxsqlDataSourceimport javasqlResultSetimport javasqlStatementimport javaxnamingimport javautilDateimport javautilArrayListimport javautilRandomimport comibmas400accessAS400import comibmas400accessAS400JDBCManagedConnectionPoolDataSourceimport comibmas400accessAS400JDBCManagedDataSourceimport comibmas400accessTrace
public class TestJDBCConnPool
private static final boolean DEBUG = false
Si activa este indicador aseguacuterese de activar tambieacuten el indicador siguiente AS400JDBCConnectionTESTING_THREAD_SAFETYprivate static final boolean TESTING_THREAD_SAFETY = false
private static String useridprivate static String passwordprivate static String host
Nota a efectos de coherencia todos los valores de tiempo se almacenan en unidades de milisegundosprivate int initialPoolSize_ inicial de conexiones en la agrupacioacutenprivate int minPoolSize_ miacuten de conexiones en la agrupacioacutenprivate int maxPoolSize_ maacutex de conexiones en la agrupacioacutenprivate long maxLifetime_ maacutex de tiempo de vida (msegs) de conexiones en la agrupacioacutenprivate long maxIdleTime_ maacutex de tiempo de desocupacioacuten (msegs) de conexiones disponibles en la agrupacioacutenprivate long propertyCycle_ frecuencia de mantenimiento de agrupacioacuten (msegs)
private int numDaemons_ de daemons de peticionario que deben crearseprivate static long timeToRunDaemons_ duracioacuten total (msegs) de ejecucioacuten de los daemonsprivate long daemonMaxSleepTime_ tiempo maacutex (msegs) para latencia de daemons de peticionario en cada cicloprivate long daemonMinSleepTime_ tiempo miacuten (msegs) para latencia de daemons de peticionario en cada cicloprivate long poolHealthCheckCycle_ de msegs entre llamadas a checkPoolHealth()
private boolean keepDaemonsAlive_ = true Si es false los daemons se cierran
private DataSource dataSource_private AS400JDBCManagedDataSource mds_
private final Object daemonSleepLock_ = new Object()
private Random random_ = new Random()
static
try ClassforName(comibmas400accessAS400JDBCDriver)
catch ( Exception e)
Systemoutprintln(Imposible registrar el controlador JDBC)Systemexit (0)
public static void main(String[] args)
host = args[0]userid = args[1]password = args[2]timeToRunDaemons_ = (new Integer(args[3]))intValue() 1000 milisegundosargs[3]=tiempo de ejecucioacuten en segundos
IBM Toolbox para Java 71
TestJDBCConnPool cptest = new TestJDBCConnPool()
cptestsetup()cptestrunTest()
public void setup()
try
if (DEBUG)Systemoutprintln(iquestel distintivo TESTING_THREAD_SAFETY
+ (es TESTING_THREAD_SAFETY true false))
if (TESTING_THREAD_SAFETY)
Ajustar los valores para realizar pruebas de utilizacioacuten intensiva de hebras NOTA se presupone que la clase AS400JDBCConnection tambieacuten se ha modificado para
no establecer conexiones reales con un servidorreal
Para ello edite AS400JDBCConnectionjava cambiando su indicador TESTING_THREAD_SAFETY a rsquofalsersquo y vuelva a compilar
minPoolSize_ = 100maxPoolSize_ = 190initialPoolSize_ = 150 este valor debe restablecerse en maxPoolSize_numDaemons_ = 75if (timeToRunDaemons_ == 0)
timeToRunDaemons_ = 1801000 180 segundos == 3 minutos
else Establecer valores maacutes conservadores ya que van a establecerse conexiones reales con un
servidor real y no deseamos monopolizar el servidorminPoolSize_ = 5maxPoolSize_ = 15initialPoolSize_ = 9numDaemons_ = 4if (timeToRunDaemons_ == 0)
timeToRunDaemons_ = 151000 15 segundos
maxLifetime_ = (int)timeToRunDaemons_ 3maxIdleTime_ = (int)timeToRunDaemons_ 4propertyCycle_ = timeToRunDaemons_ 4poolHealthCheckCycle_ = Mathmin(timeToRunDaemons_ 4 20601000) como miacutenimo una vez cada 20 minutos (maacutes frecuentemente si el tiempo de ejecucioacuten es maacutes corto)daemonMaxSleepTime_ = Mathmin(timeToRunDaemons_ 3 101000) como maacuteximo 10 segundos (menos si el tiempo de ejecucioacuten es maacutes corto)daemonMinSleepTime_ = 20 milisegundos
if (DEBUG)Systemoutprintln(setup Construyendo
+ AS400JDBCManagedConnectionPoolDataSource (cpds0))AS400JDBCManagedConnectionPoolDataSource cpds0 =
new AS400JDBCManagedConnectionPoolDataSource()
Establecer propiedades de origen de datos Tenga en cuenta que tanto CPDS como MDS tienen estas propiedades y pueden tener valores diferentescpds0setServerName(host)cpds0setDatabaseName(host)iasp puede especificarse aquiacutecpds0setUser(userid)cpds0setPassword(password)
cpds0setSavePasswordWhenSerialized(true)
Establecer propiedades especiacuteficas de agrupacioacuten de conexionescpds0setInitialPoolSize(initialPoolSize_)cpds0setMinPoolSize(minPoolSize_)cpds0setMaxPoolSize(maxPoolSize_)cpds0setMaxLifetime((int)(maxLifetime_1000)) convertir a segundoscpds0setMaxIdleTime((int)(maxIdleTime_1000)) convertir a segundoscpds0setPropertyCycle((int)(propertyCycle_1000)) convertir a segundoscpds0setReuseConnections(false) no reutilizar conexiones
Establecer la faacutebrica de contexto inicial que debe utilizarseSystemsetProperty(ContextINITIAL_CONTEXT_FACTORY
comsunjndifscontextRefFSContextFactory)
Obtener el contexto inicial JNDI
72 IBM Toolbox para Java IBM Toolbox para Java
Context ctx = new InitialContext()
Nota a continuacioacuten figura un procedimiento alternativo para establecer las propiedades de contexto localmente Properties env = new Properties() envput(ContextINITIAL_CONTEXT_FACTORY comsunjndifscontextRefFSContextFactory) Contexto ctx = new InitialContext(env)
ctxrebind(mydatasource cpds0) Ahora pueden realizarse buacutesquedas en cpds por el
nombre mydatasource
if (DEBUG)Systemoutprintln(setup lookup(mydatasource + ))
AS400JDBCManagedConnectionPoolDataSource cpds1 = (AS400JDBCManagedConnectionPoolDataSource)ctxlookup(mydatasource) if (DEBUG) Systemoutprintln(setup cpds1getUser() == | + cpds1getUser() + |)
Crear un objeto DataSource estaacutendar que haga referencia a eacutel
if (DEBUG)Systemoutprintln(setup Constructing AS400JDBCManagedDataSource (mds0))
AS400JDBCManagedDataSource mds0 = new AS400JDBCManagedDataSource()mds0setDescription(DataSource que da soporte a la agrupacioacuten de conexiones)mds0setDataSourceName(mydatasource)ctxrebind(ConnectionPoolingDataSource mds0)
if (DEBUG)Systemoutprintln(setup lookup(ConnectionPoolingDataSource + ))
dataSource_ = (DataSource)ctxlookup(ConnectionPoolingDataSource)dataSource_setLogWriter(output_)if (DEBUG)Systemoutprintln(setup dataSource_getUser() == | +
((AS400JDBCManagedDataSource)dataSource_)getUser() + |)
mds_ = (AS400JDBCManagedDataSource)dataSource_catch (Exception e)
eprintStackTrace()Systemoutprintln(Error de configuracioacuten durante la creacioacuten del archivo de rastreo)
void displayConnectionType(Connection conn boolean specifiedDefaultId)
if (conn instanceof comibmas400accessAS400JDBCConnectionHandle)Systemoutprint((+ (specifiedDefaultId + -) + P))
elseSystemoutprint((+ (specifiedDefaultId + -) + NP))
Obtiene y devuelve conexiones desde y hacia una agrupacioacuten de conexiones durante un tiempopublic void runTest()
boolean ok = truetry
Systemoutprintln(Pruebe iniciada ejecutada en + new Date())
if (DEBUG)Systemoutprintln(Comprobacioacuten de estado justo despueacutes de la
creacioacuten del origen de datos+ (se espera que la agrupacioacuten auacuten no exista) )
if (mds_checkPoolHealth(true)) ok = falseSystemoutprintln(nERROR La agrupacioacuten existe antes del primer getConnection())
Comprobar algunos meacutetodos getset para propiedades JDBCSystemoutprintln(Comprobando meacutetodos getset )
mds_setAccess(soacutelo lectura)if (mds_getAccess()equals(soacutelo lectura))
ok = falseSystemoutprintln(nERROR getAccess() ha devuelto un valor inesperado
IBM Toolbox para Java 73
+ | + mds_getAccess()+|)
boolean oldBool = mds_isBigDecimal()boolean newBool = (oldBool false true)mds_setBigDecimal(newBool)if (mds_isBigDecimal() = newBool)
ok = falseSystemoutprintln(nERROR isBigDecimal() ha devuelto un valor
inesperado + |+mds_isBigDecimal()+|)
mds_setBigDecimal(oldBool)
int oldInt = mds_getBlockCriteria()int newInt = (oldInt == 2 1 2)mds_setBlockCriteria(newInt)if (mds_getBlockCriteria() = newInt)
ok = falseSystemoutprintln(nERROR getBlockCriteria() ha devuelto un valor
inesperado + |+mds_getBlockCriteria()+|)
mds_setBlockCriteria(oldInt)
Comprobar algunos meacutetodos getset para propiedades de socket
oldBool = mds_isKeepAlive()newBool = (oldBool false true)mds_setKeepAlive(newBool)if (mds_isKeepAlive() = newBool)
ok = falseSystemoutprintln(nERROR isKeepAlive() ha devuelto un valor
inesperado + |+mds_isKeepAlive()+|)
mds_setKeepAlive(oldBool)
oldInt = mds_getReceiveBufferSize()newInt = (oldInt == 256 512 256)mds_setReceiveBufferSize(newInt)if (mds_getReceiveBufferSize() = newInt)
ok = falseSystemoutprintln(nERROR getReceiveBufferSize() ha devuelto un valor
inesperado + |+mds_getReceiveBufferSize()+|)
mds_setReceiveBufferSize(oldInt)
Systemoutprintln(CONNECTION 1)Object o = dataSource_getConnection()Systemoutprintln(ogetClass())Systemoutprintln(LOOK ABOVE)Connection c1 = dataSource_getConnection()
if (DEBUG)displayConnectionType(c1 true)
if (DEBUG)Systemoutprintln(Comprobando estado despueacutes del primer getConnection() )
if (mds_checkPoolHealth(true)) ok = falseSystemoutprintln(nERROR La agrupacioacuten no tiene un buen estado despueacutes del primer getConnection())
if (TESTING_THREAD_SAFETY)
try
c1setAutoCommit(false)if (DEBUG)Systemoutprintln(SELECT FROM QIWSQCUSTCDT)
Statement s = c1createStatement()ResultSet rs = sexecuteQuery(SELECT FROM QIWSQCUSTCDT)while (rsnext ())
if (DEBUG)Systemoutprintln(rsgetString(2))
74 IBM Toolbox para Java IBM Toolbox para Java
rsclose()sclose()
catch (Exception e)
eprintStackTrace()if (DEBUG)Systemoutprintln(Comprobacioacuten de estado despueacutes de un
error de conexioacuten muy grave )
if (mds_checkPoolHealth(true)) ok = falseSystemoutprintln(nERROR La agrupacioacuten no tiene un buen estado
despueacutes del error muy + grave)
Systemoutprintln(CONNECTION 2)Connection c2 = dataSource_getConnection(userid password)if (DEBUG)displayConnectionType(c2 false)
Systemoutprintln(CONNECTION 3)Connection c3 = dataSource_getConnection()if (DEBUG)displayConnectionType(c3 true)
c1close()
if (DEBUG)Systemoutprintln(Comprobando estado despueacutes del primer close())
if (mds_checkPoolHealth(true)) ok = falseSystemoutprintln(nERROR La agrupacioacuten no tiene un buen estado despueacutes del primer close())
Systemoutprintln(CONNECTION 4)Connection c4 = dataSource_getConnection()if (DEBUG) displayConnectionType(c4 true)
c1close() cerrar de nuevoc2close()c3close()c4close()
if (DEBUG) Systemoutprintln(Comprobando estado despueacutes del uacuteltimo close())if (mds_checkPoolHealth(true))
ok = falseSystemoutprintln(nERROR La agrupacioacuten no tiene un buen estado despueacutes del uacuteltimo close())
Iniciar los daemons de pruebaSystemoutprintln(Iniciando daemons de prueba)startThreads()
Ejecutar los daemons de prueba durante un tiempo comprobar el estado de la agrupacioacuten perioacutedicamente
long startTime = SystemcurrentTimeMillis()long endTime = startTime + timeToRunDaemons_while (SystemcurrentTimeMillis() lt endTime)
Systemoutprint(h) Permitir que los daemons se ejecuten durante un tiempo y luego comprobar el estado de la agrupacioacutentry
Threadsleep(poolHealthCheckCycle_)catch (InterruptedException ie) if (mds_checkPoolHealth(true))
ok = falseSystemoutprintln(nERROR La agrupacioacuten no tiene un buen estado despueacutes de iniciar los daemons de prueba)
Detener los daemons de pruebaSystemoutprintln(Deteniendo daemons de prueba)stopThreads()
if (DEBUG)Systemoutprintln(Comprobacioacuten de estado despueacutes de ejecutar
daemons connectionGetter)
IBM Toolbox para Java 75
if (mds_checkPoolHealth(true))
ok = falseSystemoutprintln(nERROR La agrupacioacuten no tiene un buen estado despueacutes de detener los daemons de prueba)
if (TESTING_THREAD_SAFETY)
Systemoutprintln(CONNECTION 5)Connection c = dataSource_getConnection()if (DEBUG) displayConnectionType(c true)csetAutoCommit(false)if (DEBUG) Systemoutprintln(SELECT FROM QIWSQCUSTCDT)Statement s = ccreateStatement()ResultSet rs = sexecuteQuery(SELECT FROM QIWSQCUSTCDT)while (rsnext ())
if (DEBUG) Systemoutprintln(rsgetString(2))rsclose()sclose()cclose()
Systemoutprintln(nCerrando la agrupacioacuten)mds_closePool()
if (DEBUG)Systemoutprintln(Comprobando estado despueacutes de cerrar la agrupacioacuten)
TracesetTraceJDBCOn(true) aseguacuterese de que se imprima el estado finalTracesetTraceOn(true)if (mds_checkPoolHealth(true))
ok = falseSystemoutprintln(nERROR La agrupacioacuten no tiene un buen estado despueacutes de cerrar la agrupacioacuten)
Systemoutprintln()if(ok==true)
Systemoutprintln(prueba ejecutada satisfactoriamente)else
Systemoutprintln(prueba anoacutemala)catch (Exception e)
Systemoutprintln(e)eprintStackTrace()
finally
Systemoutprintln(Prueba finalizada en + new Date())
void startThreads()
Crear un grupo de hebras que llaman a getConnection()Thread[] threads = new Thread[numDaemons_]for (int i=0 iltnumDaemons_ i++)
ConnectionGetter getter Elegir aleatoriamente si este daemon especificaraacute el uid predeterminado o un uid exclusivoif (random_nextBoolean())
getter = new ConnectionGetter(useridpassword)if (TESTING_THREAD_SAFETY) puede utilizarse un userid ficticio
getter = new ConnectionGetter(Thread+i Pwd+i)else debe utilizarse un userid real
getter = new ConnectionGetter(useridpassword)
else
getter = new ConnectionGetter(null null)
threads[i] = new Thread(getter [+i+])threads[i]setDaemon(true)
Iniciar las hebrasfor (int i=0 iltnumDaemons_ i++)
76 IBM Toolbox para Java IBM Toolbox para Java
threads[i]start()
void stopThreads()
Indicar a las hebras que se detengankeepDaemonsAlive_ = falsesynchronized (daemonSleepLock_)
daemonSleepLock_notifyAll()
Esperar a que los daemons se detengantry
Threadsleep(3000)catch (InterruptedException ie)
ConnectionGetter --------------------------------------------------------------------
Clase de ayuda Este daemon se activa a intervalos aleatorios y obtieneotra conexioacuten de la agrupacioacuten de conexiones o devuelve una conexioacuten obtenidaanteriormente a la agrupacioacuten
private final class ConnectionGetter implements Runnable
private String uid_private String pwd_private boolean useDefaultUid_private long maxSleepTime_private String threadName_private boolean firstConnection_ = trueArrayList connections_ = new ArrayList() lista de conexiones que actualmente son rsquopropiedadrsquo de este meacutetodo de obtencioacuten
ConnectionGetter(String uid String pwd) uid_ = uidpwd_ = pwdif (uid_ == null) useDefaultUid_ = trueelse useDefaultUid_ = falsemaxSleepTime_ = daemonMaxSleepTime_ copia propia que puede ajustarse
public void run()
threadName_ = ThreadcurrentThread()getName()if (DEBUG) Systemoutprintln(ConnectionGetter(+threadName_+) Starting up)
try
while (keepDaemonsAlive_)
try
Elegir un tiempo de latencia aleatorio entre los valores miacutenimo y maacuteximolong sleepTime = Mathmax((long)(maxSleepTime_ random_nextFloat())
daemonMinSleepTime_) Nota nunca debe llamarse a wait(0) porque esperariacutea indefinidamentesynchronized (daemonSleepLock_)
try daemonSleepLock_wait(sleepTime)Systemoutprint()
catch (InterruptedException ie)
if (keepDaemonsAlive_) break
Decidir aleatoriamente si debe solicitarse otra conexioacuten o devolver una conexioacuten obtenida anteriormenteConnection connif (random_nextBoolean()) Dejar la decisioacuten a la suerte Solicitar otra conexioacuten
if (useDefaultUid_)
if (DEBUG)Systemoutprintln(ConnectionGetter(+threadName_+) - get())
IBM Toolbox para Java 77
conn = dataSource_getConnection()else
if (DEBUG)Systemoutprintln(ConnectionGetter(+threadName_+) -
+ get(+uid_+))conn = dataSource_getConnection(uid_ pwd_)
if (conn == null) Systemoutprintln(ConnectionGetter(+threadName_+) ERROR
+ getConnection() ha devuelto null)else
Ocasionalmente olvidar que somos propietarios de una conexioacuten y olvidar cerrarla Las conexiones hueacuterfanas deben en uacuteltimo teacutermino sobrepasar su tiempo de vida maacuteximo y el gestor de conexiones las repetiraacutefloat val = random_nextFloat()if (firstConnection_ || val lt 01)
convierta en rsquohueacuterfanasrsquo algunas de las conexiones obtenidasfirstConnection_ = false
else
connections_add(conn)if (DEBUG) displayConnectionType(conn useDefaultUid_)if (conn instanceof comibmas400accessAS400JDBCConnectionHandle) Hemos colocado una conexioacuten en una agrupacioacuten Intente aumentar el tiempo de ciclo
if (maxSleepTime_ gt 100)maxSleepTime_--
elsemaxSleepTime_ = 100
else No hemos colocado una conexioacuten en una agrupacioacuten Eso significa que la agrupacioacuten
debe estar al maacuteximo de capacidad Reduzca un poco el tiempo de ciclomaxSleepTime_ = maxSleepTime_ + 50
else Cerrar una conexioacuten de la que actualmente somos propietarios
if (connections_size() = 0) conn = (Connection)connections_remove(0)connclose()
inner trycatch (Exception e)
eprintStackTrace()
outer while outer tryfinally
if (DEBUG)Systemoutprintln(ConnectionGetter(+threadName_+) Stopping)
Devolver todas las conexiones que todaviacutea estaacuten en la listafor (int i=0 iltconnections_size() i++)
Connection conn = (Connection)connections_remove(0)try connclose() catch (Exception e) eprintStackTrace()
clase interna rsquoConnectionGetterrsquo
Interfaz DatabaseMetaData
Puede utilizar un objeto DatabaseMetaData para obtener informacioacuten acerca de la base de datos comoconjunto y obtener asimismo informacioacuten de cataacutelogo
78 IBM Toolbox para Java IBM Toolbox para Java
El siguiente ejemplo muestra coacutemo se obtiene una lista de tablas que es una funcioacuten de cataacutelogo Coneacutectese al servidorConnection c = DriverManagergetConnection(jdbcas400mySystem)
Obtenga los metadatos de base de datos de la conexioacutenDatabaseMetaData dbMeta = cgetMetaData()
Obtenga una lista de tablas que coincidan con los criterios siguientesString catalog = myCatalogString schema = mySchemaString table = myTable indica el patroacuten de buacutesquedaString types[] = TABLE VIEW SYSTEM TABLEResultSet rs = dbMetagetTables(catalog schema table types)
Itere por ResultSet para obtener los valores
Cierre el objeto Connectioncclose()
Informacioacuten relacionadaJavadoc AS400JDBCDatabaseMetaData
Clase AS400JDBCDataSource
La clase AS400JDBCDataSource representa una faacutebrica de conexiones de base de datos de IBM i La claseAS400JDBCConnectionPoolDataSource representa una faacutebrica de objetos AS400JDBCPooledConnection
Puede registrar cualquier tipo de objeto de origen de datos mediante un proveedor de servicios JNDI(Java Naming and Directory Interface) Para obtener maacutes informacioacuten sobre proveedores de serviciosJNDI consulte la seccioacuten ldquoInformacioacuten relacionada para IBM Toolbox para Javardquo en la paacutegina 588
Ejemplos
Los ejemplos siguientes muestran formas de crear y utilizar objetos AS400JDBCDataSource Los dosuacuteltimos ejemplos muestran coacutemo registrar un objeto AS400JDBCDataSource en JNDI y a continuacioacutenemplear el objeto devuelto de JNDI para obtener una conexioacuten de base de datos Observe que incluso alusar distintos proveedores de servicio JNDI el coacutedigo es muy parecido
Ejemplo crear un objeto AS400JDBCDataSource
A continuacioacuten figura un ejemplo en el que se crea un objeto AS400JDBCDataSource y se conecta este conuna base de datos
Cree un origen de datos para efectuar la conexioacutenAS400JDBCDataSource datasource = new AS400JDBCDataSource(myAS400)datasourcesetUser(myUser)datasourcesetPassword(MYPWD)
Cree una conexioacuten de base de datos con el servidorConnection connection = datasourcegetConnection()
Ejemplo crear un objeto AS400JDBCConnectionPoolDataSource que pueda utilizarse para almacenaren la memoria cacheacute conexiones JDBC
El ejemplo siguiente muestra coacutemo utilizar un objeto AS400JDBCConnectionPoolDataSource paraalmacenar en la memoria cacheacute conexiones JDBC
Cree un origen de datos para efectuar la conexioacutenAS400JDBCConnectionPoolDataSource dataSource =
new AS400JDBCConnectionPoolDataSource(myAS400)datasourcesetUser(myUser)datasourcesetPassword(MYPWD)
IBM Toolbox para Java 79
Obtenga PooledConnectionPooledConnection pooledConnection = datasourcegetPooledConnection()
Ejemplo coacutemo se utilizan las clases de proveedor de servicio JNDI para almacenar un objetoAS400JDBCDataSource
El ejemplo siguiente muestra coacutemo utilizar las clases de proveedor de servicio JNDI para almacenar unobjeto DataSource directamente en el sistema de archivos integrado del servidor
Cree un origen de datos para la base de datos de IBM iAS400JDBCDataSource dataSource = new AS400JDBCDataSource()dataSourcesetServerName(myAS400)dataSourcesetDatabaseName(myAS400 Database)
Registre el origen de datos en JNDI (Java Naming and Directory Interface)Hashtable env = new Hashtable()envput(ContextINITIAL_CONTEXT_FACTORY comsunjndifscontextRefFSContextFactory)Context context = new InitialContext(env)contextbind(jdbccustomer dataSource)
Devuelva un objeto AS400JDBCDataSource de JNDI y obtenga una conexioacutenAS400JDBCDataSource datasource = (AS400JDBCDataSource) contextlookup(jdbccustomer)Connection connection = datasourcegetConnection(myUser MYPWD)
Ejemplo coacutemo se utilizan los objetos AS400JDBCDataSource y las clases de IBM SecureWay Directorycon un servidor de directorios LDAP (Lightweight Directory Access Protocol)
Los ejemplos siguientes muestra coacutemo utilizar las clases de IBM SecureWay Directory para almacenar unobjeto en un servidor de directorios LDAP (Lightweight Directory Access Protocol)
Cree un origen de datos para la base de datos de IBM iAS400JDBCDataSource dataSource = new AS400JDBCDataSource()dataSourcesetServerName(myAS400)dataSourcesetDatabaseName(myAS400 Database)
Registre el origen de datos en JNDI (Java Naming and Directory Interface)Hashtable env = new Hashtable()envput(ContextINITIAL_CONTEXT_FACTORY comibmjndiLDAPCtxFactory)Context context = new InitialContext(env)contextbind(cn=myDatasource cn=myUsers ou=myLocationo=myCompanyc=myCountryRegion
dataSource)
Devuelva un objeto AS400JDBCDataSource de JNDI y obtenga una conexioacutenAS400JDBCDataSource datasource = (AS400JDBCDataSource) contextlookup(
cn=myDatasource cn=myUsers ou=myLocationo=myCompanyc=myCountryRegion)Connection connection = datasourcegetConnection(myUser MYPWD)
Javadoc AS400JDBCDataSourceJavadoc AS400JDBCConnectionPoolDataSourceJavadoc AS400JDBCPooledConnection
Registro del controlador JDBC
Antes de utilizar JDBC para acceder a los datos de un archivo de base de datos del servidor es necesarioregistrar el controlador JDBC de IBM Toolbox para Java con DriverManager
El controlador se puede registrar ya sea utilizando una propiedad de sistema Java o haciendo que elprograma Java registre el controladorv Registrar mediante una propiedad del sistema
Cada maacutequina virtual tiene su propio meacutetodo para establecer las propiedades del sistema Por ejemploel mandato Java de JDK utiliza la opcioacuten -D para establecer las propiedades del sistema Paraestablecer el controlador mediante las propiedades del sistema especifique
80 IBM Toolbox para Java IBM Toolbox para Java
-Djdbcdrivers=comibmas400accessAS400JDBCDriver
v Registrar mediante el programa JavaPara cargar el controlador JDBC de IBM Toolbox para Java antes de la primera llamada a JDBC antildeadaal programa Java la liacutenea siguiente
ClassforName(comibmas400accessAS400JDBCDriver)
El controlador JDBC de IBM Toolbox para Java se registra cuando se carga siendo este es el meacutetodopreferido de registrar el controlador Tambieacuten puede registrar expliacutecitamente el controlador JDBC deIBM Toolbox para Java con lo siguiente
javasqlDriverManagerregisterDriver (new comibmas400accessAS400JDBCDriver ())
Si invoca DriverManagerregisterDriver() el controlador JDBC de IBM Toolbox para Java se registra dosveces Una vez cuando la JVM carga AS400JDBCDriver y otra en la llamada expliacutecita al meacutetodoregisterDriver() Esto se debe a la implementacioacuten de DriverManager sobre la que IBM Toolbox paraJava no tiene control Tener un controlador que aparece dos veces en la lista del registro deDriverManager normalmente no supone ninguacuten problema Aunque puede haber casos en los que seutilicen los dos controladores registrados Por ejemplo cuando se intenta obtener una conexioacuten con unacontrasentildea incorrecta DriverManager no podraacute obtener una conexioacuten con el primer controladorregistrado y por lo tanto lo intentaraacute con el segundo controlador registrado
El controlador JDBC de IBM Toolbox para Java no requiere un objeto AS400 como paraacutemetro de entradacomo lo requieren las demaacutes clases de IBM Toolbox para Java que obtienen datos de un servidor Sinembargo internamente siacute que se utiliza un objeto AS400 para gestionar el usuario predeterminado y lacolocacioacuten de contrasentildeas en memoria cacheacute Cuando se establece una conexioacuten con el servidor porprimera vez puede solicitarse al usuario que escriba el ID de usuario y la contrasentildea El usuario puedeoptar por guardar el ID de usuario como ID de usuario predeterminado y antildeadir la contrasentildea a lamemoria cacheacute de contrasentildeas Al igual que en las demaacutes funciones de IBM Toolbox para Java si es elprograma Java el que proporciona el ID de usuario y la contrasentildea el usuario predeterminado no seestablece y la contrasentildea no se pone en la memoria cacheacute En ldquoGestionar conexiones en programas Javardquoen la paacutegina 361 encontraraacute informacioacuten acerca de coacutemo se gestionan las conexiones
Utilizacioacuten del controlador JDBC para conectarse a una base de datos del servidor
El meacutetodo DriverManagergetConnection() le permite conectarse a la base de datos del servidorDriverManagergetConnection() toma como argumento una serie de URL (localizador uniforme derecursos) El gestor de controladores JDBC intenta localizar un controlador que pueda conectarse a la basede datos representada por el URL Cuando utilice el controlador de IBM Toolbox para Java utilice lasiguiente sintaxis para el URL
jdbcas400systemNamedefaultSchemalistOfProperties
Nota en el URL se puede omitir systemName o defaultSchema
Para utilizar los tickets de kerberos establezca uacutenicamente el nombre de sistema (y no la contrasentildea) enel objeto URL JDBC La identidad del usuario se recupera mediante la infraestructura JGSS (Java GenericSecurity Services) por lo que tampoco necesita especificar un usuario en el URL JDBC Solo puedeestablecer un meacutetodo de autenticacioacuten en un objeto AS400JDBCConnection a la vez Al establecer lacontrasentildea se borran los tickets de kerberos o los siacutembolos de perfil Para obtener maacutes informacioacutenconsulte ldquoClase AS400rdquo en la paacutegina 21
Ejemplos utilizacioacuten del controlador JDBC para conectarse a un servidor
Ejemplo utilizar un URL en el que no se especifica un nombre de sistema
Este ejemplo hace que se solicite al usuario que escriba el nombre del sistema al que desea conectarse Coneacutectese al sistema sin nombre Se solicita al usuario que escriba el nombre del sistemaConnection c = DriverManagergetConnection(jdbcas400)
IBM Toolbox para Java 81
Ejemplo conectarse a la base de datos del servidor no se especifica ninguacuten esquema SQLpredeterminado ni ninguna propiedad
Coneacutectese al sistema rsquomySystemrsquo No se especifica ninguacuten esquema SQL predeterminado ni ninguna propiedadConnection c = DriverManagergetConnection(jdbcas400mySystem)
Ejemplo conectarse a la base de datos del servidor se especifica un esquema SQL predeterminado Coneacutectese al sistema rsquomySys2rsquo Se especifica el esquema SQL predeterminado rsquomyschemarsquoConnection c2 = DriverManagergetConnection(jdbcas400mySys2mySchema)
Ejemplo conectarse a la base de datos del servidor y utilizar javautilProperties para especificar laspropiedades
El programa Java puede especificar un conjunto de propiedades de JDBC ya sea utilizando la interfazjavautilProperties o especificando dichas propiedades como parte del URL En ldquoPropiedades JDBC deIBM Toolbox para Javardquo en la paacutegina 266 encontraraacute una lista de las propiedades soportadas
Por ejemplo para especificar las propiedades mediante la interfaz Properties podriacutea utilizar el siguientecoacutedigo
Cree un objeto propiedadesProperties p = new Properties()
Establezca las propiedades para la conexioacutenpput(naming sql)pput(errors full)
Coneacutectese utilizando el objeto de propiedadesConnection c = DriverManagergetConnection(jdbcas400mySystemp)
Ejemplo conectarse a la base de datos del servidor y utilizar un URL (localizador uniforme derecursos) para especificar las propiedades
Coneacutectese utilizando las propiedades Se propiedades se establecen en el URL en lugar de mediante un objeto propiedadesConnection c = DriverManagergetConnection(
jdbcas400mySystemnaming=sqlerrors=full)
Ejemplo conectarse a la base de datos del servidor y especificar el ID de usuario y la contrasentildea Coneacutectese utilizando las propiedades indicadas en el URL y especificando un ID de usuario y una contrasentildeaConnection c = DriverManagergetConnection(
jdbcas400mySystemnaming=sqlerrors=fullauserapassword)
Ejemplo desconectarse de la base de datos
Para desconectarse del servidor utilice el meacutetodo close() en el objeto Connecting Utilice la sentenciasiguiente para cerrar la conexioacuten creada en el ejemplo anterior
cclose()
Javadoc AS400JDBCDriver
Clase AS400JDBCParameterMetaData
La clase AS400JDBCParameterMetaData permite a los programas recuperar informacioacuten sobre laspropiedades de paraacutemetros de los objetos PreparedStatement y CallableStatement
82 IBM Toolbox para Java IBM Toolbox para Java
AS400JDBCParameterMetaData ofrece meacutetodos que permiten llevar a cabo las acciones siguientesv Obtener el nombre de clase del paraacutemetrov Obtener el nuacutemero de paraacutemetros de PreparedStatementv Obtener el tipo SQL del paraacutemetrov gtObtener el nombre de tipo especiacutefico de la base de datos del paraacutemetrov Obtener la precisioacuten o la escala del paraacutemetro
Ejemplo coacutemo se utiliza AS400JDBCParameterMetaData
En el ejemplo siguiente se muestra coacutemo se utiliza AS400JDBCParameterMetaData para recuperarparaacutemetros de un objeto PreparedStatement generado dinaacutemicamente
Obtenga una conexioacuten desde el controladorClassforName(comibmas400accessAS400JDBCDriver)Connection connection =
DriverManagergetConnection(jdbcas400myAS400 myUserId myPassword)
Cree un objeto sentencia preparadaPreparedStatement ps =
connectionprepareStatement(SELECT STUDENTS FROM STUDENTTABLE WHERE STUDENT_ID= )
Establezca un ID de alumno en el paraacutemetro 1pssetInt(1 123456)
Recupere los metadatos de paraacutemetro de la sentencia preparadaParameterMetaData pMetaData = psgetParameterMetaData()
Recupere el nuacutemero de paraacutemetros de la sentencia preparada Devuelve 1int parameterCount = pMetaDatagetParameterCount()
Averiguumle el nombre de tipo de paraacutemetro del paraacutemetro 1 Devuelve INTEGERString getParameterTypeName = pMetaDatagetParameterTypeName(1)
Informacioacuten relacionadaJavadoc AS400JDBCParameterMetaData
Interfaz PreparedStatement
Puede utilizar un objeto PreparedStatement cuando vea que una sentencia SQL se va a ejecutar muchasveces Una sentencia preparada es una sentencia SQL que se ha precompilado
Esta solucioacuten es maacutes eficaz que la de ejecutar muchas veces la misma sentencia utilizando un objetoStatement pues de esta uacuteltima forma la sentencia se compila cada vez que se ejecuta Ademaacutes lasentencia SQL contenida en un objeto PreparedStatement puede tener uno o varios paraacutemetros IN UtiliceConnectionprepareStatement() para crear objetos PreparedStatement
El objeto PreparedStatement permite someter a una base de datos varios mandatos SQL como si fuesenun solo grupo mediante el uso del soporte de proceso por lotes Puede mejorar el rendimiento empleandoel soporte de proceso por lotes ya que normalmente se tarda menos en procesar un grupo de operacionesque en procesarlas una a una
Ejemplo coacutemo se utiliza PreparedStatement
El ejemplo que sigue muestra coacutemo se utiliza la interfaz PreparedStatement Coneacutectese al servidorConnection c = DriverManagergetConnection(jdbcas400mySystem)
Cree el objeto PreparedStatement Este objeto precompila la
IBM Toolbox para Java 83
sentencia SQL especificada Los signos de interrogacioacuten indican doacutende deben establecerse los paraacutemetros antes de ejecutar la sentenciaPreparedStatement ps =
cprepareStatement(INSERT INTO MYLIBRARYMYTABLE (NAME ID) VALUES ( ))
Establezca paraacutemetros y ejecute la sentenciapssetString(1 JOSH)pssetInt(2 789)psexecuteUpdate()
Establezca paraacutemetros y ejecute la sentencia otra vezpssetString(1 DAVE)pssetInt(2 456)psexecuteUpdate()
Cierre PreparedStatement y la conexioacutenpsclose()cclose()
Informacioacuten relacionadaJavadoc AS400JDBCPreparedStatement
Clase ResultSet
Puede utilizar un objeto ResultSet para acceder a una tabla de datos generada ejecutando una consultaLas filas de la tabla se recuperan en secuencia Dentro de una fila es posible acceder a los valores de lascolumnas en cualquier orden
Los datos almacenados en ResultSet se recuperan mediante los diversos meacutetodos get en funcioacuten del tipode datos que se vayan a recuperar El meacutetodo next() permite desplazarse a la fila siguiente
ResultSet permite obtener y actualizar columnas por nombre aunque el uso del iacutendice de columnamejora el rendimiento
Movimiento de cursor
Un cursor que es un puntero interno utilizado por un conjunto de resultados sentildeala a la filaperteneciente a dicho conjunto y a la que estaacute accediendo el programa Java
Se ha mejorado el rendimiento del meacutetodo getRow() Antes de la versioacuten V5R2 al utilizar ResultSetlast()ResultSetafterLast() y ResultSetabsolute() con un valor negativo el nuacutemero de fila actual no estabadisponible Las restricciones anteriores se han eliminado con lo que el meacutetodo getRow() es ahoratotalmente funcional
JDBC 20 y las especificaciones de JDBC posteriores proporcionan meacutetodos adicionales para acceder aposiciones especiacuteficas dentro de una base de datos
Posiciones de cursor desplazables
absoluteafterLastbeforeFirstfirstgetRowisAfterLastisBeforeFirst
isFirstisLastlastmoveToCurrentRowmoveToInsertRowpreviousrelative
84 IBM Toolbox para Java IBM Toolbox para Java
Posibilidades de desplazamiento
Si un conjunto de resultados se crea mediante la ejecucioacuten de una sentencia es posible moverse(desplazarse) por las filas de una tabla en sentido hacia atraacutes (de la uacuteltima a la primera) o hacia delante(de la primera a la uacuteltima)
Un conjunto de resultados que deacute soporte a este movimiento se llama desplazable Los conjuntos deresultados desplazables admiten tambieacuten el posicionamiento absoluto El posicionamiento absoluto lepermite moverse directamente a una fila especificando la posicioacuten que dicha fila tiene en el conjunto deresultados
Con JDBC 20 y las especificaciones de JDBC posteriores se dispone de dos posibilidades dedesplazamiento adicionales al trabajar con la clase ResultSet conjuntos de resultados no sensibles aldesplazamiento y sensibles al desplazamiento
Un conjunto de resultados no sensible al desplazamiento suele no ser sensible a los cambios realizadosmientras estaacute abierto mientras que el conjunto de resultados sensible al desplazamiento es sensible a loscambios
Nota IBM i uacutenicamente admite el acceso solo de lectura para los cursores insensibles desplazables IBMToolbox para Java da soporte a un cursor insensible al desplazamiento si la concurrencia del conjunto deresultados es solo de lectura Si el tipo de conjunto de resultados se especifica como insensible y laconcurrencia se especifica como actualizable el tipo de conjunto de resultados cambia a sensible y seenviacutea un aviso al usuario
Conjuntos de resultados actualizables
En la aplicacioacuten puede utilizar conjuntos de resultados que emplean ya sea una concurrencia solo delectura (no pueden realizarse actualizaciones en los datos) ya sea una concurrencia actualizable (permiterealizar actualizaciones en los datos y utiliza bloqueos de escritura de base de datos para controlar elacceso a un mismo elemento de datos por parte de las distintas transacciones) En un conjunto deresultados actualizable las filas se pueden actualizar insertar y suprimir Puede disponer de numerososmeacutetodos de actualizacioacuten para usarlos en el programa por ejemplo puedev Actualizar una corriente de datos ASCIIv Actualizar Big Decimalv Actualizar una corriente binaria
En el Resumen de meacutetodos encontraraacute una lista completa de los meacutetodos de actualizacioacuten que estaacutendisponibles a traveacutes de la interfaz ResultSet
Ejemplo conjuntos de resultados actualizables
El ejemplo que figura a continuacioacuten muestra coacutemo se utiliza un conjunto de resultados que permiterealizar actualizaciones en los datos (concurrencia de actualizacioacuten) y realizar cambios en el conjunto deresultados mientras permanece abierto (sensible al desplazamiento)
Coneacutectese al servidorConnection c = DriverManagergetConnection(jdbcas400mySystem)
Cree un objeto Statement Establezca la concurrencia del conjunto de resultados en actualizableStatement s = ccreateStatement(ResultSetTYPE_SCROLL_SENSITIVE
ResultSetCONCUR_UPDATABLE)
Ejecute una consulta El resultado se coloca en un objeto ResultSetResultSet rs = sexecuteQuery (SELECT NAMEID FROM MYLIBRARYMYTABLE FOR UPDATE)
Itere por las filas de ResultSet
IBM Toolbox para Java 85
A medida que leemos la fila la actualizaremos con un nuevo IDint newId = 0while (rsnext ())
Obtenga los valores a partir del ResultSet El primer valor es una serie y el segundo valor es un enteroString name = rsgetString(NAME)int id = rsgetInt(ID)
Systemoutprintln(Nombre = + name)Systemoutprintln(ID antiguo = + id)
Actualice el ID con un nuevo enterorsupdateInt(ID ++newId)
Enviacutee las actualizaciones al servidorrsupdateRow ()
Systemoutprintln(ID nuevo = + newId)
Cierre la sentencia y la conexioacutensclose()cclose()
ResultSetMetaData
La interfaz ResultSetMetaData determina los tipos y las propiedades de las columnas de un conjunto deresultados (ResultSet)
Al conectarse a un servidor que ejecuta IBM i 52 o posterior el uso de la propiedad de metadatosampliados permite aumentar la precisioacuten de los siguientes meacutetodos de ResultSetMetaDatav getColumnLabel(int)v isReadOnly(int)v isSearchable(int)v isWriteable(int)
Asimismo al establecer esta propiedad en true se habilita el soporte para el meacutetodoResultSetMetaDatagetSchemaName(int) Tenga en cuenta que al utilizar la propiedad de metadatosampliados puede empeorarse el rendimiento ya que es preciso recuperar maacutes informacioacuten del servidor
Javadoc AS400JDBCResultSetJavadoc AS400ResultSetMetaData
Clase AS400JDBCRowSet
La clase AS400JDBCRowSet representa un conjunto de filas conectado que encapsula un conjunto deresultados JDBC Los meacutetodos de AS400JDBCRowSet son muy similares a los de AS400JDBCResultSet Laconexioacuten con la base de datos se mantiene mientras se utiliza
Puede utilizar una instancia de AS400JDBCDataSource o AS400JDBCConnectionPoolDataSource paracrear la conexioacuten con la base de datos que desea utilizar para acceder a los datos de AS400JDBCRowSet
Ejemplos
Los ejemplos que hay a continuacioacuten muestran coacutemo puede utilizar la clase AS400JDBCRowSet
Ejemplo crear poblar y actualizar un objeto AS400JDBCRowSet
86 IBM Toolbox para Java IBM Toolbox para Java
DriverManagerregisterDriver(new AS400JDBCDriver()) Establecer conexioacuten mediante un URLAS400JDBCRowSet rowset = new AS400JDBCRowSet(jdbcas400mySystemmyUser myPassword)
Establecer el mandato que sirve para poblar la listarowsetsetCommand(SELECT FROM MYLIBDATABASE)
Llenar con datos el conjunto de filasrowsetexecute()
Actualizar los saldos del clientewhile (rowsetnext())
double newBalance = rowsetgetDouble(BALANCE) +july_statementsgetPurchases(rowsetgetString(CUSTNUM))
rowsetupdateDouble(BALANCE newBalance)rowsetupdateRow()
Ejemplo crear y llenar de datos un objeto AS400JDBCRowSet mientras se obtiene el origen de datosde JNDI
Obtener el origen de datos registrado en JNDI (se supone que se ha establecido el entorno JNDI)Context context = new InitialContext()AS400JDBCDataSource dataSource = (AS400JDBCDataSource) contextlookup(jdbccustomer)
AS400JDBCRowSet rowset = new AS400JDBCRowSet() Establecer conexioacuten definiendo el nombre del origen de datosrowsetsetDataSourceName(jdbccustomer)rowsetsetUsername(myuser)rowsetsetPassword(myPasswd)
Establecer la sentencia preparada e inicializar los paraacutemetrosrowsetsetCommand(SELECT FROM MYLIBRARYMYTABLE WHERE STATE = AND BALANCE gt )rowsetsetString(1 MINNESOTA)rowsetsetDouble(2 MAXIMUM_LIMIT)
Llenar con datos el conjunto de filasrowsetexecute()
Javadoc AS400JDBCRowSetJavadoc AS400JDBCResultSet
Clase AS400JDBCSavepoint
La clase AS400JDBCSavepoint de IBM Toolbox para Java representa un punto de interrupcioacuten loacutegico enuna transaccioacuten El uso de los puntos de salvar permite controlar de modo maacutes preciso los cambios a losque afecta la retrotraccioacuten de una transaccioacuten
Figura 1 coacutemo se utilizan los puntos de salvar para controlar las retrotracciones en una transaccioacuten
IBM Toolbox para Java 87
Por ejemplo la figura 1 muestra una transaccioacuten que contiene dos puntos de salvar A y B Al retrotraerla transaccioacuten a cualquiera de los dos puntos de salvar uacutenicamente se deshacen los cambios desde elpunto en que se llama a una retrotraccioacuten hasta el punto de salvar De este modo se evita tener quedeshacer todos los cambios de toda la transaccioacuten Observe que una vez efectuada la retrotraccioacuten hastael punto de salvar A posteriormente no puede efectuar la retrotraccioacuten hasta el punto de salvar B Nopuede acceder al punto de salvar B despueacutes de haberse retrotraiacutedo el trabajo maacutes allaacute del mismo
Ejemplo coacutemo se utilizan los puntos de salvar
En este ejemplo supongamos que su aplicacioacuten actualiza los registros de alumnos Tras actualizar uncampo determinado de cada registro de alumno efectuacutea una operacioacuten de compromiso El coacutedigo detectaun error concreto asociado a la actualizacioacuten de este campo y retrotrae el trabajo realizado cuando seproduce este error Usted sabe que este error concreto afecta uacutenicamente al trabajo efectuado en elregistro actual
Por consiguiente establece un punto de salvar entre cada actualizacioacuten de los registros de alumnosAhora cuando se produce este error solo retrotrae la uacuteltima actualizacioacuten de la tabla de alumnos Enlugar de tener que retrotraer una gran cantidad de trabajo ahora puede retrotraer uacutenicamente unapequentildea cantidad de trabajo
El coacutedigo del ejemplo siguiente muestra coacutemo pueden utilizarse los puntos de salvar En el ejemplo sesupone que el ID de alumno de John es 123456 y el ID de alumno de Jane es 987654
Obtenga una conexioacuten desde el controladorClassforName(comibmas400accessAS400JDBCDriver)
Obtenga un objeto StatementStatement statement = connectioncreateStatement()
Actualice el registro de John con su nota rsquoBrsquo en gimnasiaint rows = statementexecuteUpdate(
UPDATE STUDENTTABLE SET GRADE_SECOND_PERIOD = rsquoBrsquo WHERE STUDENT_ID= rsquo123456rsquo)
Establezca un punto de salvar marcando un punto intermedio en la transaccioacutenSavepoint savepoint1 = connectionsetSavepoint(SAVEPOINT_1)
Actualice el registro de Jane con su nota rsquoCrsquo en bioquiacutemicaint rows = statementexecuteUpdate(
UPDATE STUDENTTABLE SET GRADE_SECOND_PERIOD = rsquoCrsquo WHERE STUDENT_ID= rsquo987654rsquo)
Se ha detectado un error por lo que debemos retrotraer el registro de Jane pero no el de John Retrotraiga la transaccioacuten hasta el punto de salvar 1 El cambio del registro de Jane se elimina mientras que el del registro de John se conserva
88 IBM Toolbox para Java IBM Toolbox para Java
connectionrollback(savepoint1)
Comprometa la transaccioacuten solo se compromete la nota rsquoBrsquo de John en la base de datosconnectioncommit()
Consideraciones y restricciones
Para utilizar los puntos de salvar deben tenerse presentes las consideraciones y restricciones siguientes
Consideraciones
IBM Toolbox para Java sigue las reglas de base de datos en relacioacuten con el modo en que lasretrotracciones afectan a los cursores y bloqueos retenidos Por ejemplo al establecer la opcioacuten deconexioacuten de modo que se mantengan abiertos los cursores tras una retrotraccioacuten tradicional los cursorestambieacuten permanecen abiertos tras una retrotraccioacuten hasta un punto de salvar Dicho de otro modocuando se produce una peticioacuten de retrotraccioacuten en la que intervienen puntos de salvar IBM Toolboxpara Java no mueve ni cierra el cursor si la base de datos subyacente no soporta esta funcioacuten
Al utilizar un punto de salvar para retrotraer una transaccioacuten solo se deshacen las acciones efectuadasdesde el punto de inicio de la retrotraccioacuten hasta el punto de salvar Las acciones efectuadas antes de esepunto de salvar se conservan Como se muestra en el ejemplo anterior tenga en cuenta que puedecomprometer una transaccioacuten que contenga trabajo efectuado antes de un punto de salvar determinadopero que no contenga trabajo efectuado tras el punto de salvar
Todos los puntos de salvar se liberan y dejan de ser vaacutelidos cuando se compromete la transaccioacuten ocuando se retrotrae toda la transaccioacuten Tambieacuten puede liberar puntos de salvar llamando aConnectionreleaseSavepoint()
Restricciones
Al utilizar puntos de salvar se aplican las restricciones siguientesv Los puntos de salvar con nombre deben ser exclusivosv No podraacute reutilizar un nombre de punto de salvar hasta que se libere comprometa o retrotraiga el
punto de salvarv El compromiso automaacutetico debe establecerse en OFF para que los puntos de salvar sean vaacutelidos
Puede establecer el compromiso automaacutetico en OFF mediante ConnectionsetAutoCommit(false) Si sehabilita el compromiso automaacutetico cuando se utilizan puntos de salvar se lanza una excepcioacuten
v Los puntos de salvar no son vaacutelidos en las conexiones XA Si se utiliza una conexioacuten XA con puntos desalvar se lanza una excepcioacuten
v El servidor debe ejecutar IBM i Versioacuten 5 Release 2 o posterior Si se utilizan puntos de salvar alconectarse (o estando ya conectado) a un servidor que ejecuta la versioacuten V5R1 o anterior de IBM i selanza una excepcioacutenJavadoc AS400JDBCSavePoint
Ejecucioacuten de sentencias SQL con objetos Statement
Utilice un objeto Statement para ejecutar una sentencia SQL y opcionalmente obtener el conjunto deresultados (ResultSet) generado por ella
PreparedStatement es heredera de Statement y CallableStatement es heredera de PreparedStatementUtilice los siguientes objetos Statement para ejecutar las distintas sentencias SQLv ldquoInterfaz Statementrdquo en la paacutegina 90 - Ejecuta una sentencia SQL simple que no tiene ninguacuten
paraacutemetrov ldquoInterfaz PreparedStatementrdquo en la paacutegina 83 - Ejecuta una sentencia SQL precompilada que puede
tener o no tener paraacutemetros IN
IBM Toolbox para Java 89
v ldquoInterfaz CallableStatementrdquo en la paacutegina 65 - Ejecuta una llamada a un procedimiento almacenado debase de datos El objeto CallableStatement puede tener o no tener paraacutemetros IN OUT e INOUT
El objeto Statement permite someter a una base de datos varios mandatos SQL como si fuesen un sologrupo mediante el uso del soporte de proceso por lotes Puede mejorar el rendimiento empleando elsoporte de proceso por lotes ya que normalmente se tarda menos en procesar un grupo de operacionesque en procesarlas una a una
Cuando utilice las actualizaciones por lotes normalmente deberaacute desactivar el compromiso automaacuteticoLa desactivacioacuten del compromiso automaacutetico permite al programa determinar si debe comprometer latransaccioacuten en el caso de que se produzca un error y no se hayan ejecutado todos los mandatos En JDBC20 y las especificaciones de JDBC posteriores un objeto Statement puede hacer un seguimiento de unalista de mandatos que pueden someterse satisfactoriamente y ejecutarse conjuntamente en un grupoCuando el meacutetodo executeBatch() ejecuta esta lista de mandatos por lotes la ejecucioacuten de los mandatos serealiza en el orden en que se antildeadieron a la lista
AS400JDBCStatement proporciona meacutetodos que permiten llevar a cabo muchas acciones entre ellas lassiguientesv Ejecutar distintos tipos de sentenciasv Recuperar los valores de distintos paraacutemetros del objeto Statement tales como
ndash La conexioacutenndash Las claves generadas automaacuteticamente que se han creado como consecuencia de la ejecucioacuten del
objeto Statementndash El tamantildeo de buacutesqueda y la direccioacuten de buacutesquedandash El tamantildeo maacuteximo de campo y el liacutemite maacuteximo de filandash El conjunto de resultados actual el conjunto de resultados siguiente el tipo de conjunto de
resultados la concurrencia del conjunto de resultados y la posibilidad de retencioacuten del cursor delconjunto de resultados
v Antildeadir una sentencia SQL al proceso por lotes actualv Ejecutar el proceso por lotes actual de sentencias SQL
Interfaz Statement
Utilice ConnectioncreateStatement() para crear objetos Statement nuevos
El ejemplo que sigue muestra coacutemo se utiliza un objeto Statement Coneacutectese al servidorConnection c = DriverManagergetConnection(jdbcas400mySystem)
Cree un objeto StatementStatement s = ccreateStatement()
Ejecute una sentencia SQL que cree una tabla en la base de datossexecuteUpdate(CREATE TABLE MYLIBRARYMYTABLE (NAME VARCHAR(20) ID INTEGER))
Ejecute una sentencia SQL que inserte un registro en la tablasexecuteUpdate(INSERT INTO MYLIBRARYMYTABLE (NAME ID) VALUES (rsquoDAVErsquo 123))
Ejecute una sentencia SQL que inserte un registro en la tablasexecuteUpdate(INSERT INTO MYLIBRARYMYTABLE (NAME ID) VALUES (rsquoCINDYrsquo 456))
Ejecute una consulta SQL en la tablaResultSet rs = sexecuteQuery(SELECT FROM MYLIBRARYMYTABLE)
Cierre la sentencia y la conexioacutensclose()cclose()
90 IBM Toolbox para Java IBM Toolbox para Java
Javadoc AS400JDBCStatement
Gestioacuten de transacciones distribuidas XA de JDBC
Las clases de gestioacuten de transacciones distribuidas XA de JDBC permiten utilizar el controlador JDBC deIBM Toolbox para Java dentro de una transaccioacuten distribuida La utilizacioacuten de las clases de XA parahabilitar el controlador JDBC de IBM Toolbox para Java permite a eacuteste participar en las transacciones queabarcan varios oriacutegenes de datos
Normalmente las clases de gestioacuten de transacciones distribuidas XA se utilizan y controlan directamentecon un gestor de transacciones independiente del controlador JDBC Las interfaces de gestioacuten detransacciones distribuidas se definen como parte de JDBC 20 Optional Package y Java Transaction API(JTA) Ambas estaacuten disponibles a traveacutes de Sun como archivos JAR Las interfaces de gestioacuten detransacciones distribuidas tambieacuten estaacuten soportadas en la API JDBC 30 que estaacute empaquetada con laplataforma Java 2 Standard Edition versioacuten 14
Encontraraacute maacutes informacioacuten en los sitios Web de Sun correspondientes a JDBC y JTA
Utilice los objetos siguientes para permitir que el controlador JDBC de IBM Toolbox para Java participeen las transacciones distribuidas XAv AS400JDBCXADataSource - Una faacutebrica de objetos AS400JDBCXAConnection Es una subclase de
AS400JDBCDataSourcev AS400JDBCXACConnection - Un objeto de conexioacuten de agrupacioacuten que proporciona ganchos para la
gestioacuten de agrupaciones de conexiones y la gestioacuten de recursos XAv AS400JDBCXAResource - Un gestor de recursos destinado al uso en la gestioacuten de transacciones XA
Nota antes de V5R3 el servidor de host de base de datos utilizaba API XA para bloqueos de aacutembito detrabajo (modelo XA) En V5R3 y releases siguientes el servidor de host de base de datos utiliza API XApara bloqueos de aacutembito de transaccioacuten (modelo NTS) para todas las funciones MTS Encontraraacute maacutesinformacioacuten sobre las diferencias entre estas API en API XA
Ejemplo coacutemo se utilizan las clases de XA
El ejemplo siguiente muestra un uso sencillo de las clases de XA Tenga en cuenta que los detalles seincluiriacutean con tareas que utilizaran otros oriacutegenes de datos Este tipo de coacutedigo habitualmente aparecedentro de un gestor de transacciones
Cree un origen de datos XA para establecer la conexioacuten XAAS400JDBCXADataSource xaDataSource = new AS400JDBCXADataSource(myAS400)xaDataSourcesetUser(myUser)xaDataSourcesetPassword(myPasswd)
Obtenga un objeto XAConnection y obtenga el objeto XAResource asociado Esto proporciona acceso al gestor de recursosXAConnection xaConnection = xaDataSourcegetXAConnection()XAResource xaResource = xaConnectiongetXAResource()
Genere un nuevo Xid (esta tarea corresponde al gestor de transacciones)Xid xid =
Inicie la transaccioacutenxaResourcestart(xid XAResourceTMNOFLAGS)
Lleve a cabo alguna tarea con la base de datos
Finalice la transaccioacutenxaResourceend(xid XAResourceTMSUCCESS)
Realice los preparativos para una operacioacuten de compromiso
IBM Toolbox para Java 91
xaResourceprepare(xid)
Comprometa la transaccioacutenxaResourcecommit(xid false)
Cierre la conexioacuten XA cuando haya finalizado Esto cierra el recurso XA impliacutecitamentexaConnectionclose()
Clases de trabajosLas clases Jobs de IBM Toolbox para Java que se encuentran en el paquete access permiten a unprograma Java recuperar y cambiar informacioacuten de trabajo
Utilice las clases de trabajos para trabajar con el siguiente tipo de informacioacuten de trabajov Informacioacuten de fecha y horav Cola de trabajosv Identificadores de idiomav Anotaciones de mensajesv Cola de salidav Informacioacuten de impresora
Ejemplos
Los ejemplos que figuran a continuacioacuten muestran algunas maneras de utilizar las clases Job JobList yJobLog El primer ejemplo muestra un modo de emplear una memoria cacheacute con la clase Job Justodespueacutes del coacutedigo de ejemplo encontraraacute enlaces con otros ejemplos
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Ejemplo utilizar una memoria cacheacute al establecer un valor y al obtener un valortry
Crea un objeto AS400AS400 as400 = new AS400(systemName)
Construye un objeto Jobbyte[] internalJobID = xxxxxxxxxxxxxxxxgetBytes()Job job = new Job(as400 internalJobID)
Obtiene informacioacuten de trabajoSystemoutprintln(Usuario de este trabajo + jobgetUser())Systemoutprintln(CPU utilizada + jobgetCPUUsed())Systemoutprintln(Fecha del sistema de entrada del trabajo + jobgetJobEnterSystemDate())
Establece la modalidad de memoria cacheacutejobsetCacheChanges(true)
Los cambios se almacenaraacuten en la memoria cacheacutejobsetRunPriority(66)jobsetDateFormat(YMD)
Comprometer los cambios Ello cambiaraacute el valor en el sistemajobcommitChanges()
Establecer informacioacuten de trabajo en el sistema directamente (sin memoria cacheacute)jobsetCacheChanges(false)jobsetRunPriority(60)
92 IBM Toolbox para Java IBM Toolbox para Java
catch (Exception e)
Systemoutprintln(error + e)
Los ejemplos siguientes muestran coacutemo listar los trabajos pertenecientes a un usuario especiacutefico coacutemolistar los trabajos con la informacioacuten de estado del trabajo y coacutemo mostrar los mensajes de unasanotaciones de trabajo
ldquoEjemplo coacutemo se utiliza JobList para listar informacioacuten de identificacioacuten de trabajordquo en la paacutegina441
ldquoEjemplo coacutemo se utiliza JobList para obtener una lista de trabajosrdquo en la paacutegina 444
ldquoEjemplo coacutemo se utiliza JobLog para visualizar los mensajes de las anotaciones de trabajordquo en lapaacutegina 447
Javadoc del paquete Access
Clase Job
La clase Job (en el paquete access) permite a un programa Java recuperar y cambiar informacioacuten de lostrabajos del servidor
Con la clase Job se puede recuperar y cambiar el siguiente tipo de informacioacuten de trabajov Colas de trabajosv Colas de salidav Anotaciones de mensajesv Dispositivo de impresorav Identificador de paiacutes o regioacutenv Formato de fecha
La clase Job tambieacuten ofrece la posibilidad de cambiar un solo valor a la vez o de poner en memoria cacheacutevarios cambios utilizando el meacutetodo setCacheChanges(true) y comprometiendo los cambios con elmeacutetodo commitChanges() Si la puesta en memoria cacheacute no estaacute activada no es necesario realizar uncompromiso
Ejemplo
Puede ver un ejemplo de coacutedigo en la documentacioacuten de consulta de javadocs correspondiente a la claseJob El ejemplo siguiente muestra coacutemo se establecen valores en la memoria cacheacute y se obtienen valoresde ella para establecer la prioridad de ejecucioacuten con el meacutetodo setRunPriority() y coacutemo se establece elformato de fecha con el meacutetodo setDateFormat()
Javadoc Job
Clase JobList
Puede utilizar una clase JobList (en el paquete access) para listar trabajos de IBM i
Con la clase JobList es posible recuperarv Todos los trabajosv Trabajos por nombre nuacutemero de trabajo o usuario
Utilice el meacutetodo getJobs() para devolver una lista de trabajos o el meacutetodo getLength() para devolver elnuacutemero de trabajos recuperados con el uacuteltimo meacutetodo getJobs()
IBM Toolbox para Java 93
Ejemplo coacutemo se utiliza JobList
El siguiente ejemplo lista todos los trabajos activos del sistema Cree un objeto AS400 Liste los trabajos que hay en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree el objeto lista de trabajosJobList jobList = new JobList(sys)
Obtenga la lista de trabajos activosEnumeration list = jobListgetJobs()
Para cada trabajo activo del sistema imprima informacioacuten de trabajowhile (listhasMoreElements())
Job j = (Job) listnextElement()
Systemoutprintln(jgetName() + +jgetUser() + +jgetNumber())
Javadoc Job
Clase JobLog
La clase JobLog (en el paquete access) recupera los mensajes existentes en las anotaciones de trabajo deun trabajo del servidor efectuando una llamada a getMessages()
Ejemplo coacutemo se utiliza JobLog
El ejemplo siguiente imprime todos los mensajes de las anotaciones de trabajo correspondientes alusuario especificado
El trabajo de preparacioacuten para crear un objeto AS400 y un objeto JobList ya se ha realizado
Obtenga la lista de trabajos activos en el servidorEnumeration list = jobListgetJobs()
Busque en la lista para localizar un trabajo correspondiente al usuario especificadowhile (listhasMoreElements())
Job j = (Job) listnextElement()
if (jgetUser()trim()equalsIgnoreCase(userID))
Se ha encontrado un trabajo correspondiente al usuario actual Cree un objeto anotaciones de trabajo para este trabajoJobLog jlog = new JobLog(system jgetName() jgetUser() jgetNumber())
Enumere los mensajes de las anotaciones de trabajo y luego impriacutemalosEnumeration messageList = jloggetMessages()
while (messageListhasMoreElements())
AS400Message message = (AS400Message) messageListnextElement()Systemoutprintln(messagegetText())
94 IBM Toolbox para Java IBM Toolbox para Java
Javadoc Job
Clases de mensajesLa clase AS400Message de IBM Toolbox para Java y sus clases asociadas representan un mensaje devueltodesde el servidor
AS400Message
El objeto AS400Message permite al programa Java recuperar un mensaje de IBM i generado en unaoperacioacuten anterior (por ejemplo en una llamada a mandato) El programa Java puede recuperar de unobjeto mensaje los siguientes datosv La biblioteca IBM i y el archivo de mensajes que contienen el mensajev El ID de mensajev El tipo de mensajev La gravedad del mensajev El texto del mensajev El texto de ayuda del mensaje
En el ejemplo siguiente se muestra coacutemo utilizar el objeto AS400Message
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Cree un objeto de llamada a mandatoCommandCall cmd = new CommandCall(sys myCommand)
Ejecute el mandatocmdrun()
Obtenga la lista de mensajes que son el resultado del mandato que se acaban de ejecutarAS400Message[] messageList = cmdgetMessageList()
Itere por la lista que muestra los mensajesfor (int i = 0 i lt messageListlength i++)
Systemoutprintln(messageList[i]getText())
Ejemplos coacutemo se utilizan las listas de mensajes
Los ejemplos que hay a continuacioacuten muestran coacutemo pueden emplearse las listas de mensajes conCommandCall y ProgramCallv ldquoEjemplo coacutemo se utiliza CommandCallrdquo en la paacutegina 387v ldquoEjemplo coacutemo se utiliza ProgramCallrdquo en la paacutegina 459
QueuedMessage
La clase QueuedMessage ampliacutea la clase AS400Message
La clase QueuedMessage accede a informacioacuten sobre un mensaje de una cola de mensajes de IBM i Conesta clase un programa Java puede recuperar los datos siguientes
IBM Toolbox para Java 95
v Informacioacuten acerca de doacutende se originoacute un mensaje como por ejemplo el programa el nuacutemero detrabajo y el usuario
v La cola de mensajesv La clave del mensajev El estado de respuesta al mensaje
El ejemplo siguiente imprime todos los mensajes que hay en la cola de mensajes del usuario actual (elque ha iniciado la sesioacuten)
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
La cola de mensajes estaacute en este sistemaAS400 sys = new AS400(mySystemmyCompanycom)
Cree el objeto cola de mensajes Este objeto representaraacute la cola correspondiente al usuario actualMessageQueue queue = new MessageQueue(sys MessageQueueCURRENT)
Obtenga la lista de mensajes que hay actualmente en la cola del usuarioEnumeration e = queuegetMessages()
Imprima cada mensaje de la colawhile (ehasMoreElements())
QueuedMessage msg = egetNextElement()Systemoutprintln(msggetText())
MessageFile
La clase MessageFile permite recibir un mensaje de un archivo de mensajes de IBM i La claseMessageFile devuelve un objeto AS400Message que contiene el mensaje Mediante la clase MessageFilepuede realizar estas tareasv Devolver un objeto mensaje que contiene el mensajev Devolver un objeto mensaje que contiene texto de sustitucioacuten del mensaje
El ejemplo siguiente muestra coacutemo se recupera e imprime un mensaje
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
AS400 system = new AS400(mysystemmycompanycom)MessageFile messageFile = new MessageFile(system)messageFilesetPath(QSYSLIBQCPFMSGMSGF)AS400Message message = messageFilegetMessage(CPD0170)Systemoutprintln(messagegetText())
MessageQueue
La clase MessageQueue permite a un programa Java interactuar con una cola de mensajes de IBM i
La clase MessageQueue hace de contenedor para la clase QueuedMessage El meacutetodo getMessages()concretamente devuelve una lista de objetos QueuedMessage La clase MessageQueue puede realizarestas tareasv Establecer atributos de cola de mensajesv Obtener informacioacuten sobre una cola de mensajesv Recibir mensajes de una cola de mensajes
96 IBM Toolbox para Java IBM Toolbox para Java
v Enviar mensajes a una cola de mensajesv Responder a los mensajes
El ejemplo siguiente lista los mensajes que hay en la cola de mensajes para el usuario actual
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
La cola de mensajes estaacute en este sistemaAS400 sys = new AS400(mySystemmyCompanycom)
Cree el objeto cola de mensajes Este objeto representaraacute la cola correspondiente al usuario actualMessageQueue queue = new MessageQueue(sys MessageQueueCURRENT)
Obtenga la lista de mensajes que hay actualmente en la cola del usuarioEnumeration e = queuegetMessages()
Imprima cada mensaje de la colawhile (ehasMoreElements())
QueuedMessage msg = egetNextElement()Systemoutprintln(msggetText())
Javadoc AS400MessageJavadoc QueuedMessageResumen de paquetes de accesoJavadoc MessageFileJavadoc MessageQueue
Clase NetServerLa clase NetServer ha quedado en desuso y la sustituye la clase ISeriesNetServer
La clase NetServer representa el servicio NetServer en el servidor Los objetos NetServer permitenconsultar y modificar el estado y la configuracioacuten del servicio NetServer
Por ejemplo puede utilizar la clase NetServer para realizar las tareas siguientesv Iniciar o detener NetServerv Obtener una lista de todos los compartimientos de archivo y compartimientos de impresora actualesv Obtener una lista de todas las sesiones actualesv Consultar y cambiar valores de atributo (empleando meacutetodos heredados de ChangeableResource)
Nota para utilizar la clase NetServer necesita un perfil de usuario de servidor que tenga la autorizacioacutenIOSYSCFG
La clase NetServer es una extensioacuten de ChangeableResource y Resource de modo que proporciona unconjunto de atributos para representar los diversos valores de NetServer Puede consultar o cambiar losatributos para acceder a la configuracioacuten de NetServer o modificarla Entre los atributos de NetServer seencuentran los siguientesv NOMBREv NAME_PENDINGv DOMAINv ALLOW_SYSTEM_NAMEv AUTOSTARTv CCSID
IBM Toolbox para Java 97
v WINS_PRIMARY_ADDRESS
Atributos pendientes
Muchos de los atributos de NetServer son atributos pendientes (por ejemplo NAME_PENDING) Losatributos pendientes representan los valores de NetServer que entraraacuten en vigor la proacutexima vez que seinicie (o que se reinicie) NetServer en el servidor
Si tiene un par de atributos relacionados y uno es un atributo pendiente mientras que el otro es unatributo no pendientev El atributo pendiente es de lecturaescritura por lo que puede modificarlov El atributo no pendiente es solo de lectura por lo que puede consultarlo pero no modificarlo
Otras clases de NetServer
Varias clases de NetServer relacionadas permiten obtener y establecer informacioacuten detallada sobreconexiones sesiones compartimientos de archivo y compartimientos de impresora especiacuteficosv NetServerConnection representa una conexioacuten NetServerv NetServerFileShare representa un compartimiento de servidor de archivo NetServerv NetServerPrintShare representa un compartimiento de servidor de impresioacuten NetServerv NetServerSession representa una sesioacuten NetServerv NetServerShare representa un compartimiento NetServer
Ejemplo coacutemo se utiliza un objeto NetServer para cambiar el nombre del NetServer
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Cree un objeto sistema para representar el servidorAS400 system = new AS400(MYSYSTEM MYUSERID MYPASSWD)
Cree un objeto con el que consultar y modificar el NetServerNetServer nServer = new NetServer(system)
Establezca el atributo de nombre pendiente en NEWNAMEnServersetAttributeValue(NetServerNAME_PENDING NEWNAME)
Comprometa los cambios De este modo se enviacutean los cambios al servidornServercommitAttributeChanges()
El nombre de NetServer se estableceraacute en NEWNAME la proacutexima vez que se finalice y se inicie NetServer
Clase ObjectReferencesLa clase ObjectReferences de IBM Toolbox para Java representa el conjunto de informacioacuten relativa a lasreferencias del sistema de archivos integrado sobre un objeto que puede recuperarse mediante la APIRecuperar referencias de objeto (QP0LROR)
Una referencia es un tipo de acceso o bloqueo individual obtenido sobre el objeto al utilizar las interfacesdel sistema de archivos integrado Un objeto puede tener varias referencias simultaacuteneas suponiendo quelos tipos de referencias no entren en conflicto entre siacute Esta clase no devolveraacute informacioacuten acerca debloqueos de rango de bytes que pueden existir actualmente sobre un objeto
El usuario debe tener la autorizacioacuten de datos de ejecucioacuten (X) sobre cada directorio que preceda alobjeto cuyas referencias deben obtenerse El usuario debe tener la autorizacioacuten de datos de lectura (R)sobre el objeto cuyas referencias deben obtenerse
98 IBM Toolbox para Java IBM Toolbox para Java
Para obtener maacutes informacioacuten consulte el Javadoc ObjectReferencesInformacioacuten relacionadaJavadoc ObjectReferencesAPI Recuperar referencias de objeto (QP0LROR)
Clases de permisosLas clases de permisos de IBM Toolbox para Java permiten obtener y establecer informacioacuten deautorizacioacuten sobre objeto La informacioacuten de autorizacioacuten sobre objeto tambieacuten se llama permiso La clasePermission representa la autorizacioacuten que una coleccioacuten de varios usuarios posee sobre un objeto Laclase UserPermission representa la autorizacioacuten que un usuario individual posee sobre un objetoespeciacutefico
Clase Permission
La clase Permission permite recuperar y cambiar informacioacuten de autorizacioacuten sobre objeto Incluye unacoleccioacuten de diversos usuarios que tienen autorizacioacuten sobre el objeto El objeto Permission permite alprograma Java poner en memoria cacheacute los cambios realizados en la autorizacioacuten hasta que se llame almeacutetodo commit() Una vez llamado el meacutetodo commit() todos los cambios realizados hasta ese momentose enviacutean al servidor Algunas de las funciones proporcionadas por la clase Permission sonv addAuthorizedUser() antildeade un usuario autorizadov commit() compromete en el servidor los cambios realizados en el permisov getAuthorizationList() devuelve la lista de autorizaciones del objetov getAuthorizedUsers() devuelve una enumeracioacuten de los usuarios autorizadosv getOwner() devuelve el nombre del propietario del objetov getSensitivityLevel() devuelve el nivel de confidencialidad del objetov getType() devuelve el tipo de autorizacioacuten sobre objeto (QDLO QSYS o Raiacutez)v getUserPermission() devuelve el permiso que un determinado usuario tiene sobre el objetov getUserPermissions() devuelve una enumeracioacuten de los permisos que los usuarios tienen sobre el
objetov setAuthorizationList() establece la lista de autorizaciones del objetov setSensitivityLevel() establece el nivel de confidencialidad del objeto
Ejemplo coacutemo se utiliza Permission
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
El ejemplo siguiente muestra coacutemo se crea un permiso y se antildeade un usuario para que tenga autorizacioacutensobre un objeto
Cree un objeto AS400AS400 as400 = new AS400()
Cree el objeto Permission pasando el AS400 y el objetoPermission myPermission = new Permission(as400 QSYSLIBmyLibLIB)
Antildeada un usuario para que tenga autorizacioacuten sobre el objetomyPermissionaddAuthorizedUser(User1)
Clase UserPermission
La clase UserPermission representa la autorizacioacuten de un determinado usuario individualUserPermission tiene tres subclases que manejan la autorizacioacuten basaacutendose en el tipo de objetov DLOPermission
IBM Toolbox para Java 99
v QSYSPermissionv RootPermission
La clase UserPermission le permite llevar a cabo estas tareasv Determinar si el perfil de usuario es un perfil de grupov Devolver el nombre del perfil de usuariov Indicar si el usuario tiene autorizacioacutenv Establecer la autorizacioacuten de la gestioacuten de lista de autorizaciones
Ejemplo coacutemo se utiliza UserPermission
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
El ejemplo siguiente muestra coacutemo se recuperan los usuarios y los grupos que tienen permiso sobre unobjeto y coacutemo se imprimen de uno en uno
Cree un objeto sistemaAS400 sys = new AS400(MYAS400 USERID PASSWORD)
Represente los permisos sobre un objeto existente en el sistema como una bibliotecaPermission objectInQSYS = new Permission(sys QSYSLIBFREDLIB)
Recupere los diversos usuariosgrupos que tienen establecidos permisos en ese objetoEnumeration enum = objectInQSYSgetUserPermissions()while (enumhasMoreElements())
Imprima los nombres de perfil de usuariogrupo de uno en unoUserPermission userPerm = (UserPermission)enumnextElement()Systemoutprintln(userPermgetUserID())
Javadoc PermissionJavadoc UserPermission
Clase DLOPermission
La clase DLOPermission es una subclase de UserPermission DLOPermission permite visualizar yestablecer las autorizaciones (denominadas permisos) que un usuario tiene para un objeto de bibliotecade documentos (DLO) Los DLO se almacenan en QDLS
A cada usuario se le asigna uno de los siguientes valores de autorizacioacuten
Valor de autorizacioacuten Descripcioacuten
ALL El usuario puede llevar a cabo todas las operacionessalvo las que estaacuten controladas por la gestioacuten de lista deautorizaciones
AUTL Se utiliza la lista de autorizaciones para determinar laautorizacioacuten sobre el documento
CHANGE El usuario puede realizar cambios y efectuar funcionesbaacutesicas en el objeto
EXCLUDE El usuario no puede acceder al objeto
USE El usuario posee sobre el objeto autorizacioacuten operativade lectura y de ejecucioacuten
100 IBM Toolbox para Java IBM Toolbox para Java
Si desea realizar cambios o determinar cuaacutel es la autorizacioacuten de un usuario debe utilizar uno de estosmeacutetodosv getDataAuthority() permite visualizar el valor de la autorizacioacuten del usuariov setDataAuthority() permite establecer el valor de la autorizacioacuten del usuario
Tras establecer los permisos es importante que utilice el meacutetodo commit() de la clase Permissions paraenviar los cambios al servidor
Para obtener maacutes informacioacuten sobre los permisos y las autorizaciones consulte el tema Informacioacuten deconsulta sobre seguridad
Ejemplo coacutemo se utiliza DLOPermission
En el ejemplo siguiente se muestra coacutemo se recuperan e imprimen los permisos DLO incluidos losperfiles de usuario para cada permiso
Cree un objeto sistema
AS400 sys = new AS400(MYAS400 USERID PASSWORD) Represente los permisos sobre un objeto DLOPermission objectInQDLS = new Permission(sys QDLSMyFolder)
Imprima el nombre de viacutea del objeto y recupere los correspondientes permisosSystemoutprintln(Los permisos sobre + objectInQDLSgetObjectPath() + son)Enumeration enum = objectInQDLSgetUserPermissions()while (enumhasMoreElements())
Para cada uno de los permisos imprima el nombre del perfil de usuario y las autorizaciones que posee dicho usuario sobre el objetoDLOPermission dloPerm = (DLOPermission)enumnextElement()Systemoutprintln(dloPermgetUserID() + + dloPermgetDataAuthority())
Informacioacuten relacionadaJavadoc DLOPermission
QSYSPermission
QSYSPermission es una subclase de la clase UserPermission QSYSPermission permite visualizar yestablecer el permiso que un usuario posee sobre un objeto de la estructura tradicional de bibliotecas deIBM i de QSYSLIB Puede establecer la autorizacioacuten sobre un objeto almacenado en QSYSLIBestableciendo un valor de autorizacioacuten definido por el sistema o estableciendo las autorizacionesindividuales sobre objetos y sobre datos
La tabla siguiente lista y describe los valores de autorizacioacuten definidos por el sistema vaacutelidos
Valor de autorizacioacuten definido por el sistema Descripcioacuten
ALL El usuario puede llevar a cabo todas las operacionessalvo las que estaacuten controladas por la gestioacuten de lista deautorizaciones
AUTL Se utiliza la lista de autorizaciones para determinar laautorizacioacuten sobre el documento
CHANGE El usuario puede realizar cambios y efectuar funcionesbaacutesicas en el objeto
EXCLUDE El usuario no puede acceder al objeto
USE El usuario posee sobre el objeto autorizacioacuten operativade lectura y de ejecucioacuten
IBM Toolbox para Java 101
Cada valor de autorizacioacuten definido por el sistema representa en realidad una combinacioacuten de lasautorizaciones individuales sobre objetos y sobre datos La tabla siguiente muestra las relaciones de lasautorizaciones definidas por el sistema con las autorizaciones individuales sobre objetos y sobre datos
Tabla 1 S indica las autorizaciones que siacute pueden asignarse n indica las autorizaciones que no pueden asignarse
Autorizacioacutendefinidapor elsistema
Autorizacioacuten sobre objeto Autorizacioacuten sobre datos
Oper Gest Exist Alter Ref Lect Adic Actual Supr Ejec
Total S S S S S S S S S S
Cambio S n n n n S S S S S
Exclusioacuten n n n n n n n n n n
Uso S n n n n S n n n S
Lista deautoriz
Solo tiene validez con el usuario (PUBLIC) y una lista de autorizaciones especificada que determinelas autorizaciones individuales sobre objetos y sobre datos
Al especificar una autorizacioacuten definida por el sistema automaacuteticamente se asignan las autorizacionesindividuales correspondientes Del mismo modo al especificar distintas autorizaciones individuales secambian los valores de autorizacioacuten individuales correspondientes Cuando una combinacioacuten deautorizaciones individuales sobre objeto y autorizaciones sobre datos no se correlaciona con un valor deautorizacioacuten definido por el sistema uacutenico el valor uacutenico pasa a ser la autorizacioacuten Definida porusuario
Utilice el meacutetodo getObjectAuthority() para visualizar la autorizacioacuten definida por el sistema actualUtilice el meacutetodo setObjectAuthority() para establecer la autorizacioacuten definida por el sistema actualutilizando un solo valor
Utilice el meacutetodo set adecuado para habilitar o inhabilitar los valores individuales de autorizacioacuten sobreobjetov setAlter()v setExistence()v setManagement()v setOperational()v setReference()
Utilice el meacutetodo set adecuado para habilitar o inhabilitar los valores de autorizacioacuten sobre datosindividualesv setAdd()v setDelete()v setExecute()v setRead()v setUpdate()
Para obtener maacutes informacioacuten acercas de las diversas autorizaciones consulte el tema Informacioacuten deconsulta sobre seguridad Para obtener informacioacuten sobre coacutemo utilizar los mandatos CL para otorgar yeditar autorizaciones sobre objetos consulte los mandatos CL Otorgar autorizacioacuten sobre objeto(GRTOBJAUT) y Editar autorizacioacuten sobre objeto (EDTOBJAUT)
Ejemplo
Este ejemplo muestra coacutemo se recuperan e imprimen los permisos correspondientes a un objeto QSYS
102 IBM Toolbox para Java IBM Toolbox para Java
Cree un objeto sistemaAS400 sys = new AS400(MYAS400 USERID PASSWORD)
Represente los permisos sobre un objeto QSYSPermission objectInQSYS = new Permission(sys QSYSLIBFREDLIB)
Imprima el nombre de viacutea del objeto y recupere los correspondientes permisosSystemoutprintln(Los permisos sobre +objectInQSYSgetObjectPath()+ son)Enumeration enum = objectInQSYSgetUserPermissions()while (enumhasMoreElements())
Para cada uno de los permisos imprima el nombre del perfil de usuario y las autorizaciones que posee dicho usuario sobre el objetoQSYSPermission qsysPerm = (QSYSPermission)enumnextElement()Systemoutprintln(qsysPermgetUserID()+ +qsysPermgetObjectAuthority())
Javadoc QSYSPermissionldquoClase UserPermissionrdquo en la paacutegina 99
RootPermission
La clase RootPermission representa la autorizacioacuten de un usuario sobre los objetos contenidos en laestructura de directorio raiacutez Los objetos de RootPermissions son los que no estaacuten contenidos enQSYSLIB ni en QDLS
RootPermission es una subclase de la clase UserPermission La clase RootPermission permite visualizar yestablecer los permisos correspondientes a un usuario de un objeto contenido en la estructura deldirectorio raiacutez
Un objeto que esteacute en la estructura del directorio raiacutez puede establecer la autorizacioacuten sobre datos o laautorizacioacuten sobre objeto Puede establecer la autorizacioacuten sobre datos en los valores que se indican en latabla siguiente Utilice el meacutetodo getDataAuthority() para visualizar los valores actuales y el meacutetodosetDataAuthority() para establecer la autorizacioacuten sobre datos
La tabla siguiente lista y describe los valores de autorizacioacuten sobre datos vaacutelidos
Valor de autorizacioacutensobre datos Descripcioacuten
none El usuario no posee autorizacioacuten alguna sobre el objeto
RWX El usuario posee autorizacioacuten para leer antildeadir actualizar suprimir y ejecutar
RW El usuario posee autorizacioacuten para leer antildeadir y suprimir
RX El usuario posee autorizacioacuten para leer y ejecutar
WX El usuario posee autorizacioacuten para antildeadir actualizar suprimir y ejecutar
R El usuario posee autorizacioacuten para leer
W El usuario posee autorizacioacuten para antildeadir actualizar y suprimir
X El usuario posee autorizacioacuten para ejecutar
EXCLUDE El usuario no puede acceder al objeto
AUTL Las autorizaciones de uso puacuteblico sobre este objeto proceden de la lista deautorizaciones
La autorizacioacuten sobre objeto se puede establecer en uno o varios de estos valores alteracioacuten existenciagestioacuten o referencia Puede utilizar los meacutetodos setAlter() setExistence() setManagement() osetReference() para activar o desactivar los valores
IBM Toolbox para Java 103
Tras establecer la autorizacioacuten sobre datos o la autorizacioacuten sobre objeto de un objeto es importante queutilice el meacutetodo commit() de la clase Permissions para enviar los cambios al servidor
Para obtener maacutes informacioacuten acercas de las diversas autorizaciones consulte el tema Informacioacuten deconsulta sobre seguridad
Ejemplo
Este ejemplo muestra coacutemo se recuperan e imprimen los permisos correspondientes a un objeto raiacutez Cree un objeto sistemaAS400 sys = new AS400(MYAS400 USERID PASSWORD)
Represente los permisos sobre un objeto en el sistema de archivos raiacutezPermission objectInRoot = new Permission(sys fred)
Imprima el nombre de viacutea del objeto y recupere los correspondientes permisosSystemoutprintln(Los permisos sobre +objectInRootgetObjectPath()+ son)Enumeration enum = objectInRootgetUserPermissions()while (enumhasMoreElements())
Para cada uno de los permisos imprima el nombre del perfil de usuario y las autorizaciones que posee dicho usuario sobre el objetoRootPermission rootPerm = (RootPermission)enumnextElement()Systemoutprintln(rootPermgetUserID()+ +rootPermgetDataAuthority())
Informacioacuten relacionadaJavadoc RootPermission
Clases de impresioacutenLos objetos de impresioacuten son los archivos en spool las colas de salida las impresoras los archivos deimpresora los trabajos transcriptores y los recursos de las Funciones Avanzadas de Impresioacuten (AFP)incluidos los fonts las definiciones de formulario los preformatos las definiciones de paacutegina y lossegmentos de paacutegina
Las clases de IBM Toolbox para Java de los objetos de impresioacuten estaacuten organizadas en una clase basePrintObject y en una subclase para cada uno de los seis tipos de objetos de impresioacuten La clase basecontiene los meacutetodos y los atributos que son comunes a todos los objetos de impresioacuten del servidor Lassubclases contienen los meacutetodos y atributos que son especiacuteficos para cada subtipo
Ejemplosv Ejemplo crear archivos en spool muestra coacutemo se crea un archivo en spool en un servidor a partir de
una corriente de entradav Ejemplo crear archivos en spool SCS muestra coacutemo se genera una corriente de datos SCS utilizando la
clase SCS3812Writer y coacutemo se escribe la corriente en un archivo en spool en el servidorv Ejemplo leer archivos en spool muestra coacutemo se utiliza PrintObjectInputStream para leer un archivo en
spool existente en el servidorv Ejemplo leer y transformar archivos en spool muestra coacutemo se utiliza PrintObjectPageInputStream y
PrintObjectTransformedInputStream para obtener diferentes transformaciones al leer datos de archivosen spool
v Ejemplo copiar un archivo en spool muestra coacutemo copiar un archivo en spool en la misma cola quecontiene el archivo que se desea copiar
v Ejemplo listar archivos en spool asiacutencronamente (utilizando escuchas) muestra coacutemo se listan de modoasiacutencrono todos los archivos en spool de un sistema y coacutemo se utiliza la interfazPrintObjectListListener para obtener informacioacuten de retorno a medida que la lista se va construyendo
104 IBM Toolbox para Java IBM Toolbox para Java
v Ejemplo listar archivos en spool asiacutencronamente (sin utilizar escuchas) muestra coacutemo se listan demodo asiacutencrono todos los archivos en spool de un sistema sin utilizar la interfazPrintObjectListListener
v Ejemplo listar archivos en spool siacutencronamente muestra coacutemo se listan de modo siacutencrono todos losarchivos en spool que hay en un sistema
Informacioacuten relacionadaJavadoc PrintObject
Listar objetos de impresioacuten
Puede utilizar la clase PrintObjectList de IBM Toolbox para Java y sus subclases para trabajar con listasde objetos de impresioacuten Los objetos de impresioacuten son los archivos en spool las colas de salida lasimpresoras los recursos de las Funciones Avanzadas de Impresioacuten (AFP) los archivos de impresora y lostrabajos transcriptores
Cada subclase dispone de meacutetodos que permiten el filtrado de la lista basaacutendose en los elementos quetienen sentido para un determinado tipo de objeto de impresioacuten Por ejemplo SpooledFileList permitefiltrar una lista de archivos en spool basaacutendose en el usuario que creoacute los archivos en spool en la cola desalida en la que se encuentran los archivos en spool en el tipo de formulario o en los datos de usuario delos archivos en spool Uacutenicamente se listan los archivos en spool que coinciden con los criterios defiltrado De no establecerse ninguacuten filtro se utiliza un valor predeterminado para cada uno de los filtros
Para recuperar realmente la lista de objetos de impresioacuten del servidor se emplea el meacutetodoopenSynchronously() u openAsynchronously() El meacutetodo openSynchronously() no vuelve hasta que sehan recuperado del servidor todos los objetos de la lista El meacutetodo openAsynchronously() vuelveinmediatamente y el llamador puede realizar otras tareas en primer plano mientras espera a que seconstruya la lista La lista abierta asiacutencronamente permite asimismo al llamador empezar a mostrar losobjetos al usuario a medida que van llegando El usuario debido a que puede ver los objetos a medidaque van llegando tiene la impresioacuten de que el tiempo de respuesta es maacutes corto De hecho el tiempo derespuesta global puede ser maacutes largo a causa del proceso adicional que se lleva a cabo en cada objeto dela lista
Si la lista se abre asiacutencronamente el llamador puede obtener informacioacuten de retorno acerca de laconstruccioacuten de la lista Diversos meacutetodos como por ejemplo isCompleted() y size() indican si ya se haterminado de construir la lista o devuelven el tamantildeo actual de la lista Otros meacutetodos comowaitForListToComplete() y waitForItem() permiten al llamador esperar a que la lista se complete o a quese recupere un elemento determinado Ademaacutes de llamar a estos meacutetodos de PrintObjectList el llamadorpuede registrarse en la lista como escucha En tal caso el llamador recibe notificacioacuten de los eventos quese producen en la lista Para registrarse o desregistrarse de los eventos el llamador utilizaPrintObjectListListener() y a continuacioacuten llama a addPrintObjectListListener() para registrarse o aremovePrintObjectListListener() para desregistrarse En la siguiente tabla se muestran los eventos que unobjeto PrintObjectList puede comunicar
Evento de PrintObjectList Cuaacutendo se entrega el evento
listClosed Al cerrarse la lista
listCompleted Al completarse la lista
listErrorOccurred Cuando se lanza alguna excepcioacuten mientras se recupera la lista
listOpened Al abrirse la lista
listObjectAdded Cuando se antildeade un objeto a la lista
Tras haber abierto la lista y procesado los objetos que contiene cierre la lista utilizando el meacutetodo close()Asiacute se liberan los recursos que se hayan asignado al colector de basura durante la apertura Despueacutes decerrar una lista es posible modificar los filtros de la misma y la lista puede abrirse de nuevo
IBM Toolbox para Java 105
Cuando se listan objetos de impresioacuten los atributos acerca de cada objeto de impresioacuten listado se enviacuteandesde el servidor y se almacenan junto con el objeto de impresioacuten Estos atributos se pueden actualizarmediante el meacutetodo update() de la clase PrintObject Los atributos enviados desde el servidor variacutean enfuncioacuten del tipo de objeto de impresioacuten que se lista Hay una lista predeterminada de atributos para cadatipo de objeto de impresioacuten que se puede alterar temporalmente utilizando el meacutetodosetAttributesToRetrieve() de PrintObjectList En la seccioacuten Recuperar atributos de PrintObject encontraraacuteuna lista de los atributos soportados por cada tipo de objeto de impresioacuten
Ejemplos
En los ejemplos siguientes se muestran diversas formas de listar archivos en spool
ldquoEjemplo listar archivos en spool asiacutencronamente (utilizando escuchas)rdquo en la paacutegina 453 quemuestra coacutemo se listan de modo asiacutencrono todos los archivos en spool de un sistema y coacutemo seutiliza la interfaz PrintObjectListListener para obtener informacioacuten de retorno a medida que la listase va construyendo
ldquoEjemplo listar archivos en spool asiacutencronamente (sin utilizar escuchas)rdquo en la paacutegina 456 quemuestra coacutemo se listan de modo asiacutencrono todos los archivos en spool de un sistema sin utilizar lainterfaz PrintObjectListListener
ldquoEjemplo listar archivos en spool siacutencronamenterdquo en la paacutegina 458 que muestra coacutemo se listan demodo siacutencrono todos los archivos en spool que hay en un sistema
Javadoc PrintObjectListJavadoc SpooledFileListJavadoc AFPResource
Trabajar con objetos de impresioacuten
PrintObject es una clase abstracta Una clase abstracta no permite crear una instancia de la clase En vezde ello es preciso crear una instancia de una de sus subclases para trabajar con objetos de impresioacuten
Para crear objetos de las subclases puede seguir cualquiera de estos procedimientosv Si conoce el sistema y los atributos identificadores del objeto construya el objeto expliacutecitamente
llamando al constructor puacuteblico de dicho objetov Puede utilizar una subclase de PrintObjectList para construir una lista de los objetos y luego acceder a
los objetos individuales mediante la listav Un objeto puede crearse y serle devuelto como resultado de llamar a un meacutetodo o a un conjunto de
meacutetodos Por ejemplo el meacutetodo estaacutetico start() de la clase WriterJob devuelve un objeto WriterJob
Utilice la clase base PrintObject y sus subclases para trabajar con los objetos de impresioacuten del servidorv OutputQueuev Impresorav PrinterFilev SpooledFilev WriterJob
Javadoc PrintObjectJavadoc PrintObjectListJavadoc OutputQueueJavadoc PrinterJavadoc PrinterFileJavadoc SpooledFile
106 IBM Toolbox para Java IBM Toolbox para Java
Javadoc WriterJob
Recuperar atributos de PrintObject
Para recuperar atributos de un objeto de impresioacuten puede utilizar el ID de atributo y uno de los diversosmeacutetodos de la clase base PrintObject
Los meacutetodos que puede utilizar son los siguientesv Utilice getIntegerAttribute(int attributeID) para recuperar un atributo de tipo entero)v Utilice getFloatAttribute(int attributeID) para recuperar un atributo de tipo coma flotantev Utilice getStringAttribute(int attributeID) para recuperar un atributo de tipo serie
El paraacutemetro attributeID es un entero que identifica el atributo que se ha de recuperar Todos los ID sedefinen como constantes puacuteblicas en la clase base PrintObject El archivo PrintAttributes contiene unaentrada de cada ID de atributo La entrada incluye una descripcioacuten del atributo y de su tipo (enterocoma flotante o serie) Si desea obtener una lista de cuaacuteles son los atributos que pueden recuperarsemediante estos meacutetodos seleccione los enlaces siguientesv AFPResourceAttrs para recursos AFPv OutputQueueAttrs para colas de salidav PrinterAttrs para impresorasv PrinterFileAttrs para archivos de impresorav SpooledFileAttrs para archivos en spoolv WriterJobAttrs para trabajos transcriptores
Para lograr un rendimiento aceptable estos atributos se copian en el cliente La copia se realiza al listarselos objetos o bien cuando un objeto se necesite por primera vez en el caso de que dicho objeto se hayacreado impliacutecitamente Ello evita que el objeto tenga que ir al host cada vez que la aplicacioacuten necesiterecuperar un atributo Tambieacuten hace que sea posible que la instancia del objeto de impresioacuten Javacontenga informacioacuten desfasada acerca del objeto existente en el servidor El usuario del objeto puederenovar todos los atributos llamando al meacutetodo update() en el objeto Ademaacutes si la aplicacioacuten llama aalguacuten meacutetodo existente en el objeto que pueda provocar cambios en los atributos del objeto los atributosse actualizan automaacuteticamente Por ejemplo si una cola de salida tiene el atributo de estado RELEASED(getStringAttribute(ATTR_OUTQSTS) devuelve la serie RELEASED) y se llama al meacutetodo hold() en lacola de datos si despueacutes se obtiene el atributo de estado se devolveriacutea el valor HELD
Meacutetodo setAttributes
Puede utilizar el meacutetodo setAttributes para cambiar los atributos de los objetos de archivos en spool yarchivo de impresora Si desea obtener una lista de cuaacuteles son los atributos que se pueden establecerseleccione los enlaces siguientesv PrinterFileAttrs para archivos de impresorav SpooledFileAttrs para archivos en spool
El meacutetodo setAttributes toma un paraacutemetro PrintParameterList que es una clase utilizada para conteneruna coleccioacuten de identificadores de atributos y de sus valores La lista al principio estaacute vaciacutea y elllamador puede ir antildeadiendo atributos a la lista mediante los diversos meacutetodos setParameter()
Clase PrintParameterList
La clase PrintParameterList se puede utilizar para pasar un grupo de atributos a un meacutetodo que tomecomo paraacutemetros un nuacutemero determinado de atributos Por ejemplo para enviar un archivo en spoolmediante TCP (LPR) puede emplear el meacutetodo de SpooledFile sendTCP() El objeto PrintParameterListcontiene los paraacutemetros necesarios para el mandato de enviar (por ejemplo el sistema remoto y la cola)
IBM Toolbox para Java 107
maacutes los paraacutemetros opcionales que se deseen (por ejemplo si hay que suprimir el archivo en spooldespueacutes del enviacuteo) En estos casos la documentacioacuten del meacutetodo proporciona una lista de los atributosnecesarios y de los opcionales El meacutetodo setParameter() de PrintParameterList no comprueba queacuteatributos se establecen ni los valores que se les da El meacutetodo setParameter() de PrintParameterList tansolo contiene los valores que se han de pasar al meacutetodo En general los atributos adicionales dePrintParameterList no se tienen en cuenta y los valores no permitidos de los atributos utilizados sediagnostican en el servidor
Javadoc PrintObjectJavadoc SpooledFileJavadoc PrintParameterList
Atributos de recursos AFP
Este tema indica los atributos que pueden recuperarse y establecerse para un recurso AFP
Recuperar atributos
Pueden recuperarse los atributos siguientes para un recurso AFP utilizando el meacutetodogetIntegerAttribute() getStringAttribute() o getFloatAttribute() adecuadov ATTR_AFP_RESOURCE - Viacutea de acceso del sistema de archivos integrado de recursos AFPv ATTR_OBJEXTATTR - Atributo ampliado de objetov ATTR_DESCRIPTION - Texto descriptivov ATTR_DATE - Archivo de fecha abiertov ATTR_TIME - Archivo de hora abiertov ATTR_NUMBYTES - Nuacutemero de bytes de lecturaescritura
Establecer atributos
No estaacute permitido establecer atributos para un recurso AFP
Atributos de la cola de salida
Este tema indica los atributos disponibles para una cola de salida
Recuperar atributos
Pueden recuperarse los atributos siguientes para una cola de salida empleando el meacutetodogetIntegerAttribute() getStringAttribute() o getFloatAttribute() adecuadov ATTR_AUTHCHCK - Autorizacioacuten para comprobarv ATTR_DATA_QUEUE - Nombre del sistema de archivos integrado de la cola de datosv ATTR_DISPLAYANY - Visualizar cualquier archivov ATTR_JOBSEPRATR - Separadores de trabajov ATTR_NUMFILES - Nuacutemero de archivosv ATTR_NUMWRITERS - Nuacutemero de transcriptores iniciados para la colav ATTR_OPCNTRL - Operador controladov ATTR_ORDER - Orden de archivos en colav ATTR_OUTPUT_QUEUE - Nombre del sistema de archivos integrado de la cola de salidav ATTR_OUTQSTS - Estado de la cola de salidav ATTR_PRINTER - Impresorav ATTR_SEPPAGE - Paacutegina de separacioacutenv ATTR_DESCRIPTION - Descripcioacuten de texto
108 IBM Toolbox para Java IBM Toolbox para Java
v ATTR_USRDEFOPT - Opciones definidas por el usuariov ATTR_USER_DEFINED_OBJECT - Nombre del sistema de archivos integrado del objeto definido por
el usuariov ATTR_USER_TRANSFORM_PROG - Nombre del sistema de archivos integrado del programa de
transformacioacuten del usuariov ATTR_USER_DRIVER_PROG - Nombre del sistema de archivos integrado del programa controlador
del usuariov ATTR_WTRJOBNAME - Nombre de trabajo del transcriptorv ATTR_WTRJOBNUM - Nuacutemero de trabajo del transcriptorv ATTR_WTRJOBSTS - Estado del trabajo del transcriptorv ATTR_WTRJOBUSER - Nombre de usuario del trabajo del transcriptor
Establecer atributos
No estaacute permitido establecer atributos para una cola de salida
Atributos de impresora
Pueden recuperarse los atributos siguientes para una impresora empleando el meacutetodogetIntegerAttribute() getStringAttribute() o getFloatAttribute() adecuado
Recuperar atributos
v ATTR_AFP - Funciones avanzadas de impresioacutenv ATTR_ALIGNFORMS - Alinear formulariosv ATTR_ALWDRTPRT - Permitir impresioacuten directav ATTR_BTWNCPYSTS - Estado entre copiasv ATTR_BTWNFILESTS - Estado entre archivosv ATTR_CODEPAGE - Paacutegina de coacutedigosv ATTR_CHANGES - Cambiosv ATTR_DEVCLASS - Clase de dispositivov ATTR_DEVMODEL - Modelo de dispositivov ATTR_DEVTYPE - Tipo de dispositivov ATTR_DEVSTATUS - Estado de dispositivov ATTR_DRWRSEP - Bandeja de separadoresv ATTR_ENDPNDSTS - Estado pendiente de finalizacioacutenv ATTR_FILESEP - Separadores de archivov ATTR_FONTID - Identificador de fontv ATTR_FORM_DEFINITION - Nombre del sistema de archivos integrado de la definicioacuten de formulariov ATTR_FORMTYPE - Tipo de formulariov ATTR_FORMTYPEMSG - Mensaje de tipo de formulariov ATTR_FORMFEED - Alimentacioacuten de papelv ATTR_CHAR_ID - Juego de caracteres graacuteficosv ATTR_HELDSTS - Estado de retenidov ATTR_HOLDPNDSTS - Estado pendiente de retencioacutenv ATTR_JOBUSER - Usuario de trabajov ATTR_MFGTYPE - Tipo y modelo de fabricantev ATTR_MESSAGE_QUEUE - Nombre del sistema de archivos integrado de la cola de mensajesv ATTR_ONJOBQSTS - Estado de en cola de trabajos
IBM Toolbox para Java 109
v ATTR_OUTPUT_QUEUE - Nombre del sistema de archivos integrado de la cola de salidav ATTR_OVERALLSTS - Estado globalv ATTR_POINTSIZE - Cuerpov ATTR_PRINTER - Impresorav ATTR_PRTDEVTYPE - Tipo de dispositivo de impresorav ATTR_PUBINF_COLOR_SUP - Color de informacioacuten de publicacioacuten soportadov ATTR_PUBINF_PPM_COLOR - Paacuteginas por minuto de informacioacuten de publicacioacuten (color)v ATTR_PUBINF_PPM - Paacuteginas por minuto de informacioacuten de publicacioacuten (monocromo)v ATTR_PUBINF_DUPLEX_SUP - Soporte duacuteplex de informacioacuten de publicacioacutenv ATTR_PUBINF_LOCATION - Ubicacioacuten de informacioacuten de publicacioacutenv ATTR_RMTLOCNAME - Nombre de ubicacioacuten remotav ATTR_SPOOLFILE - Nombre de archivo en spoolv ATTR_SPLFNUM - Nuacutemero de archivo en spoolv ATTR_STARTEDBY - Iniciado por usuariov ATTR_DESCRIPTION - Texto descriptivov ATTR_USERDATA - Datos de usuariov ATTR_USRDEFOPT - Opciones definidas por el usuariov ATTR_USER_DEFINED_OBJECT - Nombre del sistema de archivos integrado del objeto definido por
el usuariov ATTR_USER_TRANSFORM_PROG - Nombre del sistema de archivos integrado del programa de
transformacioacuten del usuariov ATTR_USER_DRIVER_PROG - Nombre del sistema de archivos integrado del programa controlador
del usuariov ATTR_SCS2ASCII - Transformar SCS en ASCIIv ATTR_WTNGDATASTS - Estado de en espera de datosv ATTR_WTNGDEVSTS - Estado de en espera de dispositivov ATTR_WTNGMSGSTS - Estado de en espera de mensajev ATTR_WTRAUTOEND - Cuaacutendo finalizar transcriptor automaacuteticamentev ATTR_WTRJOBNAME - Nombre de trabajo del transcriptorv ATTR_WTRJOBSTS - Estado del trabajo del transcriptorv ATTR_WTRSTRTD - Transcriptor iniciadov ATTR_WRTNGSTS - Estado de transcribiendo
Establecer atributos
No estaacute permitido establecer atributos para una impresora
Atributos de archivo de impresora
Este tema contiene una lista de los atributos de archivo de impresora que se utilizan con IBM Toolboxpara Java
Recuperar atributos
Pueden recuperarse los atributos siguientes para un archivo de impresora empleando el meacutetodogetIntegerAttribute() getStringAttribute() o getFloatAttribute() adecuadov ATTR_ALIGN - Alinear paacuteginav ATTR_BKMGN_ACR - Desplazamiento a traveacutes de margen reverso
110 IBM Toolbox para Java IBM Toolbox para Java
v ATTR_BKMGN_DWN - Desplazamiento abajo de margen reversov ATTR_BACK_OVERLAY - Nombre del sistema de archivos integrado del preformato reversov ATTR_BKOVL_DWN - Desplazamiento abajo de preformato reversov ATTR_BKOVL_ACR - Desplazamiento a traveacutes de preformato reversov ATTR_CPI - Caracteres por pulgadav ATTR_CODEDFNTLIB - Nombre de biblioteca de font codificadov ATTR_CODEPAGE - Paacutegina de coacutedigosv ATTR_CODEDFNT - Nombre de font codificadov ATTR_CONTROLCHAR - Caraacutecter de controlv ATTR_CONVERT_LINEDATA - Convertir datos de liacuteneav ATTR_COPIES - Copiasv ATTR_CORNER_STAPLE - Grapa en esquinav ATTR_DBCSDATA - Datos DBCS especificados por usuariov ATTR_DBCSEXTENSN - Caracteres de extensioacuten DBCSv ATTR_DBCSROTATE - Rotacioacuten de caracteres DBCSv ATTR_DBCSCPI - Caracteres DBCS por pulgadav ATTR_DBCSSISO - Espaciado DBCS SOSIv ATTR_DFR_WRITE - Diferir escriturav ATTR_PAGRTT - Grados de rotacioacuten de paacuteginav ATTR_EDGESTITCH_NUMSTAPLES - Nuacutemero de grapas de ligadura de bordesv ATTR_EDGESTITCH_REF - Referencia de ligadura de bordesv ATTR_EDGESTITCH_REFOFF - Desplazamiento de referencia de ligadura de bordesv ATTR_ENDPAGE - Paacutegina finalv ATTR_FILESEP - Separadores de archivov ATTR_FOLDREC - Acomodar registrosv ATTR_FONTID - Identificador de fontv ATTR_FORM_DEFINITION - Nombre del sistema de archivos integrado de la definicioacuten de formulariov ATTR_FORMFEED - Alimentacioacuten de papelv ATTR_FORMTYPE - Tipo de formulariov ATTR_FTMGN_ACR - Desplazamiento a traveacutes de margen anversov ATTR_FTMGN_DWN - Desplazamiento abajo de margen anversov ATTR_FRONT_OVERLAY - Nombre del sistema de archivos integrado del preformato anversov ATTR_FTOVL_ACR - Desplazamiento a traveacutes de preformato anversov ATTR_FTOVL_DWN - Desplazamiento abajo de preformato anversov ATTR_CHAR_ID - Juego de caracteres graacuteficosv ATTR_JUSTIFY - Alineacioacuten de hardwarev ATTR_HOLD - Retener archivo en spoolv ATTR_LPI - Liacuteneas por pulgadav ATTR_MAXRCDS - Maacuteximo de registros de salida en spoolv ATTR_OUTPTY - Prioridad de salidav ATTR_OUTPUT_QUEUE - Nombre del sistema de archivos integrado de la cola de salidav ATTR_OVERFLOW - Nuacutemero de liacutenea de desbordamientov ATTR_PAGE_DEFINITION - Nombre del sistema de archivos integrado de la definicioacuten de paacuteginav ATTR_PAGELEN - Longitud de paacuteginav ATTR_MEASMETHOD - Meacutetodo de medida
IBM Toolbox para Java 111
v ATTR_PAGEWIDTH - Anchura de paacuteginav ATTR_MULTIUP - Paacuteginas por carav ATTR_POINTSIZE - Cuerpov ATTR_FIDELITY - Fidelidad de impresioacutenv ATTR_DUPLEX - Imprimir en ambas carasv ATTR_PRTQUALITY - Calidad de impresioacutenv ATTR_PRTTEXT - Texto de impresioacutenv ATTR_PRINTER - Impresorav ATTR_PRTDEVTYPE - Tipo de dispositivo de impresorav ATTR_RPLUNPRT - Sustituir caracteres no imprimiblesv ATTR_RPLCHAR - Caraacutecter de sustitucioacutenv ATTR_SADDLESTITCH_NUMSTAPLES - Nuacutemero de grapas de cosido por el lomov ATTR_SADDLESTITCH_REF - Referencia de cosido por el lomov ATTR_SAVE - Guardar archivo en spoolv ATTR_SRCDRWR - Bandeja del papelv ATTR_SPOOL - Poner los datos en spoolv ATTR_SCHEDULE - Planificacioacuten de salida en spoolv ATTR_STARTPAGE - Paacutegina inicialv ATTR_DESCRIPTION - Texto descriptivov ATTR_UNITOFMEAS - Unidad de medidav ATTR_USERDATA - Datos de usuariov ATTR_USRDEFDATA - Datos definidos por usuariov ATTR_USRDEFOPT - Opciones definidas por el usuariov ATTR_USER_DEFINED_OBJECT - Nombre del sistema de archivos integrado del objeto definido por
el usuario
Establecer atributos
Pueden establecerse los atributos siguientes para un archivo de impresora empleando el meacutetodosetAttributes()v ATTR_ALIGN - Alinear paacuteginav ATTR_BKMGN_ACR - Desplazamiento a traveacutes de margen reversov ATTR_BKMGN_DWN - Desplazamiento abajo de margen reversov ATTR_BACK_OVERLAY - Nombre del sistema de archivos integrado del preformato reversov ATTR_BKOVL_DWN - Desplazamiento abajo de preformato reversov ATTR_BKOVL_ACR - Desplazamiento a traveacutes de preformato reversov ATTR_CPI - Caracteres por pulgadav ATTR_CODEDFNTLIB - Nombre de biblioteca de font codificadov ATTR_CODEPAGE - Paacutegina de coacutedigosv ATTR_CODEDFNT - Nombre de font codificadov ATTR_CONTROLCHAR - Caraacutecter de controlv ATTR_CONVERT_LINEDATA - Convertir datos de liacuteneav ATTR_COPIES - Copiasv ATTR_CORNER_STAPLE - Grapa en esquinav ATTR_DBCSDATA - Datos DBCS especificados por usuariov ATTR_DBCSEXTENSN - Caracteres de extensioacuten DBCS
112 IBM Toolbox para Java IBM Toolbox para Java
v ATTR_DBCSROTATE - Rotacioacuten de caracteres DBCSv ATTR_DBCSCPI - Caracteres DBCS por pulgadav ATTR_DBCSSISO - Espaciado DBCS SOSIv ATTR_DFR_WRITE - Diferir escriturav ATTR_PAGRTT - Grados de rotacioacuten de paacuteginav ATTR_EDGESTITCH_NUMSTAPLES - Nuacutemero de grapas de ligadura de bordesv ATTR_EDGESTITCH_REF - Referencia de ligadura de bordesv ATTR_EDGESTITCH_REFOFF - Desplazamiento de referencia de ligadura de bordesv ATTR_ENDPAGE - Paacutegina finalv ATTR_FILESEP - Separadores de archivov ATTR_FOLDREC - Acomodar registrosv ATTR_FONTID - Identificador de fontv ATTR_FORM_DEFINITION - Nombre del sistema de archivos integrado de la definicioacuten de formulariov ATTR_FORMFEED - Alimentacioacuten de papelv ATTR_FORMTYPE - Tipo de formulariov ATTR_FTMGN_ACR - Desplazamiento a traveacutes de margen anversov ATTR_FTMGN_DWN - Desplazamiento abajo de margen anversov ATTR_FRONT_OVERLAY - Nombre del sistema de archivos integrado del preformato anversov ATTR_FTOVL_ACR - Desplazamiento a traveacutes de preformato anversov ATTR_FTOVL_DWN - Desplazamiento abajo de preformato anversov ATTR_CHAR_ID - Juego de caracteres graacuteficosv ATTR_JUSTIFY - Alineacioacuten de hardwarev ATTR_HOLD - Retener archivo en spoolv ATTR_LPI - Liacuteneas por pulgadav ATTR_MAXRCDS - Maacuteximo de registros de salida en spoolv ATTR_OUTPTY - Prioridad de salidav ATTR_OUTPUT_QUEUE - Nombre del sistema de archivos integrado de la cola de salidav ATTR_OVERFLOW - Nuacutemero de liacutenea de desbordamientov ATTR_PAGE_DEFINITION - Nombre del sistema de archivos integrado de la definicioacuten de paacuteginav ATTR_PAGELEN - Longitud de paacuteginav ATTR_MEASMETHOD - Meacutetodo de medidav ATTR_PAGEWIDTH - Anchura de paacuteginav ATTR_MULTIUP - Paacuteginas por carav ATTR_POINTSIZE - Cuerpov ATTR_FIDELITY - Fidelidad de impresioacutenv ATTR_DUPLEX - Imprimir en ambas carasv ATTR_PRTQUALITY - Calidad de impresioacutenv ATTR_PRTTEXT - Texto de impresioacutenv ATTR_PRINTER - Impresorav ATTR_PRTDEVTYPE - Tipo de dispositivo de impresorav ATTR_RPLUNPRT - Sustituir caracteres no imprimiblesv ATTR_RPLCHAR - Caraacutecter de sustitucioacutenv ATTR_SADDLESTITCH_NUMSTAPLES - Nuacutemero de grapas de cosido por el lomov ATTR_SADDLESTITCH_REF - Referencia de cosido por el lomov ATTR_SAVE - Guardar archivo en spool
IBM Toolbox para Java 113
v ATTR_SRCDRWR - Bandeja del papelv ATTR_SPOOL - Poner los datos en spoolv ATTR_SCHEDULE - Planificacioacuten de salida en spoolv ATTR_STARTPAGE - Paacutegina inicialv ATTR_DESCRIPTION - Texto descriptivov ATTR_UNITOFMEAS - Unidad de medidav ATTR_USERDATA - Datos de usuariov ATTR_USRDEFDATA - Datos definidos por usuariov ATTR_USRDEFOPT - Opciones definidas por el usuariov ATTR_USER_DEFINED_OBJECT - Nombre del sistema de archivos integrado del objeto definido por
el usuario
Atributos de archivo en spool
Este tema indica los atributos que pueden recuperarse y establecerse para un archivo en spool
Recuperar atributos
Pueden recuperarse los atributos siguientes para un archivo en spool empleando el meacutetodogetIntegerAttribute() getStringAttribute() o getFloatAttribute() adecuadov ATTR_AFP - Funciones avanzadas de impresioacutenv ATTR_ALIGN - Alinear paacuteginav ATTR_BKMGN_ACR - Desplazamiento a traveacutes de preformato reversov ATTR_BKMGN_DWN - Desplazamiento abajo de preformato reversov ATTR_BACK_OVERLAY - Nombre del sistema de archivos integrado del preformato reversov ATTR_BKOVL_DWN - Desplazamiento abajo de preformato reversov ATTR_BKOVL_ACR - Desplazamiento a traveacutes de preformato reversov ATTR_CPI - Caracteres por pulgadav ATTR_CODEDFNTLIB - Nombre de biblioteca de font codificadov ATTR_CODEDFNT - Nombre de font codificadov ATTR_CODEPAGE - Paacutegina de coacutedigosv ATTR_CONTROLCHAR - Caraacutecter de controlv ATTR_COPIES - Copiasv ATTR_COPIESLEFT - Copias dejadas para producirv ATTR_CORNER_STAPLE - Grapa en esquinav ATTR_CURPAGE - Paacutegina actualv ATTR_DATE - Fecha de creacioacuten del objetov ATTR_DATE_WTR_BEGAN_FILE - Fecha en que el transcriptor empezoacute a procesar el archivo en spoolv ATTR_DATE_WTR_CMPL_FILE - Fecha en que el transcriptor terminoacute de procesar el archivo en spoolv ATTR_DBCSDATA - Datos DBCS especificados por usuariov ATTR_DBCSEXTENSN - Caracteres de extensioacuten DBCSv ATTR_DBCSROTATE - Rotacioacuten de caracteres DBCSv ATTR_DBCSCPI - Caracteres DBCS por pulgadav ATTR_DBCSSISO - Espaciado DBCS SOSIv ATTR_PAGRTT - Grados de rotacioacuten de paacuteginav ATTR_EDGESTITCH_NUMSTAPLES - Nuacutemero de grapas de ligadura de bordesv ATTR_EDGESTITCH_REF - Referencia de ligadura de bordes
114 IBM Toolbox para Java IBM Toolbox para Java
v ATTR_EDGESTITCH_REFOFF - Desplazamiento de referencia de ligadura de bordesv ATTR_ENDPAGE - Paacutegina finalv ATTR_FILESEP - Separadores de archivov ATTR_FOLDREC - Acomodar registrosv ATTR_FONTID - Identificador de fontv ATTR_FORM_DEFINITION - Nombre del sistema de archivos integrado de la definicioacuten de formulariov ATTR_FORMFEED - Alimentacioacuten de papelv ATTR_FORMTYPE - Tipo de formulariov ATTR_FTMGN_ACR - Desplazamiento a traveacutes de margen anversov ATTR_FTMGN_DWN - Desplazamiento abajo de margen anversov ATTR_FRONTSIDE_OVERLAY - Nombre del sistema de archivos integrado del preformato anversov ATTR_FTOVL_ACR - Desplazamiento a traveacutes de preformato anversov ATTR_FTOVL_DWN - Desplazamiento abajo de preformato anversov ATTR_CHAR_ID - Juego de caracteres graacuteficosv ATTR_JUSTIFY - Alineacioacuten de hardwarev ATTR_HOLD - Retener archivo en spoolv ATTR_IPP_ATTR_CHARSET - Atributos IPP - juego de caracteresv ATTR_IPP_JOB_ID - ID de trabajo IPPv ATTR_IPP_JOB_NAME - Nombre de trabajo IPPv ATTR_IPP_JOB_NAME_NL - NL de nombre de trabajo IPPv ATTR_IPP_JOB_ORIGUSER - Nombre de usuario emisor de trabajo IPPv ATTR_IPP_JOB_ORIGUSER_NL - NL de nombre de usuario emisor de trabajo IPPv ATTR_IPP_PRINTER_NAME - Nombre de impresora IPPv ATTR_JOBNAME - Nombre de trabajov ATTR_JOBNUMBER - Nuacutemero de trabajov ATTR_JOBUSER - Usuario de trabajov ATTR_JOB_SYSTEM - Sistema de trabajov ATTR_LASTPAGE - Uacuteltima paacutegina impresav ATTR_LINESPACING - Interlineadov ATTR_LPI - Liacuteneas por pulgadav ATTR_MAXRCDS - Maacuteximo de registros de salida en spoolv ATTR_PAGELEN - Longitud de paacuteginav ATTR_PAGEWIDTH - Anchura de paacuteginav ATTR_MEASMETHOD - Meacutetodo de medidav ATTR_NETWORK - Identificador de redv ATTR_NUMBYTES - Nuacutemero de bytes de lecturaescriturav ATTR_OUTPUTBIN - Bandeja de salidav ATTR_OUTPTY - Prioridad de salidav ATTR_OUTPUT_QUEUE - Nombre del sistema de archivos integrado de la cola de salidav ATTR_OVERFLOW - Nuacutemero de liacutenea de desbordamientov ATTR_MULTIUP - Paacuteginas por carav ATTR_POINTSIZE - Cuerpov ATTR_FIDELITY - Fidelidad de impresioacutenv ATTR_DUPLEX - Imprimir en ambas carasv ATTR_PRTQUALITY - Calidad de impresioacuten
IBM Toolbox para Java 115
v ATTR_PRTTEXT - Texto de impresioacutenv ATTR_PRINTER - Impresorav ATTR_PRTASSIGNED - Impresora asignadav ATTR_PRTDEVTYPE - Tipo de dispositivo de impresorav ATTR_PRINTER_FILE - Nombre del sistema de archivos integrado del archivo de impresorav ATTR_RECLENGTH - Longitud de registrov ATTR_REDUCE - Reducir salidav ATTR_RPLUNPRT - Sustituir caracteres no imprimiblesv ATTR_RPLCHAR - Caraacutecter de sustitucioacutenv ATTR_RESTART - Reiniciar impresioacutenv ATTR_SADDLESTITCH_NUMSTAPLES - Nuacutemero de grapas de cosido por el lomov ATTR_SADDLESTITCH_REF - Referencia de cosido por el lomov ATTR_SAVE - Guardar archivo en spoolv ATTR_SRCDRWR - Bandeja del papelv ATTR_SPOOLFILE - Nombre de archivo en spoolv ATTR_SPLFNUM - Nuacutemero de archivo en spoolv ATTR_SPLFSTATUS - Estado de archivo en spoolv ATTR_SCHEDULE - Planificacioacuten de salida en spoolv ATTR_STARTPAGE - Paacutegina inicialv ATTR_SYSTEM - Sistema en el que se ha creadov ATTR_TIME - Hora de creacioacuten del objetov ATTR_TIME_WTR_BEGAN_FILE - Hora en que el transcriptor empezoacute a procesar el archivo en spoolv ATTR_TIME_WTR_CMPL_FILE - Hora en que el transcriptor terminoacute de procesar el archivo en spoolv ATTR_PAGES - Total de paacuteginasv ATTR_UNITOFMEAS - Unidad de medidav ATTR_USERCMT - Comentario de usuariov ATTR_USERDATA - Datos de usuariov ATTR_USRDEFDATA - Datos definidos por usuariov ATTR_USRDEFFILE - Archivo definido por usuariov ATTR_USRDEFOPT - Opciones definidas por el usuariov ATTR_USER_DEFINED_OBJECT - Nombre del sistema de archivos integrado del objeto definido por
el usuario
Establecer atributos
Pueden establecerse los atributos siguientes para un archivo en spool empleando el meacutetodosetAttributes()v ATTR_ALIGN - Alinear paacuteginav ATTR_BACK_OVERLAY - Nombre del sistema de archivos integrado del preformato reversov ATTR_BKOVL_DWN - Desplazamiento abajo de preformato reversov ATTR_BKOVL_ACR - Desplazamiento a traveacutes de preformato reversov ATTR_COPIES - Copiasv ATTR_ENDPAGE - Paacutegina finalv ATTR_FILESEP - Separadores de archivov ATTR_FORM_DEFINITION - Nombre del sistema de archivos integrado de la definicioacuten de formulariov ATTR_FORMFEED - Alimentacioacuten de papel
116 IBM Toolbox para Java IBM Toolbox para Java
v ATTR_FORMTYPE - Tipo de formulariov ATTR_FRONTSIDE_OVERLAY - Nombre del sistema de archivos integrado del preformato anversov ATTR_FTOVL_ACR - Desplazamiento a traveacutes de preformato anversov ATTR_FTOVL_DWN - Desplazamiento abajo de preformato anversov ATTR_OUTPTY - Prioridad de salidav ATTR_OUTPUT_QUEUE - Nombre del sistema de archivos integrado de la cola de salidav ATTR_MULTIUP - Paacuteginas por carav ATTR_FIDELITY - Fidelidad de impresioacutenv ATTR_DUPLEX - Imprimir en ambas carasv ATTR_PRTQUALITY - Calidad de impresioacutenv ATTR_PRTSEQUENCE - Secuencia de impresioacutenv ATTR_PRINTER - Impresorav ATTR_RESTART - Reiniciar impresioacutenv ATTR_SAVE - Guardar archivo en spoolv ATTR_SCHEDULE - Planificacioacuten de salida en spoolv ATTR_STARTPAGE - Paacutegina inicialv ATTR_USERDATA - Datos de usuariov ATTR_USRDEFOPT - Opciones definidas por el usuariov ATTR_USER_DEFINED_OBJECT - Nombre del sistema de archivos integrado del objeto definido por
el usuario
Atributos de trabajo de transcriptor
Este tema indica los atributos para trabajos de transcriptor
Recuperar atributos
Pueden recuperarse los atributos siguientes para un trabajo de transcriptor empleando el meacutetodogetIntegerAttribute() getStringAttribute() o getFloatAttribute() adecuadov ATTR_WTRJOBNAME - Nombre de trabajo del transcriptorv ATTR_WTRJOBNUM - Nuacutemero de trabajo del transcriptorv ATTR_WTRJOBSTS - Estado del trabajo del transcriptorv ATTR_WTRJOBUSER - Nombre de usuario del trabajo del transcriptor
Establecer atributos
No estaacute permitido establecer atributos para un trabajo de transcriptor
Atributos de objeto de impresioacuten
Este tema indica los atributos disponibles para objetos de impresioacutenv Funciones avanzadas de impresioacutenv Recurso AFPv Alinear formulariosv Alinear paacuteginav Permitir impresioacuten directav Autorizacioacutenv Autorizacioacuten para comprobarv Finalizar transcriptor automaacuteticamente
IBM Toolbox para Java 117
v Almacenamiento auxiliarv Desplazamiento a traveacutes de margen reversov Desplazamiento abajo de margen reversov Preformato reversov Desplazamiento a traveacutes de preformato reversov Desplazamiento abajo de preformato reversov Estado entre copiasv Estado entre archivosv Cambiosv Caracteres por pulgadav Paacutegina de coacutedigosv Nombre de font codificadov Nombre de biblioteca de font codificadov Caraacutecter de controlv Convertir datos de liacuteneav Copiasv Copias dejadas para producirv Grapa en esquinav Paacutegina actualv Formato de datosv Cola de datosv Fecha de apertura de archivov Fecha de finalizacioacuten del trabajo de creacioacuten de archivo en spoolv Fecha en que el transcriptor empezoacute a procesar el archivo en spoolv Fecha en que el transcriptor terminoacute de procesar el archivo en spoolv Datos DBCS especificados por usuariov Caracteres de extensioacuten DBCSv Rotacioacuten de caracteres DBCSv Caracteres DBCS por pulgadav Espaciado DBCS SOSIv Diferir escriturav Grados de rotacioacuten de paacuteginav Suprimir archivo tras enviacuteov Opcioacuten de destinov Tipo de destinov Clase de dispositivov Modelo de dispositivov Estado de dispositivov Tipo de dispositivov Visualizar cualquier archivov Bandeja de separadoresv Nuacutemero de grapas de ligadura de bordesv Referencia de ligadura de bordesv Desplazamiento de referencia de ligadura de bordesv Estado pendiente de finalizacioacuten
118 IBM Toolbox para Java IBM Toolbox para Java
v Paacutegina finalv Origen de sobresv Separadores de archivov Acomodar registrosv Identificador de fontv Definicioacuten de formulariov Alimentacioacuten de papelv Tipo de formulariov Opcioacuten de mensaje de tipo de formulariov Desplazamiento a traveacutes de margen anversov Desplazamiento abajo de margen anversov Preformato anversov Desplazamiento a traveacutes de preformato anversov Desplazamiento abajo de preformato anversov Juego de caracteres graacuteficosv Alineacioacuten de hardwarev Estado de retenidov Retener archivo en spoolv Estado pendiente de retencioacutenv Configuracioacuten de la imagenv Inicializar el transcriptorv Direccioacuten Internetv Atributos IPP - juego de caracteresv ID de trabajo IPPv Nombre de trabajo IPPv NL de nombre de trabajo IPPv Nombre de usuario emisor de trabajo IPPv NL de nombre de usuario emisor de trabajo IPPv Nombre de impresora IPPv Nombre de trabajov Nuacutemero de trabajov Separadores de trabajov Sistema de trabajov Usuario de trabajov Uacuteltima paacutegina impresav Longitud de paacuteginav Nombre de bibliotecav Liacuteneas por pulgadav Interlineadov Tipo y modelo del fabricantev Maacuteximo de trabajos por lista de clientesv Maacuteximo de registros de salida en spoolv Meacutetodo de medidav Ayuda para mensajesv ID de mensaje
IBM Toolbox para Java 119
v Cola de mensajesv Respuesta a mensajev Texto de mensajev Tipo de mensajev Gravedad de mensajev Posibilidad de respuesta a varios elementosv Identificador de redv Atributos de objeto de servidor de impresioacuten de redv Nuacutemero de bytes del archivo en spoolv Nuacutemero de bytes de lecturaescriturav Nuacutemero de archivosv Nuacutemero de transcriptores iniciados para la colav Atributo de objeto ampliadov Estado de en cola de trabajosv Mandatos de tiempo de aperturav Controlado por el operadorv Orden de archivos en colav Bandeja de salidav Prioridad de salidav Cola de salidav Estado de la cola de salidav Estado globalv Nuacutemero de liacutenea de desbordamientov Una paacutegina cada vezv Nuacutemero de paacuteginas estimadov Definicioacuten de paacuteginav Nuacutemero de paacuteginav Paacuteginas por carav Cargador de papel 1v Cargador de papel 2v Densidad de pelv Cuerpov Fidelidad de impresioacutenv Imprimir en ambas carasv Calidad de impresioacutenv Secuencia de impresioacutenv Texto de impresioacutenv Impresorav Impresora asignadav Tipo de dispositivo de impresorav Archivo de impresorav Cola de impresorav Color de informacioacuten de publicacioacuten soportadov Paacuteginas por minuto de informacioacuten de publicacioacuten (color)v Paacuteginas por minuto de informacioacuten de publicacioacuten (monocromo)
120 IBM Toolbox para Java IBM Toolbox para Java
v Soporte duacuteplex de informacioacuten de publicacioacutenv Ubicacioacuten de informacioacuten de publicacioacutenv Nombre de ubicacioacuten remotav Longitud de registrov Reducir salidav Sistema remotov Sustituir caracteres no imprimiblesv Caraacutecter de sustitucioacutenv Reiniciar impresioacutenv Nuacutemero de grapas de cosido por el lomov Referencia de cosido por el lomov Guardar archivo en spoolv Desplazamiento de buacutesquedav Origen de buacutesquedav Prioridad de enviacuteov Paacutegina de separacioacutenv Bandeja del papelv SCS en spoolv Poner los datos en spoolv Meacutetodo de autenticacioacuten de creacioacuten de archivo en spoolv Meacutetodo de seguridad de creacioacuten de archivo en spoolv Nombre de archivo en spoolv Nuacutemero de archivo en spoolv Estado de archivo en spoolv Planificacioacuten de salida en spoolv Iniciado por usuariov Paacutegina inicialv Sistema en el que se ha creadov Texto descriptivov Hora de apertura de archivov Hora de finalizacioacuten del trabajo de creacioacuten de archivo en spoolv Hora en que el transcriptor empezoacute a procesar el archivo en spoolv Hora en que el transcriptor terminoacute de procesar el archivo en spoolv Total de paacuteginasv Transformar SCS en ASCIIv Unidad de medidav Comentario de usuariov Datos de usuariov Datos definidos por usuariov Archivo definido por usuariov Objeto definido por usuariov Opciones definidas por el usuariov Datos de programa controlador de usuariov Programa controlador de usuariov ID de usuario
IBM Toolbox para Java 121
v Direccioacuten de ID de usuariov Programa de transformacioacuten de usuariov Fidelidad de visualizacioacutenv Clase VMMVSv Estado de en espera de datosv Estado de en espera de dispositivov Estado de en espera de mensajev Cuaacutendo finalizar transcriptor automaacuteticamentev Cuaacutendo finalizar transcriptorv Cuaacutendo retener archivov Anchura de paacuteginav Objeto de personalizacioacuten de estacioacuten de trabajov Nombre de trabajo del transcriptorv Nuacutemero de trabajo del transcriptorv Estado del trabajo del transcriptorv Nombre de usuario del trabajo del transcriptorv Transcriptor iniciadov Paacutegina inicial de transcriptorv Estado de transcribiendov CCSID NPSv Nivel de NPS
Funciones avanzadas de impresioacuten
ID ATTR_AFP
Tipo String
DescripcioacutenIndica si este archivo en spool utiliza recursos de AFP externos al archivo en spool Los valoresvaacutelidos son YES y NO
Recurso AFP
ID ATTR_AFP_RESOURCE
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado del recurso de AFP (funciones avanzadas deimpresioacuten) externo El formato de la viacutea de acceso del sistema de archivos integrado esQSYSLIBbibliotecaLIBrecursotipo donde biblioteca es la biblioteca que contiene el recursorecurso es el nombre del recurso y tipo es el tipo de recurso Los valores vaacutelidos de tipo sonFNTRSC FORMDF OVL PAGSEG y PAGDFN
Alinear formularios
ID ATTR_ALIGNFORMS
Tipo String
DescripcioacutenMomento en que se enviaraacute un mensaje de alineacioacuten de formularios Los valores vaacutelidos sonWTR FILE FIRST
122 IBM Toolbox para Java IBM Toolbox para Java
Alinear paacutegina
ID ATTR_ALIGN
Tipo String
DescripcioacutenIndica si se enviacutea un mensaje de alineacioacuten de formularios antes de imprimir este archivo enspool Los valores vaacutelidos son YES NO
Permitir impresioacuten directa
ID ATTR_ALWDRTPRT
Tipo String
DescripcioacutenIndica si el transcriptor de impresora permite que se asigne la impresora a un trabajo queimprime directamente en una impresora Los valores vaacutelidos son YES NO
Autorizacioacuten
ID ATTR_AUT
Tipo String
DescripcioacutenEspecifica la autorizacioacuten que se da a los usuarios que no tienen una autorizacioacuten especiacutefica parala cola de salida Los valores vaacutelidos son USE ALL CHANGE EXCLUDE LIBCRTAUT
Autorizacioacuten para comprobar
ID ATTR_AUTCHK
Tipo String
DescripcioacutenIndica queacute tipo de autorizaciones para la cola de salida permiten al usuario controlar todos losarchivos de la cola de salida Los valores vaacutelidos son OWNER DTAAUT
Finalizar transcriptor automaacuteticamente
ID ATTR_AUTOEND
Tipo String
DescripcioacutenEspecifica si el transcriptor debe finalizarse automaacuteticamente Los valores vaacutelidos son NO YES
Almacenamiento auxiliar
ID ATTR_AUX_POOL
Tipo Integer
DescripcioacutenEspecifica el nuacutemero de la agrupacioacuten de almacenamiento auxiliar (ASP) en la que se almacena elarchivo en spool Los valores posibles sonv 1 ASP del sistemav 2-32 Una de las ASP del usuario
Desplazamiento a traveacutes de margen reverso
ID ATTR_BACKMGN_ACR
IBM Toolbox para Java 123
Tipo Float
DescripcioacutenEspecifica la distancia respecto a la parte izquierda de la paacutegina donde se inicia la impresioacuten enel reverso de una hoja de papel El valor especial FRONTMGN se codificaraacute como -1
Desplazamiento abajo de margen reverso
ID ATTR_BACKMGN_DWN
Tipo Float
DescripcioacutenEspecifica la distancia respecto a la parte superior de la paacutegina donde se inicia la impresioacuten en elreverso de una hoja de papel El valor especial FRONTMGN se codificaraacute como -1
Preformato reverso
ID ATTR_BACK_OVERLAY
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado del preformato reverso o un valor especial Si elvalor es una viacutea de acceso del sistema de archivos integrado tendraacute el formatoQSYSLIBbibliotecaLIBpreformatoOVL donde biblioteca es la biblioteca del recurso ypreformato es el nombre del preformato Los valores especiales vaacutelidos son FRONTOVL
Desplazamiento a traveacutes de preformato reverso
ID ATTR_BKOVL_ACR
Tipo Float
DescripcioacutenDesplazamiento horizontal desde el punto de origen en que se imprime el preformato
Desplazamiento abajo de preformato reverso
ID ATTR_BKOVL_DWN
Tipo Float
DescripcioacutenDesplazamiento vertical desde el punto de origen en que se imprime el preformato
Estado entre copias
ID ATTR_BTWNCPYSTS
Tipo String
DescripcioacutenIndica si el transcriptor se encuentra entre copias de un archivo en spool de varias copias Losvalores devueltos son YES o NO
Estado entre archivos
ID ATTR_BTWNFILESTS
Tipo String
DescripcioacutenIndica si el transcriptor se encuentra entre archivos Los valores devueltos son YES o NO
124 IBM Toolbox para Java IBM Toolbox para Java
Cambios
ID ATTR_CHANGES
Tipo String
DescripcioacutenMomento en que entran en vigor los cambios pendientes Los valores vaacutelidos son NORDYFFILEEND o un blanco para indicar que no hay cambios pendientes en el transcriptor
Caracteres por pulgada
ID ATTR_CPI
Tipo Float
DescripcioacutenNuacutemero de caracteres por pulgada horizontal
Paacutegina de coacutedigos
ID ATTR_CODEPAGE
Tipo String
DescripcioacutenCorrelacioacuten de caracteres graacuteficos con puntos de coacutedigo para este archivo en spool Si el campode juego de caracteres graacuteficos contiene un valor especial este campo puede contener un cero (0)
Nombre de font codificado
ID ATTR_CODEDFNT
Tipo String
DescripcioacutenNombre del font codificado Un font codificado es un recurso de AFP que estaacute formado por unjuego de caracteres y una paacutegina de coacutedigos Los valores especiales son FNTCHRSET
Nombre de biblioteca de font codificado
ID ATTR_CODEDFNTLIB
Tipo String
DescripcioacutenNombre de la biblioteca que contiene el font codificado Este campo puede contener blancos si elcampo de nombre de font codificado tiene un valor especial
Caraacutecter de control
ID ATTR_CONTROLCHAR
Tipo String
DescripcioacutenIndica si este archivo utiliza el caraacutecter de control de impresora Estaacutendar nacional americano Losvalores posibles son NONE para que no se pase ninguacuten caraacutecter de control de impresioacuten en losdatos que se imprimen o FCFC para que el primer caraacutecter de cada registro sea un caraacutecter decontrol de impresora Estaacutendar nacional americano
Convertir datos de liacutenea
ID ATTR_CONVERT_LINEDATA
Tipo String
IBM Toolbox para Java 125
DescripcioacutenIndica si los datos de liacutenea se convierten en AFPDS antes de escribirse en el spool Los valoresposibles son NO y YES
Copias
ID ATTR_COPIES
Tipo Integer
DescripcioacutenNuacutemero total de copias que se generaraacuten para este archivo en spool
Copias dejadas para producir
ID ATTR_COPIESLEFT
Tipo Integer
DescripcioacutenNuacutemero restante de copias que se generaraacuten para este archivo en spool
Grapa en esquina
ID ATTR_CORNER_STAPLE
Tipo String
DescripcioacutenEsquina de referencia que se utilizaraacute para grapar una esquina Las grapas se colocan en laesquina de referencia del medio Los valores vaacutelidos son NONE DEVD BOTRIGHTTOPRIGHT TOPLEFT y BOTLEFT
Paacutegina actual
ID ATTR_CURPAGE
Tipo Integer
DescripcioacutenPaacutegina actual que escribe el trabajo del transcriptor
Formato de datos
ID ATTR_DATAFORMAT
Tipo String
DescripcioacutenFormato de datos Los valores vaacutelidos son RCDDATA ALLDATA
Cola de datos
ID ATTR_DATA_QUEUE
Tipo String
DescripcioacutenEspecifica la viacutea de acceso del sistema de archivos integrado de la cola de datos que estaacute asociadaa la cola de salida o NONE si no hay ninguna cola de datos asociada a la cola de salida Elformato de la viacutea de acceso del sistema de archivos integrado es QSYSLIBbibliotecaLIBcoladatosDTAQ donde biblioteca es la biblioteca que contiene la cola de datos y coladatos es elnombre de la cola de datos
126 IBM Toolbox para Java IBM Toolbox para Java
Fecha de apertura de archivo
ID ATTR_DATE
Tipo String
DescripcioacutenEn el caso de los archivos en spool fecha en que se abrioacute el archivo en spool En el caso de losrecursos de AFP fecha de la uacuteltima modificacioacuten del objeto La fecha se codifica en una serie decaracteres con el formato siguiente S AA MM DD
Fecha de finalizacioacuten del trabajo de creacioacuten de archivo en spool
ID ATTR_DATE_END
Tipo String
DescripcioacutenFecha en la que ha finalizado el trabajo que ha creado el archivo en spool en el sistema Si elcampo de fecha de inicio de creacioacuten del archivo en spool estaacute establecido en ALL este campodebe establecerse en blancos Si se ha especificado una fecha para el campo de inicio de creacioacutendel archivo en spool este campo debe establecerse en una fecha vaacutelida La fecha debe tener elformato SAAMMDD o ser uno de los valores especiales siguientesv LAST deben devolverse todos los archivos en spool con una fecha y una hora de creacioacuten
igual o posterior a la fecha de inicio de creacioacuten de archivo en spoolv Fecha deben devolverse todos los archivos en spool con una fecha y una hora de creacioacuten
igual o posterior a la fecha y la hora de inicio de creacioacuten de archivo en spool e igual o inferiora la fecha y la hora de finalizacioacuten de creacioacuten de archivo en spool
El formato de fecha SAAMMDD se define del modo siguientev S es el siglo donde 0 indica los antildeos 19xx y 1 indica los antildeos 20xxv AA es el antildeov MM es el mesv DD es el diacutea
Fecha en que el transcriptor empezoacute a procesar el archivo en spool
ID ATTR_DATE_WTR_BEGAN_FILE
Tipo String
DescripcioacutenIndica la fecha en que el transcriptor empezoacute a procesar este archivo en spool La fecha secodifica en una serie de caracteres con el formato siguiente S AA MM DD
Fecha en que el transcriptor terminoacute de procesar el archivo en spool
ID ATTR_DATE_WTR_CMPL_FILE
Tipo String
DescripcioacutenIndica la fecha en que el transcriptor terminoacute de procesar este archivo en spool La fecha secodifica en una serie de caracteres con el formato siguiente S AA MM DD
Datos DBCS especificados por usuario
ID ATTR_DBCSDATA
Tipo String
IBM Toolbox para Java 127
DescripcioacutenIndica si el archivo en spool contiene datos DBCS (juego de caracteres de doble byte) Los valoresvaacutelidos son NO y YES
Caracteres de extensioacuten DBCS
ID ATTR_DBCSEXTENSN
Tipo String
DescripcioacutenIndica si el sistema debe procesar los caracteres de extensioacuten DBCS Los valores vaacutelidos son NOy YES
Rotacioacuten de caracteres DBCS
ID ATTR_DBCAROTATE
Tipo String
DescripcioacutenIndica si los caracteres DBCS se rotan 90 grados en el sentido contrario a las agujas del reloj antesde la impresioacuten Los valores vaacutelidos son NO y YES
Caracteres DBCS por pulgada
ID ATTR_DBCSCPI
Tipo Integer
DescripcioacutenNuacutemero de caracteres de doble byte que se imprimiraacuten por pulgada Los valores vaacutelidos son -1-2 5 6 y 10 El valor CPI se codifica como -1 El valor CONDENSED se codifica como -2
Espaciado DBCS SOSI
ID ATTR_DBCSSISO
Tipo String
DescripcioacutenDetermina la presentacioacuten de los caracteres de desplazamiento a teclado ideograacutefico y dedesplazamiento a teclado estaacutendar al imprimirse Los valores vaacutelidos son NO YES y RIGHT
Diferir escritura
ID ATTR_DFR_WRITE
Tipo String
DescripcioacutenIndica si los datos se retienen en los almacenamientos intermedios del sistema antes de escribirse
Grados de rotacioacuten de paacutegina
ID ATTR_PAGRTT
Tipo Integer
DescripcioacutenGrado de rotacioacuten del texto en la paacutegina en relacioacuten con la forma en que se carga el formularioen la impresora Los valores vaacutelidos son -1 -2 -3 0 90 180 270 El valor AUTO se codificacomo -1 el valor DEVD se codifica como -2 y el valor COR se codifica como -3
128 IBM Toolbox para Java IBM Toolbox para Java
Suprimir archivo tras enviacuteo
ID ATTR_DELETESPLF
Tipo String
DescripcioacutenIndica si debe suprimirse el archivo en spool despueacutes del enviacuteo Los valores vaacutelidos son NO yYES
Opcioacuten de destino
ID ATTR_DESTOPTION
Tipo String
DescripcioacutenOpcioacuten de destino Una serie de texto que permite al usuario pasar opciones al sistema receptor
Tipo de destino
ID ATTR_DESTINATION
Tipo String
DescripcioacutenTipo de destino Los valores vaacutelidos son OTHER AS400 PSF2
Clase de dispositivo
ID ATTR_DEVCLASS
Tipo String
DescripcioacutenClase de dispositivo
Modelo de dispositivo
ID ATTR_DEVMODEL
Tipo String
DescripcioacutenNuacutemero de modelo del dispositivo
Estado de dispositivo
ID ATTR_DEVSTATUS
Tipo Integer
DescripcioacutenEstado del dispositivo de impresora Los valores vaacutelidos son 0 (desactivado) 10 (pendiente dedesactivacioacuten) 20 (pendiente de activacioacuten) 30 (activado) 40 (pendiente de conexioacuten) 60 (activo)66 (transcriptor activo) 70 (retenido) 75 (apagado) 80 (pendiente de recuperacioacuten) 90(recuperacioacuten cancelada) 100 (anoacutemalo) 106 (transcriptor anoacutemalo) 110 (en servicio) 111(dantildeado) 112 (bloqueado) 113 (desconocido)
Tipo de dispositivo
ID ATTR_DEVTYPE
Tipo String
IBM Toolbox para Java 129
DescripcioacutenTipo de dispositivo
Visualizar cualquier archivo
ID ATTR_DISPLAYANY
Tipo String
DescripcioacutenIndica si los usuarios que tienen autorizacioacuten para leer esta cola de salida pueden visualizar losdatos de salida de cualquier archivo de salida de esta cola o uacutenicamente los datos de sus propiosarchivos Los valores vaacutelidos son YES NO OWNER
Bandeja de separadores
ID ATTR_DRWRSEP
Tipo Integer
DescripcioacutenIdentifica la bandeja de la que se tomaraacuten las paacuteginas de separacioacuten de trabajos y archivos Losvalores vaacutelidos son -1 -2 1 2 3 El valor FILE se codifica como -1 y el valor DEVD se codificacomo -2
Nuacutemero de grapas de ligadura de bordes
ID ATTR_EDGESTITCH_NUMSTAPLES
Tipo Integer
DescripcioacutenNuacutemero de grapas que van a colocarse a lo largo del borde de acabado
Referencia de ligadura de bordes
ID ATTR_EDGESTITCH_REF
Tipo String
DescripcioacutenLugar en que se colocaraacuten una o varias grapas en el medio a lo largo del borde de acabado Losvalores vaacutelidos son NONE DEVD BOTTOM RIGHT TOP y LEFT
Desplazamiento de referencia de ligadura de bordes
ID ATTR_EDGESTITCH_REFOFF
Tipo Float
DescripcioacutenDesplazamiento de la ligadura de bordes desde el borde de referencia hacia el centro del medio
Estado pendiente de finalizacioacuten
ID ATTR_ENDPNDSTS
Tipo String
DescripcioacutenIndica si se ha emitido un mandato Finalizar transcriptor (ENDWTR) para este transcriptor Losvalores posibles son NO (no se ha emitido ninguacuten mandato ENDWTR) IMMED (el transcriptorfinaliza tan pronto como sus almacenamientos intermedios de salida queden vaciacuteos) CTRLD (eltranscriptor finaliza una vez que se imprima la copia actual del archivo en spool) PAGEEND (eltranscriptor finaliza al final de la paacutegina)
130 IBM Toolbox para Java IBM Toolbox para Java
Paacutegina final
ID ATTR_ENDPAGE
Tipo Integer
DescripcioacutenNuacutemero de paacutegina en que finalizaraacute la impresioacuten del archivo en spool Los valores vaacutelidos son 0o el nuacutemero de paacutegina final El valor END se codifica como 0
Origen de sobres
ID ATTR_ENVLP_SOURCE
Tipo String
DescripcioacutenTamantildeo del sobre del origen de sobres Si no se especifica este campo o el valor no es vaacutelido seutilizaraacute el valor especial MFRTYPMDL Los valores vaacutelidos son NONE (no hay ninguacuten origende sobres) MFRTYPMDL (se utiliza el tamantildeo de sobre propuesto por el tipo y modelo delfabricante) MONARCH (3875 x 75 pulgadas) NUMBER9 (3875 x 8875 pulgadas)NUMBER10 (4125 x 95 pulgadas) B5 (176 mm x 250 mm) C5 (162 mm x 229 mm) DL (110mm x 220 mm)
Separadores de archivo
ID ATTR_FILESEP
Tipo Integer
DescripcioacutenNuacutemero de paacuteginas de separacioacuten de archivos que se colocan al principio de cada copia delarchivo en spool Los valores vaacutelidos son -1 o el nuacutemero de separadores El valor FILE secodifica como -1
Acomodar registros
ID ATTR_FOLDREC
Tipo String
DescripcioacutenIndica si los registros que superen la anchura de los formularios de impresora se acomodaraacuten a laliacutenea siguiente Los valores vaacutelidos son YES NO
Identificador de font
ID ATTR_FONTID
Tipo String
DescripcioacutenFont de impresora utilizado Los valores especiales vaacutelidos son CPI y DEVD
Definicioacuten de formulario
ID ATTR_FORM_DEFINITION
Tipo String
DescripcioacutenNombre de viacutea de acceso del sistema de archivos integrado de la definicioacuten de formulario o unvalor especial Si se especifica una viacutea de acceso del sistema de archivos integrado el formato es
IBM Toolbox para Java 131
QSYSLIBbibliotecaLIBdefformFORMDF donde biblioteca es la biblioteca de la definicioacuten deformulario y defform es el nombre de la definicioacuten de formulario Los valores especiales vaacutelidosson NONE INLINE INLINED y DEVD
Alimentacioacuten de papel
ID ATTR_FORMFEED
Tipo String
DescripcioacutenForma en que se produce la alimentacioacuten de papel en la impresora Los valores vaacutelidos sonCONT CUT AUTOCUT DEVD
Tipo de formulario
ID ATTR_FORMTYPE
Tipo String
DescripcioacutenTipo de formulario que se cargaraacute en la impresora para imprimir este archivo en spool
Opcioacuten de mensaje de tipo de formulario
ID ATTR_FORMTYPEMSG
Tipo String
DescripcioacutenOpcioacuten de mensaje para enviar un mensaje a la cola de mensajes del transcriptor cuando setermine el tipo de formulario actual Los valores vaacutelidos son MSG NOMSG INFOMSGINQMSG
Desplazamiento a traveacutes de margen anverso
ID ATTR_FTMGN_ACR
Tipo Float
DescripcioacutenEspecifica la distancia respecto a la parte izquierda de la paacutegina donde se inicia la impresioacuten enel anverso de una hoja de papel El valor especial DEVD se codifica como -2
Desplazamiento abajo de margen anverso
ID ATTR_FTMGN_DWN
Tipo Float
DescripcioacutenEspecifica la distancia respecto a la parte superior de la paacutegina donde se inicia la impresioacuten en elanverso de una hoja de papel El valor especial DEVD se codifica como -2
Preformato anverso
ID ATTR_FRONT_OVERLAY
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado del preformato anverso El formato de la viacutea deacceso del sistema de archivos integrado es QSYSLIBbibliotecaLIBpreformatoOVL dondebiblioteca es la biblioteca del recurso y preformato es el nombre del preformato La serie NONEse utiliza para indicar que no se especifica ninguacuten preformato anverso
132 IBM Toolbox para Java IBM Toolbox para Java
Desplazamiento a traveacutes de preformato anverso
ID ATTR_FTOVL_ACR
Tipo Float
DescripcioacutenDesplazamiento horizontal desde el punto de origen en que se imprime el preformato
Desplazamiento abajo de preformato anverso
ID ATTR_FTOVL_DWN
Tipo Float
DescripcioacutenDesplazamiento vertical desde el punto de origen en que se imprime el preformato
Juego de caracteres graacuteficos
ID ATTR_CHAR_ID
Tipo String
DescripcioacutenJuego de caracteres graacuteficos que se utilizaraacute al imprimir este archivo Los valores especialesvaacutelidos son DEVD SYSVAL y JOBCCSID
Alineacioacuten de hardware
ID ATTR_JUSTIFY
Tipo Integer
DescripcioacutenPorcentaje de alineacioacuten a la derecha de la salida Los valores vaacutelidos son 0 50 100
Estado de retenido
ID ATTR_HELDSTS
Tipo String
DescripcioacutenIndica si el transcriptor estaacute retenido Los valores vaacutelidos son YES NO
Retener archivo en spool
ID ATTR_HOLD
Tipo String
DescripcioacutenIndica si se retiene el archivo en spool Los valores vaacutelidos son YES NO
Estado pendiente de retencioacuten
ID ATTR_HOLDPNDSTS
Tipo String
DescripcioacutenIndica si se ha emitido un mandato Retener transcriptor (HLDWTR) para este transcriptor Losvalores posibles son NO (no se ha emitido ninguacuten mandato HLDWTR) IMMED (el transcriptorqueda retenido cuando sus almacenamientos intermedios de salida queden vaciacuteos) CTRLD (el
IBM Toolbox para Java 133
transcriptor queda retenido una vez que se imprima la copia actual del archivo en spool)PAGEEND (el transcriptor queda retenido al final de la paacutegina)
Configuracioacuten de la imagen
ID ATTR_IMGCFG
Tipo String
DescripcioacutenServicios de transformacioacuten para diversos formatos de corriente de datos de impresioacuten e imagen
Inicializar el transcriptor
ID ATTR_WTRINIT
Tipo String
DescripcioacutenEl usuario puede especificar cuaacutendo debe inicializarse el dispositivo de impresora Los valoresvaacutelidos son WTR FIRST ALL
Direccioacuten Internet
ID ATTR_INTERNETADDR
Tipo String
DescripcioacutenDireccioacuten Internet del sistema receptor
Atributos IPP - juego de caracteres
ID ATTR_IPP_ATTR_CHARSET
Tipo String
DescripcioacutenIndica el juego de caracteres (juego de caracteres codificado y meacutetodo de codificacioacuten) de losatributos del archivo en spool especificados por IPP
ID de trabajo IPP
ID ATTR_IPP_JOB_ID
Tipo Integer
DescripcioacutenID de trabajo IPP relativo a la impresora IPP que ha creado el trabajo
Nombre de trabajo IPP
ID ATTR_IPP_ATR_CHARSET
Tipo String
DescripcioacutenNombre del trabajo faacutecilmente reconocible por el usuario
NL de nombre de trabajo IPP
ID ATTR_IPP_JOB_NAME_NL
Tipo String
134 IBM Toolbox para Java IBM Toolbox para Java
DescripcioacutenIdioma natural del nombre de trabajo
Nombre de usuario emisor de trabajo IPP
ID ATTR_IPP_JOB_ORIGUSER
Tipo String
DescripcioacutenIdentifica el usuario final que emitioacute este trabajo IPP
NL de nombre de usuario emisor de trabajo IPP
ID ATTR_IPP_JOB_ORIGUSER_NL
Tipo String
DescripcioacutenIdentifica el idioma natural del nombre de usuario que originoacute el trabajo
Nombre de impresora IPP
ID ATTR_IPP_PRINTER_NAME
Tipo String
DescripcioacutenIdentifica la impresora IPP que creoacute este trabajo
Nombre de trabajo
ID ATTR_JOBNAME
Tipo String
DescripcioacutenNombre del trabajo que creoacute el archivo en spool
Nuacutemero de trabajo
ID ATTR_JOBNUMBER
Tipo String
DescripcioacutenNuacutemero del trabajo que creoacute el archivo en spool
Separadores de trabajo
ID ATTR_JOBSEPRATR
Tipo Integer
DescripcioacutenNuacutemero de separadores de trabajo que se colocaraacuten al principio de la salida para cada trabajoque tenga archivos en spool en esta cola de salida Los valores vaacutelidos son -2 0-9 El valor MSGse codifica como -2 Los separadores de trabajo se especifican cuando se crea la cola de salida
Sistema de trabajo
ID ATTR_JOBSYSTEM
Tipo String
IBM Toolbox para Java 135
DescripcioacutenEl sistema en el que se ejecutaba el trabajo que ha creado el archivo en spool
Usuario de trabajo
ID ATTR_JOBUSER
Tipo String
DescripcioacutenNombre del usuario que creoacute el archivo en spool
Uacuteltima paacutegina impresa
ID ATTR_LASTPAGE
Tipo Integer
DescripcioacutenEl nuacutemero de la uacuteltima paacutegina impresa es el archivo si la impresioacuten finalizoacute antes de que seterminara de procesar el trabajo
Longitud de paacutegina
ID ATTR_PAGELEN
Tipo Float
DescripcioacutenLongitud de una paacutegina Las unidades de medida se especifican en el atributo de meacutetodo demedida
Nombre de biblioteca
ID ATTR_LIBRARY
Tipo String
DescripcioacutenNombre de la biblioteca
Liacuteneas por pulgada
ID ATTR_LPI
Tipo Float
DescripcioacutenNuacutemero de liacuteneas por pulgada vertical del archivo en spool
Interlineado
ID ATTR_LINESPACING
Tipo String
DescripcioacutenIndica coacutemo se espacian los registros de datos de liacutenea de un archivo al imprimirse Lainformacioacuten se devuelve uacutenicamente para los archivos de tipos de dispositivo de impresoraLINE y AFPDSLINE Los valores vaacutelidos son SINGLE DOUBLE TRIPLE o CTLCHAR
Tipo y modelo del fabricante
ID ATTR_MFGTYPE
Tipo String
136 IBM Toolbox para Java IBM Toolbox para Java
DescripcioacutenEspecifica el fabricante el tipo y el modelo al transformar los datos de impresioacuten de SCS enASCII
Maacuteximo de trabajos por lista de clientes
ID ATTR_MAX_JOBS_PER_CLIENT
Tipo Integer
DescripcioacutenEl cliente lo proporciona para indicar el tamantildeo maacuteximo de la cola de impresora
Maacuteximo de registros de salida en spool
ID ATTR_MAXRECORDS
Tipo Integer
DescripcioacutenNuacutemero maacuteximo de registros permitidos en este archivo en el momento de abrirse El valorNOMAX se codifica como 0
Meacutetodo de medida
ID ATTR_MEASMETHOD
Tipo String
DescripcioacutenMeacutetodo de medida utilizado para los atributos de longitud de paacutegina y anchura de paacutegina Losvalores vaacutelidos son ROWCOL UOM
Ayuda para mensajes
ID ATTR_MSGHELP
Tipo char()
DescripcioacutenLa ayuda para mensajes que a veces se denomina texto de segundo nivel puede devolversemediante una peticioacuten de recuperacioacuten de mensaje El sistema limita la longitud a 3000 caracteres(la versioacuten en ingleacutes debe ser un 30 inferior para dar cabida a la traduccioacuten)
ID de mensaje
ID ATTR_MESSAGEID
Tipo String
DescripcioacutenID de mensaje
Cola de mensajes
ID ATTR_MESSAGE_QUEUE
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado de la cola de mensajes que el transcriptor empleapara los mensajes operativos El formato de la viacutea de acceso del sistema de archivos integrado esQSYSLIBbibliotecaLIBcolamensajesMSGQ donde biblioteca es la biblioteca que contiene lacola de mensajes y colamensajes es el nombre de la cola de mensajes
IBM Toolbox para Java 137
Respuesta a mensaje
ID ATTR_MSGREPLY
Tipo String
DescripcioacutenRespuesta al mensaje Es una serie de texto que debe proporcionar el cliente que responde a unmensaje de tipo consulta En el caso de un mensaje recuperado el servidor devuelve el valor delatributo con la respuesta predeterminada que puede utilizar el cliente El sistema limita lalongitud a 132 caracteres Debe terminar en nulo debido a la longitud variable
Texto de mensaje
ID ATTR_MSGTEXT
Tipo String
DescripcioacutenEl texto del mensaje que a veces se denomina texto de primer nivel puede devolverse medianteuna peticioacuten de recuperacioacuten de mensaje El sistema limita la longitud a 132 caracteres
Tipo de mensaje
ID ATTR_MSGTYPE
Tipo String
DescripcioacutenEl tipo de mensaje es una codificacioacuten EBCDIC de 2 diacutegitos Dos tipos de mensajes indican si sepuede responder a un mensaje recuperado 04 Los mensajes informativos proporcionaninformacioacuten sin solicitar una respuesta (pueden requerir una accioacuten correctiva) 05 Los mensajesde consulta proporcionan informacioacuten y solicitan una respuesta
Gravedad de mensaje
ID ATTR_MSGSEV
Tipo Integer
DescripcioacutenGravedad del mensaje Los valores abarcan del 00 al 99 Cuanto mayor es el valor mayor es lagravedad o importancia de la condicioacuten
Posibilidad de respuesta a varios elementos
ID ATTR_MULTI_ITEM_REPLY
Tipo String
DescripcioacutenSi el cliente establece el valor de este atributo en YES el rendimiento de las operaciones de listade archivo en spool puede mejorar en gran medida El valor predeterminado es NO
Identificador de red
ID ATTR_NETWORK
Tipo String
DescripcioacutenIdentificador de red del sistema en que se creoacute el archivo
138 IBM Toolbox para Java IBM Toolbox para Java
Nuacutemero de bytes del archivo en spool
ID ATTR_NUMBYTES_SPLF
Tipo Integer
DescripcioacutenNuacutemero total de bytes disponibles en la corriente o en el archivo en spool El valor indica elnuacutemero de bytes ANTES de que tenga lugar cualquier transformacioacuten de los datos Para darcabida a los archivos con un tamantildeo superior a 231 - 1 bytes este valor se escala el usuariodebe multiplicar el valor por 10 K para obtener el nuacutemero real de bytes Este atributo no esvaacutelido para los archivos en spool que se visualizan en la modalidad de una paacutegina cada vez
Nuacutemero de bytes de lecturaescritura
ID ATTR_NUMBYTES
Tipo Integer
DescripcioacutenNuacutemero de bytes de una operacioacuten de lectura o de escritura La accioacuten del objeto determinacoacutemo interpretar este atributo
Nuacutemero de archivos
ID ATTR_NUMFILES
Tipo Integer
DescripcioacutenNuacutemero de archivos en spool que existen en la cola de salida
Nuacutemero de transcriptores iniciados para la cola
ID ATTR_NUMWRITERS
Tipo Integer
DescripcioacutenNuacutemero de trabajos de transcriptor iniciados para la cola de salida
Atributo de objeto ampliado
ID ATTR_OBJEXTATTR
Tipo String
DescripcioacutenAtributo ampliado utilizado por algunos objetos como los recursos de font Este valor sevisualiza mediante los mandatos WRKOBJ y DSPOBJD en el servidor El tiacutetulo de una pantalla deservidor puede indicar uacutenicamente Atributo En el caso de los tipos de objeto de recursos defont por ejemplo los valores comunes son CDEPAG CDEFNT y FNTCHRSET
Estado de en cola de trabajos
ID ATTR_ONJOBQSTS
Tipo String
DescripcioacutenIndica si el transcriptor estaacute en una cola de trabajos y por consiguiente no se encuentraactualmente en ejecucioacuten Los valores posibles son YES NO
IBM Toolbox para Java 139
Mandatos de tiempo de apertura
ID ATTR_OPENCMDS
Tipo String
DescripcioacutenIndica si el usuario desea que se inserten mandatos de tiempo de apertura de SCS en la corrientede datos antes de poner los datos de archivo en spool Los valores vaacutelidos son YES NO
Controlado por el operador
ID ATTR_OPCNTRL
Tipo String
DescripcioacutenIndica si los usuarios con autorizacioacuten de control de trabajos tienen permiso para gestionar ocontrolar los archivos en spool de esta cola Los valores vaacutelidos son YES NO
Orden de archivos en cola
ID ATTR_ORDER
Tipo String
DescripcioacutenOrden de los archivos en spool en esta cola de salida Los valores vaacutelidos son FIFO JOBNBR
Bandeja de salida
ID ATTR_OUTPUTBIN
Tipo Integer
DescripcioacutenBandeja de salida que utiliza la impresora para la salida impresa Los valores abarcan del 1 al65535 El valor DEVD se codifica como 0
Prioridad de salida
ID ATTR_OUTPTY
Tipo String
DescripcioacutenPrioridad del archivo en spool La prioridad abarca del 1 (superior) al 9 (inferior) Los valoresvaacutelidos son 0-9 donde 0 representa JOB
Cola de salida
ID ATTR_OUTPUT_QUEUE
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado de la cola de salida El formato de la viacutea deacceso del sistema de archivos integrado es QSYSLIBbibliotecaLIBcolaOUTQ dondebiblioteca es la biblioteca que contiene la cola de salida y cola es el nombre de la cola de salida
Estado de la cola de salida
ID ATTR_OUTQSTS
Tipo String
140 IBM Toolbox para Java IBM Toolbox para Java
DescripcioacutenEstado de la cola de salida Los valores vaacutelidos son RELEASED HELD
Estado global
ID ATTR_OVERALLSTS
Tipo Integer
DescripcioacutenEstado global de la impresora loacutegica El teacutermino impresora loacutegica hace referencia al dispositivode impresora la cola de salida y el trabajo de transcriptor Los valores vaacutelidos son 1 (nodisponible) 2 (apagada o todaviacutea no disponible) 3 (detenida) 4 (en espera de mensaje) 5(retenida) 6 (pendiente de detencioacuten ) 7 (pendiente de retencioacuten) 8 (en espera de impresora) 9(en espera de inicio) 10 (imprimiendo) 11 (en espera de cola de salida) 12 (pendiente deconexioacuten) 13 (apagada) 14 (inutilizable) 15 (en servicio) 999 (desconocida)
Nuacutemero de liacutenea de desbordamiento
ID ATTR_OVERFLOW
Tipo Integer
DescripcioacutenUacuteltima liacutenea que se imprimiraacute antes de que los datos que se imprimen se desborden a la paacuteginasiguiente
Una paacutegina cada vez
ID ATTR_PAGE_AT_A_TIME
Tipo String
DescripcioacutenEspecifica si el archivo en spool debe abrirse en la modalidad de una paacutegina cada vez Losvalores vaacutelidos son YES y NO
Nuacutemero de paacuteginas estimado
ID ATTR_PAGES_EST
Tipo String
DescripcioacutenEspecifica si el nuacutemero de paacuteginas es estimado en lugar de real Los valores vaacutelidos son YES yNO
Definicioacuten de paacutegina
ID ATTR_PAGE_DEFINITION
Tipo String
DescripcioacutenNombre de viacutea de acceso del sistema de archivos integrado de la definicioacuten de paacutegina o un valorespecial Si se especifica una viacutea de acceso del sistema de archivos integrado el formato esQSYSLIBbibliotecaLIBdefpaacutegPAGDFN donde biblioteca es la biblioteca de la definicioacuten depaacutegina y defpaacuteg es el nombre de la definicioacuten de paacutegina Los valores especiales vaacutelidos sonNONE
Nuacutemero de paacutegina
ID ATTR_PAGENUMBER
IBM Toolbox para Java 141
Tipo Integer
DescripcioacutenNuacutemero de la paacutegina que se leeraacute de un archivo en spool abierto en la modalidad de una paacuteginacada vez
Paacuteginas por cara
ID ATTR_MULTIUP
Tipo Integer
DescripcioacutenNuacutemero de paacuteginas loacutegicas que se imprimen en cada cara de cada paacutegina fiacutesica al imprimirse elarchivo Los valores vaacutelidos son 1 2 4
Cargador de papel 1
ID ATTR_PAPER_SOURCE_1
Tipo String
DescripcioacutenTamantildeo del papel del cargador de papel 1 Si no se especifica este campo o el valor no es vaacutelidose utilizaraacute el valor especial MFRTYPMDL Los valores vaacutelidos son NONE (no hay ninguacutencargador de papel 1 o el papel se alimenta de forma manual en la impresora) MFRTYPMDL (seutiliza el tamantildeo de papel propuesto por el tipo y modelo del fabricante) LETTER (85 x 110pulgadas) LEGAL (85 x 140 pulgadas) EXECUTIVE (725 x 105 pulgadas) LEDGER (170 x110 pulgadas) A3 (297 mm x 420 mm) A4 (210 mm x 297 mm) A5 (148 mm x 210 mm) B4(257 mm x 364 mm) B5 (182 mm x 257 mm) CONT80 (80 pulgadas de ancho con papelcontinuo) CONT132 (132 pulgadas de ancho con papel continuo)
Cargador de papel 2
ID ATTR_PAPER_SOURCE_2
Tipo String
DescripcioacutenTamantildeo del papel del cargador de papel 2 Si no se especifica este campo o el valor no es vaacutelidose utilizaraacute el valor especial MFRTYPMDL Los valores vaacutelidos son NONE (no hay ninguacutencargador de papel 2 o el papel se alimenta de forma manual en la impresora) MFRTYPMDL (seutiliza el tamantildeo de papel propuesto por el tipo y modelo del fabricante) LETTER (85 x 110pulgadas) LEGAL (85 x 140 pulgadas) EXECUTIVE (725 x 105 pulgadas) LEDGER (170 x110 pulgadas) A3 (297 mm x 420 mm) A4 (210 mm x 297 mm) A5 (148 mm x 210 mm) B4(257 mm x 364 mm) B5 (182 mm x 257 mm) CONT80 (80 pulgadas de ancho con papelcontinuo) CONT132 (132 pulgadas de ancho con papel continuo)
Densidad de pel
ID ATTR_PELDENSITY
Tipo String
DescripcioacutenPara los recursos de font uacutenicamente este valor es una codificacioacuten del nuacutemero de pels (1representa el tamantildeo de pel 240 2 representa el tamantildeo de pel 320) Pueden antildeadirse a estosotros valores significativos a medida que el servidor los defina
Cuerpo
ID ATTR_POINTSIZE
142 IBM Toolbox para Java IBM Toolbox para Java
Tipo Float
DescripcioacutenCuerpo en que se imprime el texto de este archivo en spool El valor especial NONE secodificaraacute como 0
Fidelidad de impresioacuten
ID ATTR_FIDELITY
Tipo String
DescripcioacutenTipo de manejo de errores que se lleva a cabo al imprimir Los valores vaacutelidos son ABSOLUTECONTENT
Imprimir en ambas caras
ID ATTR_DUPLEX
Tipo String
DescripcioacutenIndica coacutemo se imprime la informacioacuten Los valores vaacutelidos son FORMDF NO YESTUMBLE
Calidad de impresioacuten
ID ATTR_PRTQUALITY
Tipo String
DescripcioacutenCalidad de impresioacuten que se utiliza al imprimir este archivo en spool Los valores vaacutelidos sonSTD DRAFT NLQ FASTDRAFT
Secuencia de impresioacuten
ID ATTR_PRTSEQUENCE
Tipo String
DescripcioacutenSecuencia de impresioacuten Los valores vaacutelidos son NEXT
Texto de impresioacuten
ID ATTR_PRTTEXT
Tipo String
DescripcioacutenTexto que se imprime al final de cada paacutegina de la salida impresa y en las paacuteginas de separacioacutenLos valores especiales vaacutelidos son BLANK y JOB
Impresora
ID ATTR_PRINTER
Tipo String
DescripcioacutenNombre del dispositivo de impresora
IBM Toolbox para Java 143
Impresora asignada
ID ATTR_PRTASSIGNED
Tipo String
DescripcioacutenIndica si la impresora estaacute asignada Los valores vaacutelidos son 1 (asignada a una impresoraespeciacutefica) 2 (asignada a varias impresoras) 3 (no asignada)
Tipo de dispositivo de impresora
ID ATTR_PRTDEVTYPE
Tipo String
DescripcioacutenTipo de corriente de datos de la impresora Los valores vaacutelidos son SCS IPDS USERASCIIAFPDS LINE
Archivo de impresora
ID ATTR_PRINTER_FILE
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado del archivo de impresora El formato de la viacutea deacceso del sistema de archivos integrado es QSYSLIBbibliotecaLIBarchivoimpresoraFILEdonde biblioteca es la biblioteca que contiene el archivo de impresora y archivoimpresora es elnombre del archivo de impresora
Cola de impresora
ID ATTR_RMTPRTQ
Tipo String
DescripcioacutenNombre de la cola de impresora destino al enviar archivos en spool mediante SNDTCPSPLF(LPR)
Color de informacioacuten de publicacioacuten soportado
ID ATTR_PUBINF_COLOR_SUP
Tipo String
DescripcioacutenIndica el color soportado para esta entrada de lista de publicacioacuten
Paacuteginas por minuto de informacioacuten de publicacioacuten (color)
ID ATTR_PUBINF_PPM_COLOR
Tipo Integer
DescripcioacutenLas paacuteginas por minuto soportadas en la modalidad de color para esta entrada de lista depublicacioacuten
Paacuteginas por minuto de informacioacuten de publicacioacuten (monocromo)
ID ATTR_PUBINF_PPM
Tipo Integer
144 IBM Toolbox para Java IBM Toolbox para Java
DescripcioacutenLas paacuteginas por minuto soportadas en monocromo para esta entrada de lista de publicacioacuten
Soporte duacuteplex de informacioacuten de publicacioacuten
ID ATTR_PUBINF_DUPLEX_SUP
Tipo String
DescripcioacutenIndicador de duacuteplex soportado para esta entrada de lista de publicacioacuten
Ubicacioacuten de informacioacuten de publicacioacuten
ID ATTR_PUBINF_LOCATION
Tipo String
DescripcioacutenDescripcioacuten de ubicacioacuten para esta entrada de lista de publicacioacuten
Nombre de ubicacioacuten remota
ID ATTR_RMTLOCNAME
Tipo String
DescripcioacutenNombre de ubicacioacuten del dispositivo de impresora
Longitud de registro
ID ATTR_RECLENGTH
Tipo Integer
DescripcioacutenLongitud de registro
Reducir salida
ID ATTR_REDUCE
Tipo String
DescripcioacutenForma en que se imprimen varias paacuteginas loacutegicas en cada cara de una paacutegina fiacutesica Los valoresvaacutelidos son TEXT o
Sistema remoto
ID ATTR_RMTSYSTEM
Tipo String
DescripcioacutenNombre de sistema remoto Los valores especiales vaacutelidos son INTNETADR
Sustituir caracteres no imprimibles
ID ATTR_RPLUNPRT
Tipo String
IBM Toolbox para Java 145
DescripcioacutenIndica si los caracteres que no pueden imprimirse deben sustituirse por otro caraacutecter Los valoresvaacutelidos son YES o NO
Caraacutecter de sustitucioacuten
ID ATTR_RPLCHAR
Tipo String
DescripcioacutenCaraacutecter que sustituye a los caracteres no imprimibles
Reiniciar impresioacuten
ID ATTR_RESTART
Tipo Integer
DescripcioacutenReiniciar impresioacuten Los valores vaacutelidos son -1 -2 -3 o el nuacutemero de paacutegina en que se reiniciaraacutela impresioacuten El valor STRPAGE se codifica como -1 el valor ENDPAGE se codifica como -2 y elvalor NEXT se codifica como -3
Nuacutemero de grapas de cosido por el lomo
ID ATTR_SADDLESTITCH_NUMSTAPLES
Tipo Integer
DescripcioacutenNuacutemero de grapas que van a colocarse a lo largo del borde de acabado
Referencia de cosido por el lomo
ID ATTR_SADDLESTITCH_REF
Tipo String
DescripcioacutenSe colocaraacuten una o varias grapas en el medio a lo largo del borde de acabado que se situacutea en elcentro del medio en paralelo al borde de referencia Los valores vaacutelidos son NONE DEVDTOP y LEFT
Guardar archivo en spool
ID ATTR_SAVESPLF
Tipo String
DescripcioacutenIndica si el archivo en spool debe guardarse despueacutes de escribirse Los valores vaacutelidos son YESNO
Desplazamiento de buacutesqueda
ID ATTR_SEEKOFF
Tipo Integer
DescripcioacutenDesplazamiento de buacutesqueda Admite valores tanto positivos como negativos en relacioacuten con elorigen de buacutesqueda
146 IBM Toolbox para Java IBM Toolbox para Java
Origen de buacutesqueda
ID ATTR_SEEKORG
Tipo Integer
DescripcioacutenLos valores vaacutelidos son 1 (principio o parte superior) 2 (actual) y 3 (final o parte inferior)
Prioridad de enviacuteo
ID ATTR_SENDPTY
Tipo String
DescripcioacutenPrioridad de enviacuteo Los valores vaacutelidos son NORMAL HIGH
Paacutegina de separacioacuten
ID ATTR_SEPPAGE
Tipo String
DescripcioacutenOfrece a un usuario la opcioacuten de imprimir una paacutegina de anuncio de cabecera Los valoresvaacutelidos son YES o NO
Bandeja del papel
ID ATTR_SRCDRWR
Tipo Integer
DescripcioacutenBandeja que se emplearaacute cuando se seleccione la opcioacuten de alimentacioacuten automaacutetica de hojassueltas Los valores vaacutelidos son -1 -2 1-255 El valor E1 se codifica como -1 y el valor FORMDFse codifica como -2
SCS en spool
ID ATTR_SPLSCS
Tipo Long
DescripcioacutenDetermina coacutemo se utilizan los datos SCS durante la creacioacuten del archivo en spool
Poner los datos en spool
ID ATTR_SPOOL
Tipo String
DescripcioacutenIndica si los datos de salida del dispositivo de impresora se ponen en spool Los valores vaacutelidosson YES NO
Meacutetodo de autenticacioacuten de creacioacuten de archivo en spool
ID ATTR_SPLF_AUTH_METHOD
Tipo Integer
IBM Toolbox para Java 147
DescripcioacutenIndica el meacutetodo de autenticacioacuten de cliente utilizado para crear este archivo en spool Losvalores vaacutelidos son x00(NONE) x01(REQUESTER) x02(BASIC) x03(CERTIFICATE) yx04(DIGEST)
Meacutetodo de seguridad de creacioacuten de archivo en spool
ID ATTR_SPLF_SECURITY_METHOD
Tipo String
DescripcioacutenIndica el meacutetodo de seguridad utilizado para crear este archivo en spool Los valores vaacutelidos sonx00(NONE) x01(SSL3) y x02(TLS)
Nombre de archivo en spool
ID ATTR_SPOOLFILE
Tipo String
DescripcioacutenNombre del archivo en spool
Nuacutemero de archivo en spool
ID ATTR_SPLFNUM
Tipo Integer
DescripcioacutenNuacutemero del archivo en spool Los valores especiales permitidos son -1 y 0 El valor LAST secodifica como -1 el valor ONLY se codifica como 0
Estado de archivo en spool
ID ATTR_SPLFSTATUS
Tipo String
DescripcioacutenEstado del archivo en spool Los valores vaacutelidos son CLOSED HELD MESSAGE OPENPENDING PRINTER READY SAVED WRITING
Planificacioacuten de salida en spool
ID ATTR_SCHEDULE
Tipo String
DescripcioacutenEspecifica uacutenicamente para los archivos en spool cuaacutendo estaacute disponible el archivo en spoolpara el transcriptor Los valores vaacutelidos son IMMED FILEEND JOBEND
Iniciado por usuario
ID ATTR_STARTEDBY
Tipo String
DescripcioacutenNombre del usuario que inicioacute el transcriptor
148 IBM Toolbox para Java IBM Toolbox para Java
Paacutegina inicial
ID ATTR_STARTPAGE
Tipo Integer
DescripcioacutenNuacutemero de paacutegina en que se iniciaraacute la impresioacuten del archivo en spool Los valores vaacutelidos son-1 0 1 o el nuacutemero de paacutegina El valor ENDPAGE se codifica como -1 Con el valor 0 laimpresioacuten se inicia en la paacutegina 1 Con el valor 1 se imprime todo el archivo
Sistema en el que se ha creado
ID ATTR_SYSTEM
Tipo String
DescripcioacutenNombre del sistema en el que se ha creado el archivo en spool Si no puede determinarse elnombre del sistema en el que se ha creado este archivo en spool se utiliza el nombre del sistemareceptor
Texto descriptivo
ID ATTR_DESCRIPTION
Tipo String
DescripcioacutenTexto para describir una instancia de un objeto AS400
Hora de apertura de archivo
ID ATTR_TIMEOPEN
Tipo String
DescripcioacutenEn el caso de los archivos en spool hora en que se abrioacute este archivo en spool En el caso de losrecursos de AFP hora de la uacuteltima modificacioacuten del objeto La hora se codifica en una serie decaracteres con el formato siguiente HH MM SS
Hora de finalizacioacuten del trabajo de creacioacuten de archivo en spool
ID ATTR_TIME_END
Tipo String
DescripcioacutenHora en la que ha finalizado el trabajo que ha creado el archivo en spool en el sistema Estecampo debe establecerse en blancos cuando se utiliza el valor especial ALL para el campo defecha de inicio de creacioacuten de archivo en spool o cuando se utiliza el valor especial LAST para elcampo de finalizacioacuten de creacioacuten de archivo en spool Este campo debe tener un valorestablecido si se especifica una fecha para el campo de fecha de finalizacioacuten de creacioacuten dearchivo en spool La hora debe tener el formato HHMMSS que se define como se indica acontinuacioacutenv HH - Horav MM - Minutosv SS - Segundos
Hora en que el transcriptor empezoacute a procesar el archivo en spool
ID ATTR_TIME_WTR_BEGAN_FILE
IBM Toolbox para Java 149
Tipo String
DescripcioacutenIndica la hora en que el transcriptor empezoacute a procesar el archivo en spool La hora se codifica enuna serie de caracteres con el formato siguiente HH MM SS
Hora en que el transcriptor terminoacute de procesar el archivo en spool
ID ATTR_TIME_WTR_CMPL_FILE
Tipo String
DescripcioacutenIndica la hora en que el transcriptor terminoacute de procesar el archivo en spool La hora se codificaen una serie de caracteres con el formato siguiente HH MM SS
Total de paacuteginas
ID ATTR_PAGES
Tipo Integer
DescripcioacutenNuacutemero de paacuteginas que contiene un archivo en spool
Transformar SCS en ASCII
ID ATTR_SCS2ASCII
Tipo String
DescripcioacutenIndica si los datos de impresioacuten se deben transformar de SCS en ASCII Los valores vaacutelidos sonYES NO
Unidad de medida
ID ATTR_UNITOFMEAS
Tipo String
DescripcioacutenUnidad de medida que se utilizaraacute para especificar distancias Los valores vaacutelidos son CMINCH
Comentario de usuario
ID ATTR_USERCMT
Tipo String
Descripcioacuten100 caracteres de comentario especificado por el usuario que describen el archivo en spool
Datos de usuario
ID ATTR_USERDATA
Tipo String
Descripcioacuten10 caracteres de datos especificados por el usuario que describen el archivo en spool Los valoresespeciales vaacutelidos son SOURCE
150 IBM Toolbox para Java IBM Toolbox para Java
Datos definidos por usuario
ID ATTR_USRDFNDTA
Tipo String
DescripcioacutenDatos definidos por el usuario que emplearaacuten las aplicaciones de usuario o los programasespecificados por el usuario que procesan archivos en spool Todos los caracteres son aceptablesEl tamantildeo maacuteximo es 255
Archivo definido por usuario
ID ATTR_USRDEFFILE
Tipo String
DescripcioacutenIndica si el archivo en spool se ha creado utilizando una API Los valores vaacutelidos son YES oNO
Objeto definido por usuario
ID ATTR_USER_DEFINED_OBJECT
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado del objeto definido por el usuario que emplearaacutenlas aplicaciones de usuario que procesan archivos en spool Si se especifica una viacutea de acceso delsistema de archivos integrado el formato de la viacutea de acceso del sistema de archivos integrado esQSYSLIBbibliotecaLIBobjetotipo donde biblioteca es el nombre de la biblioteca que contieneel objeto o uno de los valores especiales LIBL o CURLIB objeto es el nombre del objeto ytipo es el tipo de objeto Los valores vaacutelidos de tipo son DTAARA DTAQ FILE PSFCFGUSRIDX USRQ y USRSPC La serie NONE se utiliza para indicar que no se utilizaraacuteninguacuten objeto definido por el usuario
Opciones definidas por el usuario
ID ATTR_USEDFNOPTS
Tipo String
DescripcioacutenOpciones definidas por el usuario que emplearaacuten las aplicaciones de usuario que procesanarchivos en spool Pueden especificarse hasta 4 opciones cada valor tiene la longitud char(10)Todos los caracteres son aceptables
Datos de programa controlador de usuario
ID ATTR_USRDRVPGMDTA
Tipo String
DescripcioacutenDatos de usuario que se emplearaacuten con el programa controlador de usuario Todos los caracteresson aceptables El tamantildeo maacuteximo es de 5000 caracteres
Programa controlador de usuario
ID ATTR_USER_DRIVER_PROG
Tipo String
IBM Toolbox para Java 151
DescripcioacutenViacutea de acceso del sistema de archivos integrado del programa controlador definido por el usuarioque procesa los archivos en spool El formato de la viacutea de acceso del sistema de archivosintegrado es QSYSLIBbibliotecaLIBprogramaPGM donde biblioteca es el nombre de labiblioteca que contiene el programa y programa es el nombre del programa El valor de bibliotecapuede ser uno de los valores especiales LIBL o CURLIB o un nombre de bibliotecaespeciacutefico La serie NONE se utiliza para indicar que no hay ninguacuten programa controladordefinido
ID de usuario
ID ATTR_TOUSERID
Tipo String
DescripcioacutenID de usuario al que se enviacutea el archivo en spool
Direccioacuten de ID de usuario
ID ATTR_TOADDRESS
Tipo String
DescripcioacutenDireccioacuten del usuario al que se enviacutea el archivo en spool
Programa de transformacioacuten de usuario
ID ATTR_USER_TRANSFORM_PROG
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado del programa de transformacioacuten definido por elusuario que transforma los datos de archivo en spool antes de que los procese el programacontrolador El formato de la viacutea de acceso del sistema de archivos integrado esQSYSLIBbibliotecaLIBprogramaPGM donde biblioteca es el nombre de la biblioteca quecontiene el programa y programa es el nombre del programa El valor de biblioteca puede ser unode los valores especiales LIBL o CURLIB o un nombre de biblioteca especiacutefico La serieNONE se utiliza para indicar que no hay ninguacuten programa de transformacioacuten definido
Fidelidad de visualizacioacuten
ID ATTR_VIEWING_FIDELITY
Tipo String
DescripcioacutenProceso que tendraacute lugar al visualizar una paacutegina de datos de archivo en spool (en la modalidadde una paacutegina cada vez) Los valores vaacutelidos son ABSOLUTE y CONTENT (predeterminados)Para procesar todos los datos que no sean de barrido (mandatos) antes de la paacutegina actual seutiliza ABSOLUTE Con los archivos SCS se utiliza CONTENT para procesar uacutenicamente losmandatos de tiempo de apertura maacutes la paacutegina actual En el caso de los archivos AFPDS seutiliza CONTENT para procesar la primera paacutegina de datos maacutes la paacutegina actual
Clase VMMVS
ID ATTR_VMMVSCLASS
Tipo String
152 IBM Toolbox para Java IBM Toolbox para Java
DescripcioacutenClase VMMVS Los valores vaacutelidos son A-Z y 0-9
Estado de en espera de datos
ID ATTR_WTNGDATASTS
Tipo String
DescripcioacutenIndica si el transcriptor ha escrito todos los datos existentes en este momento en el archivo enspool y estaacute esperando maacutes datos Los valores posibles son NO (el transcriptor no estaacuteesperando maacutes datos) y YES (el transcriptor ha escrito todos los datos existentes en estemomento en el archivo en spool y estaacute esperando maacutes datos) Esta condicioacuten se produce cuandoel transcriptor produce un archivo en spool abierto con el valor SCHEDULE(IMMED)especificado
Estado de en espera de dispositivo
ID ATTR_WTNGDEVSTS
Tipo String
DescripcioacutenIndica si el transcriptor estaacute esperando a obtener el dispositivo de un trabajo que estaacuteimprimiendo directamente en la impresora Los valores posibles son NO (el transcriptor no estaacuteesperando el dispositivo) y YES (el transcriptor estaacute esperando el dispositivo)
Estado de en espera de mensaje
ID ATTR_WTNGMSGSTS
Tipo String
DescripcioacutenIndica si el transcriptor estaacute esperando una respuesta a un mensaje de consulta Los valoresposibles son NO y YES
Cuaacutendo finalizar transcriptor automaacuteticamente
ID ATTR_WTRAUTOEND
Tipo String
DescripcioacutenIndica cuaacutendo finalizar el transcriptor si debe finalizarse automaacuteticamente Los valores vaacutelidosson NORDYF FILEEND Finalizar transcriptor automaacuteticamente debe estar establecido en YES
Cuaacutendo finalizar transcriptor
ID ATTR_WTREND
Tipo String
DescripcioacutenIndica cuaacutendo finalizar el transcriptor Los valores vaacutelidos son CNTRLD IMMED y PAGEENDEs distinto de cuaacutendo finalizar el transcriptor automaacuteticamente
Cuaacutendo retener archivo
ID ATTR_HOLDTYPE
Tipo String
IBM Toolbox para Java 153
DescripcioacutenIndica cuaacutendo retener el archivo en spool Los valores vaacutelidos son IMMED y PAGEEND
Anchura de paacutegina
ID ATTR_PAGEWIDTH
Tipo Float
DescripcioacutenAnchura de una paacutegina Las unidades de medida se especifican en el atributo de meacutetodo demedida
Objeto de personalizacioacuten de estacioacuten de trabajo
ID ATTR_WORKSTATION_CUST_OBJECT
Tipo String
DescripcioacutenViacutea de acceso del sistema de archivos integrado del objeto de personalizacioacuten de estacioacuten detrabajo El formato de la viacutea de acceso del sistema de archivos integrado es QSYSLIBbibliotecaLIBobjpersWSCST donde biblioteca es la biblioteca que contiene el objeto depersonalizacioacuten y objpers es el nombre del objeto de personalizacioacuten de la estacioacuten de trabajo
Nombre de trabajo del transcriptor
ID ATTR_WRITER
Tipo String
DescripcioacutenNombre del trabajo del transcriptor
Nuacutemero de trabajo del transcriptor
ID ATTR_WTRJOBNUM
Tipo String
DescripcioacutenNuacutemero de trabajo del transcriptor
Estado del trabajo del transcriptor
ID ATTR_WTRJOBSTS
Tipo String
DescripcioacutenEstado del trabajo del transcriptor Los valores vaacutelidos son STR END JOBQ HLD MSGW
Nombre de usuario del trabajo del transcriptor
ID ATTR_WTRJOBUSER
Tipo String
DescripcioacutenNombre del usuario que inicioacute el trabajo del transcriptor
Transcriptor iniciado
ID ATTR_WTRSTRTD
Tipo String
154 IBM Toolbox para Java IBM Toolbox para Java
DescripcioacutenIndica si se ha iniciado un transcriptor para esta impresora Los valores posibles son 1 (se hainiciado un transcriptor) y 0 (no se ha iniciado ninguacuten transcriptor)
Paacutegina inicial de transcriptor
ID ATTR_WTRSTRPAGE
Tipo Integer
DescripcioacutenEspecifica el nuacutemero de paacutegina de la primera paacutegina que se imprimiraacute del primer archivo enspool cuando se inicie el trabajo del transcriptor Solo es vaacutelido si tambieacuten se especifica el nombredel archivo en spool cuando se inicia el transcriptor
Estado de transcribiendo
ID ATTR_WRTNGSTS
Tipo String
DescripcioacutenIndica si el transcriptor de impresioacuten estaacute en estado de transcribiendo Los valores posibles sonYES (el transcriptor estaacute en estado de transcribiendo) NO (el transcriptor no estaacute en estado detranscribiendo) y FILE (el transcriptor estaacute transcribiendo los separadores de archivo)
Atributos de objeto de servidor de impresioacuten de red
CCSID NPS
ID ATTR_NPSCCSID
Tipo Integer
DescripcioacutenCCSID en que el servidor de impresioacuten de red espera que esteacuten codificadas todas las series
Nivel de NPS
ID ATTR_NPSLEVEL
DescripcioacutenVersioacuten release y nivel de modificacioacuten del servidor de impresioacuten de red Este atributo es unaserie de caracteres codificada como VXRYMY (es decir V3R1M0) donde
X es un valor comprendido entre (09)Y es un valor comprendido entre (09AZ)
Copiar archivos en spool
Puede emplear el meacutetodo copy de la clase SpooledFile para crear una copia del archivo en spool querepresenta el objeto SpooledFile
Con el uso de SpooledFilecopy() se llevan a cabo las acciones siguientesv Se crea el archivo en spool nuevo en la misma cola de salida y en el mismo sistema que el archivo en
spool originalv Se devuelve una referencia al archivo en spool nuevo
SpooledFilecopy() es un meacutetodo nuevo que solo estaacute disponible si se baja JTOpen 32 o posterior o seaplica un arreglo de IBM i La solucioacuten oacuteptima que se recomienda es bajar y utilizar JTOpen Encontraraacutemaacutes informacioacuten en estos temas
IBM Toolbox para Java 155
v IBM Toolbox para Java and JTOpen Downloads
v IBM Toolbox para Java and JTOpen Service Packs
El meacutetodo copy utiliza la API Crear archivo en spool (QSPCRTSP) en el trabajo servidor de impresioacuten dered para crear una reacuteplica exacta del archivo en spool Uacutenicamente necesita una fecha y una hora decreacioacuten exclusivas para mantener la identidad de la copia del archivo en spool recieacuten creada
Al especificar una cola de salida como paraacutemetro del meacutetodo copy se crea la copia del archivo en spoolen la primera posicioacuten de la cola de salida especificada Tanto la cola de salida como el archivo en spooloriginal deben residir en el mismo sistema
Ejemplo copiar un archivo en spool con SpooledFilecopy()
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Este ejemplo muestra coacutemo se utiliza SpooledFilecopy() para copiar un archivo en spool en la mismacola que contiene el archivo que se desea copiar Si desea direccionar el archivo en spool que acaba decopiar a una cola de salida especiacutefica pase la cola de salida como paraacutemetro del meacutetodo copy
SpooledFile newSplf = new sourceSpooledFilecopy(ltnombre_cola_salidagt)
donde ltnombre_cola_salidagt es el objeto OutputQueuepublic static void main(String args[])
Cree el objeto sistemaAS400 as400 = new AS400(ltnombre_sistemagtltnombre_usuariogt ltcontrasentildeagt) Identifique la cola de salida que contiene el archivo en spool que desea copiarOutputQueue outputQueue =
new OutputQueue(as400 QSYSLIBQUSRSYSLIBltnombre_cola_salidagtOUTQ)
Cree una matriz que contenga todos los elementos necesarios para identificar de forma exclusiva un archivo en spool en el servidorString[][] splfTags =
ltnombre_archivo_spoolgtltnuacutem_archivo_spoolgtltnombre_trabajogtltnombre_usuariogtltnuacutemero_trabajogt Tenga en cuenta que ltnombre_sistemagt ltfechagt y lthoragt son opcionales Si no los incluye quite los correspondientes splfTags[i][j] donde j tiene el valor 5 6 o 7ltnombre_sistemagtltfechagtlthoragt
Imprima la informacioacuten que identifica el archivo en spool en Systemoutfor ( int i=0 iltsplfTagslength i++)
Systemoutprintln(Copiando -gt + splfTags[i][0] + + splfTags[i][1] + + splfTags[i][2] + + splfTags[i][3] + + splfTags[i][4] + + splfTags[i][5] + + splfTags[i][6] + + splfTags[i][7] )
Cree el objeto SpooledFile para el archivo en spool origenSpooledFile sourceSpooledFile =
new SpooledFile(as400splfTags[i][0]IntegerparseInt(splfTags[i][1])
156 IBM Toolbox para Java IBM Toolbox para Java
splfTags[i][2]splfTags[i][3]splfTags[i][5]splfTags[i][6]splfTags[i][7] )
Copie el archivo en spool con lo que se crea un nuevo objeto SpooledFile Para direccionar la copia del archivo en spool a una cola de salida especiacutefica utilice el coacutedigo siguiente SpooledFile newSplf = new sourceSpooledFilecopy(ltnombre_cola_salidagt) donde ltnombre_cola_salidagt es un objeto OutputQueue Especifique la cola de salida del siguiente modo OutputQueue outputQueue = new OutputQueue(as400 QSYSLIBQUSRSYSLIBltnombre_cola_salidagtOUTQ)try SpooledFile newSplf = new sourceSpooledFilecopy()
catch ( Exception e)
Javadoc SpooledFileAPI Crear archivo en spool (QSPCRTSP)
Crear archivos en spool nuevos
Puede utilizar la clase SpooledFileOutputStream para crear nuevos archivos en spool del servidor Laclase se deriva de la clase javaioOutputStream de JDK estaacutendar una vez construida puede emplearsedondequiera que se utilice una corriente de salida (OutputStream)
Al crear un objeto SpooledFileOutputStream nuevo el llamador puede especificar los elementossiguientesv El archivo de impresora que se ha de usarv La cola de salida en la que hay que poner el archivo en spoolv Un objeto PrintParameterList que puede contener paraacutemetros para alterar temporalmente los campos
del archivo de impresora
Todos estos paraacutemetros son opcionales (el llamador puede pasarlos todos o no pasar ninguno de ellos) Sino se especifica un archivo de impresora el servidor de impresioacuten de red utiliza el archivo QPNPSPRTFque es el archivo de impresora predeterminado para la impresioacuten de red Tambieacuten estaacute el paraacutemetro colade salida porque es praacutectico este paraacutemetro se puede especificar en PrintParameterList Si el paraacutemetrocola de salida se especifica en los dos lugares el campo de PrintParameterList altera temporalmente elparaacutemetro cola de salida En la documentacioacuten del constructor de SpooledFileOutputStream encontraraacuteuna lista completa de queacute atributos se pueden establecer en PrintParameterList para crear nuevosarchivos en spool
Utilice uno de los meacutetodos write() para escribir datos en el archivo en spool El objetoSpooledFileOutputStream pone los datos en el almacenamiento intermedio y los enviacutea cuando se cierra lacorriente de salida o al llenarse el almacenamiento intermedio La puesta en el almacenamientointermedio se realiza por dos razonesv Permite a la funcioacuten que determina automaacuteticamente el tipo de datos (consulte Tipos de corriente de
datos en archivos en spool) analizar un almacenamiento intermedio de datos lleno para determinar eltipo de datos
v Agiliza el funcionamiento de la corriente de salida ya que no todas las peticiones de escritura secomunican al servidor
Utilice el meacutetodo flush() para forzar que los datos se escriban en el servidor
IBM Toolbox para Java 157
Cuando el llamador ha terminado de escribir los datos en el nuevo archivo en spool se llama al meacutetodoclose() para cerrar el archivo en spool Una vez cerrado no se pueden escribir maacutes datos en eacutel Al llamaral meacutetodo getSpooledFile() una vez cerrado el archivo en spool el llamador puede obtener una referenciaa un objeto SpooledFile que representa el archivo en spool
Tipos de corriente de datos en archivos en spool
El atributo Tipo de datos de impresora del archivo en spool permite establecer el tipo de datos que seha de poner en el archivo en spool Si el llamador no especifica un tipo de datos de impresora el valorpredeterminado es utilizar la determinacioacuten automaacutetica de tipo de datos Este meacutetodo examina los milprimeros bytes de los datos de archivo en spool determina si se ajustan a las arquitecturas de corrientede datos Corriente de caracteres SNA (SCS) o corriente de datos de las Funciones Avanzadas deImpresioacuten (AFPDS) y luego establece el atributo de manera adecuada Si los bytes de los datos delarchivo en spool no coinciden con ninguna de estas arquitecturas los datos se marcan como de tipoUSERASCII La determinacioacuten automaacutetica de tipo de datos funciona la mayor parte del tiempo Engeneral el llamador utiliza esta funcioacuten a menos que se trate de un caso especiacutefico en el que no funcionela determinacioacuten automaacutetica de tipo de datos En tales casos el llamador puede hacer que el atributoTipo de datos de impresora se establezca en un valor especiacutefico (por ejemplo SCS) El llamador sidesea utilizar los datos de impresora que estaacuten en el archivo de impresora debe utilizar el valor especialPRTF El llamador si altera temporalmente el tipo de datos predeterminado al crear un archivo en spooldebe tener la precaucioacuten de asegurarse de que los datos que se ponen en el archivo en spool coincidencon el atributo de tipo de datos Poner datos no SCS en un archivo en spool marcado para recibir datosSCS hace que el host desencadene un mensaje de error y provoca la peacuterdida del archivo en spool
En general este atributo puede tener tres valoresv SCS - una corriente de datos de impresora basada en texto y EBCDICv AFPDS (corriente de datos de Funciones avanzadas de presentacioacuten) - otra corriente de datos
soportada en el servidor AFPDS puede contener texto imagen y graacuteficos y puede usar recursosexternos como preformatos de paacutegina e imaacutegenes externas en segmentos de paacutegina
v USERASCII - cualesquiera datos de impresora que no sean SCS ni AFPDS manejados por el servidormediante el paso a traveacutes Postscript y HP-PCL son ejemplos de corrientes de datos que se ponen enun archivo en spool de tipo USERASCIIJavadoc SpooledFileOutputStreamldquoEjemplo crear archivos en spoolrdquo en la paacutegina 448Este ejemplo muestra coacutemo se crea un archivo en spool en un servidor a partir de una corriente deentradaldquoEjemplo crear archivos en spool SCSrdquo en la paacutegina 449Este ejemplo utiliza la clase SCS3812Writer para generar una corriente de datos SCS y escribirla en unarchivo en spool del servidor
Generar una corriente de datos SCS
Para generar archivos en spool que se impriman en determinadas impresoras conectadas al servidor debecrearse una corriente de datos SCS (corriente de caracteres SNA) SCS es una corriente de datos EBCDICbasada en texto que puede imprimirse en impresoras SCS en impresoras IPDS o en impresoras de PCLa impresioacuten de SCS se puede realizar convirtiendo dicha corriente de datos mediante un emulador ocon la transformacioacuten de impresioacuten en host en el servidor
Puede utilizar las clases de transcriptor (writer) SCS para generar una corriente de datos SCS de este tipoLas clases de transcriptor SCS convierten los caracteres Unicode Java y las opciones de formato en unacorriente de datos SCS Hay cinco clases de transcriptor SCS que generan los diversos niveles decorrientes de datos SCS El llamador elige el transcriptor que corresponde al destino de impresora finalen el que va a imprimir el llamador o el usuario final
Para generar una corriente de datos de impresora SCS utilice las clases de transcriptor SCS siguientes
158 IBM Toolbox para Java IBM Toolbox para Java
Clase de transcriptor SCS Descripcioacuten
SCS5256Writer La clase de transcriptor SCS maacutes simple de todasSoporta texto retorno de carro salto de liacutenea nuevaliacutenea salto de paacutegina orientacioacuten horizontal y verticalabsoluta orientacioacuten horizontal y vertical relativa yestablecer formato vertical
SCS5224Writer Ampliacutea la clase de transcriptor 5256 y antildeade meacutetodospara establecer los caracteres por pulgada (CPI) y lasliacuteneas por pulgada (LPI)
SCS5219Writer Ampliacutea la clase de transcriptor 5224 y antildeade soportepara margen izquierdo subrayado tipo de papel (papelo sobre) tamantildeo de papel calidad de impresioacuten paacuteginade coacutedigos juego de caracteres nuacutemero de bandejaalimentadora y nuacutemero de bandeja destino
SCS5553Writer Ampliacutea la clase de transcriptor 5219 y antildeade soportepara rotacioacuten de caracteres liacuteneas de cuadriacutecula y ajustede fonts 5553 es una corriente de datos DBCS (juego decaracteres de doble byte)
SCS3812Writer Ampliacutea la clase de transcriptor 5219 y antildeade soportepara negrita duacuteplex orientacioacuten de texto y fonts
Para construir un transcriptor SCS el llamador necesita una corriente de salida y opcionalmente unacodificacioacuten La corriente de datos se escribe en la corriente de salida Para crear un archivo en spool SCSel llamador construye primero un objeto SpooledFileOutputStream y luego lo utiliza para construir unobjeto transcriptor SCS El paraacutemetro de codificacioacuten proporciona un identificador de juego de caracterescodificados (CCSID) EBCDIC al que se han de convertir los datos
Una vez construido el transcriptor los meacutetodos write() permiten enviar texto a la salida Los meacutetodoscarriageReturn() lineFeed() y newLine() permiten situar el cursor de escritura en la paacutegina El meacutetodoendPage() permite finalizar la paacutegina actual e iniciar una paacutegina nueva
Tras escribir todos los datos utilice el meacutetodo close() para finalizar la corriente de datos y cerrar lacorriente de salida
Ejemplo
ldquoEjemplo crear archivos en spool SCSrdquo en la paacutegina 449 muestra coacutemo se genera una corriente de datosSCS utilizando la clase SCS3812Writer y coacutemo se escribe la corriente en un archivo en spool en elservidor
Leer archivos en spool y recursos AFP
Puede utilizar la clase PrintObjectInputStream para leer el contenido sin procesar de un archivo en spoolo un recurso de Funciones Avanzadas de Impresioacuten (AFP) del servidor Esta clase ampliacutea la clasejavaioInputStream de JDK estaacutendar para que pueda emplearse dondequiera que se utilice una corrientede entrada (InputStream)
Puede obtener un objeto PrintObjectInputStream llamando al meacutetodo getInputStream() en una instanciade la clase SpooledFile o al meacutetodo getInputStream() en una instancia de la clase AFPResource
Utilice uno de los meacutetodos read() para leer en la corriente de entrada Todos estos meacutetodos devuelven elnuacutemero de bytes leiacutedos realmente o bien -1 en el caso de que no se haya leiacutedo ninguacuten byte y de que sehaya llegado al final del archivo
IBM Toolbox para Java 159
Utilice el meacutetodo available() de PrintObjectInputStream para devolver el nuacutemero total de bytes delarchivo en spool o del recurso AFP La clase PrintObjectInputStream da soporte a marcar la corriente deentrada por lo que PrintObjectInputStream siempre devuelve true desde el meacutetodo markSupported() Elllamador puede utilizar los meacutetodos mark() y reset() para hacer que la posicioacuten de lectura actualretroceda en la corriente de entrada Utilice el meacutetodo skip() para hacer que la posicioacuten de lectura avanceen la corriente de entrada sin leer los datos
Ejemplo
El ejemplo siguiente muestra coacutemo se utiliza PrintObjectInputStream para leer un archivo en spoolexistente en el servidor
Ejemplo leer archivos en spoolJavadoc PrintObjectInputStream
Leer archivos en spool mediante PrintObjectPageInputStream y PrintObjectTransformedInputStream
Puede utilizar la clase PrintObjectPageInputStream para leer los datos de un archivo en spool AFP y SCSdel servidor paacutegina a paacutegina
Puede obtener un objeto PrintObjectPageInputStream con el meacutetodo getPageInputStream()
Utilice uno de los meacutetodos read() para leer en la corriente de entrada Todos ellos devuelven el nuacutemerode bytes leiacutedos realmente o bien -1 en el caso de que no se haya leiacutedo ninguacuten byte y de que se hayallegado al final de la paacutegina
Utilice el meacutetodo available() de PrintObjectPageInputStream para devolver el nuacutemero total de bytes de lapaacutegina actual La clase PrintObjectPageInputStream da soporte a marcar la corriente de entrada por loque PrintObjectPageInputStream siempre devuelve true desde el meacutetodo markSupported() El llamadorpuede utilizar los meacutetodos mark() y reset() para hacer que la posicioacuten de lectura actual retroceda en lacorriente de entrada y asiacute lecturas posteriores vuelvan a leer los mismos bytes El llamador puede utilizarel meacutetodo skip() para hacer que la posicioacuten de lectura avance en la corriente de entrada sin leer los datos
Sin embargo si desea transformar toda una corriente de datos de archivo en spool utilice la clasePrintObjectTransformedInputStream
Ejemplo
El ejemplo siguiente muestra coacutemo se utiliza PrintObjectPageInputStream yPrintObjectTransformedInputStream para obtener diferentes transformaciones al leer datos de archivos enspool
ldquoEjemplo leer y transformar archivos en spoolrdquo en la paacutegina 452Informacioacuten relacionadaJavadoc PrintObjectPageInputStreamJavadoc PrintObjectTransformedInputStream
Clase ProductLicenseLa clase ProductLicense permite solicitar las licencias de productos instalados en el sistema Para que seacompatible con otros usuarios de licencias de IBM i la clase funciona mediante el soporte para licenciasde productos IBM i al solicitar o liberar una licencia
La clase no aplica la poliacutetica de licencias sino que devuelve suficiente informacioacuten para que la aplicacioacutenpueda implementarla Cuando se solicita una licencia la clase ProductLicense devuelve el estado de la
160 IBM Toolbox para Java IBM Toolbox para Java
peticioacuten (licencia concedida o denegada) Si se deniega la peticioacuten la aplicacioacuten debe inhabilitar elcomportamiento que requeriacutea la licencia ya que IBM Toolbox para Java no sabe queacute funcioacuten debeinhabilitar
Utilice la clase ProductLicense con el soporte para licencias de IBM i con objeto de implementar lalicencia de la aplicacioacutenv El lado servidor de la aplicacioacuten registra el producto y los teacuterminos de la licencia con el soporte para
licencias de IBM iv El lado cliente de la aplicacioacuten utiliza el objeto ProductLicense para solicitar y liberar licencias
Ejemplo caso praacutectico de ProductLicense
Imagine por ejemplo que un cliente ha adquirido 15 licencias de uso simultaacuteneas de su producto El usosimultaacuteneo significa que 15 usuarios pueden utilizar el producto a la vez pero no tienen que sernecesariamente 15 usuarios especiacuteficos Pueden ser 15 usuarios cualesquiera de la organizacioacuten Estainformacioacuten se registra con el soporte para licencias de IBM i A medida que los usuarios se conectan laaplicacioacuten utiliza la clase ProductLicense para solicitar una licenciav Si el nuacutemero de usuarios simultaacuteneos es inferior a 15 la peticioacuten es satisfactoria y se ejecuta la
aplicacioacutenv Cuando se conecta el usuario 16 la peticioacuten ProductLicense falla La aplicacioacuten visualiza un mensaje de
error y se termina
Cuando un usuario deja de ejecutar la aplicacioacuten la aplicacioacuten libera la licencia mediante la claseProductLicense En ese momento la licencia ya estaacute disponible para que otro usuario la utiliceInformacioacuten relacionadaJavadoc ProductLicense
Clase ProgramCallLa clase ProgramCall de IBM Toolbox para Java permite al programa Java llamar a un programa IBM iPuede utilizar la clase ProgramParameter para especificar paraacutemetros de entrada de salida y deentradasalida Si el programa se ejecuta los paraacutemetros de salida y de entradasalida contienen losdatos devueltos por el programa IBM i Si el programa de IBM i no puede ejecutarse satisfactoriamenteel programa Java puede recuperar los mensajes de IBM i que se produzcan en forma de una lista deobjetos AS400Message
Los paraacutemetros obligatorios sonv El programa y los paraacutemetros que han de ejecutarsev El objeto AS400 que representa el servidor que tiene el programa
El nombre de programa y la lista de paraacutemetros se pueden establecer en el constructor mediante elmeacutetodo setProgram() o se pueden establecer en el meacutetodo run() El meacutetodo run() llama al programa
La utilizacioacuten de la clase ProgramCall hace que el objeto AS400 se conecte al servidor En Gestioacuten deconexiones encontraraacute informacioacuten acerca de coacutemo se gestionan las conexiones
Ejemplo coacutemo se utiliza ProgramCall
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
El siguiente ejemplo muestra coacutemo se utiliza la clase ProgramCall Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
IBM Toolbox para Java 161
Cree un objeto programa En este ejemplo se establece que el programa se ejecute maacutes adelanteProgramCall pgm = new ProgramCall(sys)
Establezca el nombre del programa Debido a que el programa no toma ninguacuten paraacutemetro pase null para el argumento de ProgramParameter[]pgmsetProgram(QSYSObjectPathNametoPath(MYLIB MYPROG PGM))
Ejecute el programa En este ejemplo el programa no tiene ninguacuten paraacutemetro Si no se ejecuta la anomaliacutea se devuelve como conjunto de mensajes en la lista de mensajesif (pgmrun() = true)
Si llega a este punto es que el programa no ha podido ejecutarse Obtenga la lista de mensajes para determinar por queacute el programa no se ejecutoacuteAS400Message[] messageList = pgmgetMessageList()
Procese la lista de mensajes
Desconecte puesto que ya ha terminado de ejecutar los programassysdisconnectService(AS400COMMAND)
El objeto ProgramCall requiere el nombre de viacutea de acceso del sistema de archivos integrado delprograma
El comportamiento predeterminado consiste en que los programas IBM i se ejecuten en un trabajoservidor aparte aunque el programa Java y el programa IBM i esteacuten en el mismo servidor Puede alterartemporalmente el comportamiento predeterminado y hacer que el programa IBM i se ejecute en el trabajoJava mediante el meacutetodo setThreadSafe()
Utilizacioacuten de los objetos ProgramParameter
Los objetos ProgramParameter permiten pasar datos de paraacutemetro entre el programa Java y el programaIBM i Establezca los datos de entrada con el meacutetodo setInputData() Tras la ejecucioacuten del programarecupere los datos de salida con el meacutetodo getOutputData() Cada paraacutemetro es una matriz de bytes Elprograma Java debe convertir la matriz de bytes entre el formato Java y el formato de IBM i Las clasesde conversioacuten de datos proporcionan meacutetodos para convertir los datos Los paraacutemetros se antildeaden alobjeto ProgramCall en forma de lista
Ejemplo coacutemo se utiliza ProgramParameter
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
El ejemplo siguiente muestra coacutemo se utiliza el objeto ProgramParameter para pasar datos de paraacutemetro Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
En este ejemplo el programa tiene dos paraacutemetros Cree una lista para contener los paraacutemetrosProgramParameter[] parmList = new ProgramParameter[2]
El primero paraacutemetro es un paraacutemetro de entradabyte[] key = 1 2 3parmList[0] = new ProgramParameter(key)
162 IBM Toolbox para Java IBM Toolbox para Java
El segundo paraacutemetro es de salida Se devuelve un nuacutemero de cuatro bytesparmList[1] = new ProgramParameter(4)
Cree un objeto de programa que especifique el nombre del programa y la lista de paraacutemetrosProgramCall pgm = new ProgramCall(sys QSYSLIBMYLIBLIBMYPROGPGM parmList)
Ejecute el programaif (pgmrun() = true)
Si el sistema no puede ejecutar el programa vea la lista de mensajes para averiguar por queacute no se ha ejecutadoAS400Message[] messageList = pgmgetMessageList()
else
En caso contrario el programa se ha ejecutado Procese el segundo paraacutemetro que contiene los datos devueltos
Cree un conversor para este tipo de datosAS400Bin4 bin4Converter = new AS400Bin4()
Realice la conversioacuten desde el tipo del sistema al objeto Java El nuacutemero empieza al principio del almacenamiento intermediobyte[] data = parmList[1]getOutputData()int i = bin4ConvertertoInt(data)
Desconecte puesto que ya ha terminado de ejecutar los programassysdisconnectService(AS400COMMAND)
Javadoc ProgramCallJavadoc ProgramParameterJavadoc AS400MessageJavadoc AS400Javadoc CommandCallJavadoc ProgramParameter
Clase QSYSObjectPathNamePuede utilizar la clase QSYSObjectPathName para representar un objeto del sistema de archivosintegrado Esta clase permite construir un nombre de sistema de archivos integrado o analizar en suscomponentes un nombre de sistema de archivos integrado
Varias de las clases de IBM Toolbox para Java necesitan un nombre de viacutea de acceso del sistema dearchivos integrado para poderse utilizar El objeto QSYSObjectPathName permite construir el nombre
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Los ejemplos que hay a continuacioacuten muestran coacutemo se utiliza la clase QSYSObjectPathName
Ejemplo 1 el objeto ProgramCall requiere el nombre de sistema de archivos integrado del programa delservidor al que se debe llamar Se utiliza un objeto QSYSObjectPathName para construir el nombre Parallamar al programa PRINT_IT de la biblioteca REPORTS utilizando un objeto QSYSObjectPathName
Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de llamada a programa
IBM Toolbox para Java 163
ProgramCall pgm = new ProgramCall(sys)
Cree un objeto nombre de viacutea de acceso que represente el programa PRINT_IT de la biblioteca REPORTSQSYSObjectPathName pgmName =
new QSYSObjectPathName(REPORTSPRINT_ITPGM)
Utilice el objeto nombre de viacutea para establecer el nombre en el objeto de llamada a programapgmsetProgram(pgmNamegetPath())
Ejecute el programa procese los resultados
Ejemplo 2 si el nombre del objeto solo se utiliza una vez el programa Java puede emplear el meacutetodotoPath() para construir el nombre Utilizar este meacutetodo es maacutes eficaz que crear un objetoQSYSObjectPathName
Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de llamada a programaProgramCall pgm = new ProgramCall(sys)
Utilice el meacutetodo toPath para crear el nombre que representa el programa PRINT_IT de la biblioteca REPORTSpgmsetProgram(QSYSObjectPathNametoPath(REPORTS
PRINT_ITPGM))
Ejecute el programa procese los resultados
Ejemplo 3 en este ejemplo se ha proporcionado a un programa Java una viacutea de acceso del sistema dearchivos integrado Puede utilizarse la clase QSYSObjectPathName para analizar este nombre en suscomponentes
Cree un objeto nombre de viacutea de acceso a partir del nombre totalmente calificado del sistema de archivos integradoQSYSObjectPathName ifsName = new QSYSObjectPathName(pathName)
Utilice el objeto nombre de viacutea para obtener la biblioteca el nombre y el tipo del objeto de servidorString library = ifsNamegetLibraryName()String name = ifsNamegetObjectName()String type = ifsNamegetObjectType()
Javadoc QSYSObjectPathName
Acceso a nivel de registroLas clases de acceso a nivel de registro crean leen actualizan y suprimen archivos y miembros de IBM iv Crear un archivo fiacutesico de IBM i especificando uno de estos elementos
ndash La longitud del registrondash Un archivo fuente DDS (especificaciones de descripcioacuten de datos)ndash Un objeto RecordFormat
v Recuperar el formato de registro de un archivo fiacutesico o loacutegico o los formatos de registro de un archivoloacutegico de formato muacuteltiple de IBM i
Nota el formato de registro del archivo no se recupera en su totalidad Los formatos de registrorecuperados estaacuten destinados a utilizarse cuando se establece el formato de registro para un objeto
164 IBM Toolbox para Java IBM Toolbox para Java
AS400File Solo se recupera la informacioacuten suficiente para describir el contenido de un registro delarchivo No se recupera informacioacuten de formato de registro tal como las cabeceras de columna y losalias
v Acceder a los registros de un archivo de IBM i secuencialmente por nuacutemero de registro o por clavev Escribir registros en un archivo del sistemav Actualizar registros en un archivo del sistema secuencialmente por nuacutemero de registro o por clavev Suprimir registros en un archivo del sistema secuencialmente por nuacutemero de registro o por clavev Bloquear un archivo para distintos tipos de accesov Utilizar el control de compromiso para permitir a un programa Java efectuar estas operaciones
ndash Iniciar el control de compromiso para la conexioacutenndash Especificar distintos niveles de bloqueo de control de compromiso para los distintos archivosndash Comprometer y retrotraer transacciones
v Suprimir archivos del sistemav Suprimir un miembro de un archivo del sistema
Nota las clases de acceso a nivel de registro no dan soporte a archivos loacutegicos de unioacuten ni a camposclave nulos
A continuacioacuten figuran algunas clases y las funciones que llevan a cabov AS400File es la clase base abstracta de las clases de acceso a nivel de registro Proporciona meacutetodos que
permiten acceder secuencialmente a los registros crear y suprimir archivos y miembros y realizar lasactividades de control de compromiso
v La clase KeyedFile representa un archivo del sistema que tiene acceso por clavev La clase SequentialFile representa un archivo del sistema que tiene acceso por nuacutemero de registrov La clase AS400FileRecordDescription proporciona los meacutetodos que permiten recuperar el formato de
registro de un archivo del sistema
Las clases de acceso a nivel de registro requieren un objeto AS400 que representa el sistema que tiene losarchivos de base de datos Al utilizar las clases de acceso a nivel de registro el objeto AS400 se conecta alsistema IBM i En Gestioacuten de conexiones encontraraacute informacioacuten acerca de coacutemo se gestionan lasconexiones
Las clases de acceso a nivel de registro requieren el nombre de viacutea de acceso del sistema de archivosintegrado del archivo de base de datos En Nombres de viacutea de acceso del sistema de archivos integradopuede encontrar maacutes informacioacuten
Las clases de acceso a nivel de registro utilizanv La clase RecordFormat para describir un registro del archivo de base de datosv La clase Record para proporcionar acceso a los registros del archivo de base de datosv La clase LineDataRecordWriter para escribir un registro en formato de datos de liacutenea
Estas clases se describen en la seccioacuten Conversioacuten de datos
Ejemplos
v El ejemplo de acceso secuencial muestra coacutemo se accede secuencialmente a un archivo del sistemav El ejemplo de leer un archivo muestra coacutemo se utilizan las clases de acceso a nivel de registro para leer
un archivo del sistemav El ejemplo de archivo por clave muestra coacutemo se utilizan las clases de acceso a nivel de registro para
leer registros por clave en un archivo del sistema
IBM Toolbox para Java 165
AS400File
La clase AS400File proporciona los meacutetodos que permiten realizar diversas accionesv Crear y suprimir archivos y miembros fiacutesicos del servidorv Leer y escribir registros en archivos del servidorv Bloquear archivos para distintos tipos de accesov Utilizar bloques de registros para aumentar el rendimientov Fijar la posicioacuten del cursor dentro de un archivo abierto del servidorv Gestionar las actividades de control de compromisoInformacioacuten relacionadaJavadoc AS400File
KeyedFile
La clase KeyedFile proporciona a un programa Java el acceso por clave a un archivo del servidor Accesopor clave quiere decir que el programa Java tan solo ha de especificar una clave para acceder a losregistros de un archivo Hay meacutetodos para situar el cursor leer actualizar y suprimir registros por clave
Para situar el cursor utilice estos meacutetodosv positionCursor(Object[]) - situacutea el cursor en el primer registro que tiene la clave especificadav positionCursorAfter(Object[]) - situacutea el cursor en el registro que hay despueacutes del primer registro que
tiene la clave especificadav positionCursorBefore(Object[]) - situacutea el cursor en el registro que hay antes del primer registro que
tiene la clave especificada
Para suprimir un registro utilice este meacutetodov deleteRecord(Object[]) - suprime el primer registro que tiene la clave especificada
Los meacutetodos de lectura sonv read(Object[]) - lee el primer registro que tiene la clave especificadav readAfter(Object[]) - lee el registro situado despueacutes del primer registro que tiene la clave especificadav readBefore(Object[]) - lee el registro situado antes del primer registro que tiene la clave especificadav readNextEqual() - lee el siguiente registro cuya clave coincide con la clave especificada La buacutesqueda
empieza a partir del registro situado despueacutes de la posicioacuten actual del cursorv readPreviousEqual() - lee el registro anterior cuya clave coincide con la especificada La buacutesqueda
empieza a partir del registro situado antes de la posicioacuten actual del cursor
Para actualizar un registro utilice este meacutetodov update(Object[]) - actualiza el registro que tiene la clave especificada
Tambieacuten se proporcionan meacutetodos para especificar criterios de buacutesqueda cuando se situacutea lee y actualizapor clave Los valores vaacutelidos de los criterios de buacutesqueda sonv Igual - se busca el primer registro cuya clave coincide con la especificadav Menor que - se busca el uacuteltimo registro cuya clave se encuentra antes de la especificada seguacuten el orden
de las claves del archivov Igual o menor que - se busca el primer registro cuya clave coincide con la especificada Si no se
encuentra ninguno se busca el uacuteltimo registro cuya clave se halla antes de la especificada seguacuten elorden de las claves del archivo
v Mayor que - se busca el primer registro cuya clave se encuentra despueacutes de la especificada seguacuten elorden de las claves del archivo
166 IBM Toolbox para Java IBM Toolbox para Java
v Igual o mayor que - se busca el primer registro cuya clave coincide con la especificada Si no seencuentra ninguno se busca el primer registro cuya clave se halla despueacutes de la especificada seguacuten elorden de las claves del archivo
KeyedFile es una subclase de AS400File todos los meacutetodos de AS400File estaacuten disponibles en KeyedFile
Especificar la clave
La clave de un objeto KeyedFile se representa mediante una matriz de objetos Java cuyos tipos y orden secorresponden con los tipos y el orden de los campos de clave tal como los especifica el objetoRecordFormat para el archivo
El ejemplo que sigue muestra coacutemo se especifica la clave para el objeto KeyedFile Especifique la clave para un archivo cuyos campos de clave puestos por orden son CUSTNAME CHAR(10) CUSTNUM BINARY(9) CUSTADDR CHAR(100)VARLEN() Observe que el uacuteltimo es un campo de longitud variableObject[] theKey = new Object[3]theKey[0] = John DoetheKey[1] = new Integer(445123)theKey[2] = 2227 John Doe Lane ANYTOWN NY 11199
Un objeto KeyedFile acepta claves parciales asiacute como claves completas No obstante los valores de loscampos clave se han de especificar por orden
Por ejemplo Especifique una clave parcial para un archivo cuyos campos de clave puestos por orden son CUSTNAME CHAR(10) CUSTNUM BINARY(9) CUSTADDR CHAR(100)VARLEN()Object[] partialKey = new Object[2]partialKey[0] = John DoepartialKey[1] = new Integer(445123)
Ejemplo de una clave parcial INVALIDObject[] INVALIDPartialKey = new Object[2]INVALIDPartialKey[0] = new Integer(445123)INVALIDPartialKey[1] = 2227 John Doe Lane ANYTOWN NY 11199
No se da soporte a las claves nulas ni a los campos de clave nulos
Los valores de campo de clave para un registro se pueden obtener del objeto Record correspondiente aun archivo mediante el meacutetodo getKeyFields()
El ejemplo siguiente muestra coacutemo se lee en un archivo por clave Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoKeyedFile myFile =new KeyedFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Supongamos que se ha empleado la clase AS400FileRecordDescription para generar el coacutedigo de una subclase de RecordFormat que representa el formato de registro del archivo MYFILE de la biblioteca MYLIB El coacutedigo se ha compilado y estaacute disponible para que lo utilice el programa Java
IBM Toolbox para Java 167
RecordFormat recordFormat = new MYKEYEDFILEFormat()
Establezca el formato de registro para myFile Esto se debe realizar antes de invocar el meacutetodo open()myFilesetRecordFormat(recordFormat)
Abra el archivomyFileopen(AS400FileREAD_WRITE 0 AS400FileCOMMIT_LOCK_LEVEL_NONE)
El formato de registro del archivo contiene cuatro campos de clave CUSTNUM CUSTNAME PARTNUM y ORDNUM en este orden partialKey contendraacute 2 valores de campo de clave Debido a que los valores de campo de clave deben estar ordenados partialKey constaraacute de valores para CUSTNUM y CUSTNAMEObject[] partialKey = new Object[2]partialKey[0] = new Integer(1)partialKey[1] = John Doe
Lea el primer registro que coincida con partialKeyRecord keyedRecord = myFileread(partialKey)
De no encontrarse el registro se devuelve nullif (keyedRecord = null) Se ha encontrado el registro correspondiente a John Doe imprima la informacioacuten
Systemoutprintln(Informacioacuten de cliente + (String)partialKey[1] + )Systemoutprintln(keyedRecord)
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de usar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Informacioacuten relacionadaJavadoc KeyedFile
SequentialFile
La clase SequentialFile permite a un programa Java acceder a un archivo del servidor por nuacutemero deregistro Hay meacutetodos para situar el cursor leer actualizar y suprimir registros por nuacutemero de registro
Para situar el cursor utilice estos meacutetodosv positionCursor(int) - situacutea el cursor en el registro que tiene el nuacutemero de registro especificadov positionCursorAfter(int) - situacutea el cursor en el registro posterior al que tiene el nuacutemero de registro
especificadov positionCursorBefore(int) - situacutea el cursor en el registro anterior al que tiene el nuacutemero de registro
especificado
Para suprimir un registro utilice este meacutetodov deleteRecord(int) - suprime el registro que tiene el nuacutemero de registro especificado
Para leer un registro utilice estos meacutetodosv read(int) - lee el registro que tiene el nuacutemero de registro especificadov readAfter(int) - lee el registro posterior al que tiene el nuacutemero de registro especificadov readBefore(int) - lee el registro anterior al que tiene el nuacutemero de registro especificado
168 IBM Toolbox para Java IBM Toolbox para Java
Para actualizar un registro utilice este meacutetodov update(int) - actualiza el registro que tiene el nuacutemero de registro especificado
SequentialFile es una subclase de AS400File todos los meacutetodos de AS400File estaacuten disponibles enSequentialFile
El ejemplo siguiente muestra coacutemo se utiliza la clase SequentialFile Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Supongamos que se ha empleado la clase AS400FileRecordDescription para generar el coacutedigo de una subclase de RecordFormat que representa el formato de registro del archivo MYFILE de la biblioteca MYLIB El coacutedigo se ha compilado y estaacute disponible para que lo utilice el programa JavaRecordFormat recordFormat = new MYFILEFormat()
Establezca el formato de registro para myFile Esto se debe realizar antes de invocar el meacutetodo open()myFilesetRecordFormat(recordFormat)
Abra el archivomyFileopen(AS400FileREAD_WRITE 0 AS400FileCOMMIT_LOCK_LEVEL_NONE)
Suprima el registro nuacutemero 2myFiledelete(2)
Lea el registro nuacutemero 5 y actualiacuteceloRecord updateRec = myFileread(5)updateRecsetField(CUSTNAME newName)
Utilice el meacutetodo update() de la clase base puesto que ya estaacute situado en el registromyFileupdate(updateRec)
Actualice el registro nuacutemero 7updateRecsetField(CUSTNAME nextNewName)updateRecsetField(CUSTNUM new Integer(7))myFileupdate(7 updateRec)
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de usar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Informacioacuten relacionadaJavadoc SequentialFile
AS400FileRecordDescription
La clase AS400FileRecordDescription de IBM Toolbox para Java proporciona los meacutetodos que permitenrecuperar el formato de registro de un archivo del servidor
Esta clase proporciona meacutetodos para crear coacutedigo fuente Java para las subclases de RecordFormat ydevolver objetos RecordFormat que describen los formatos de registro de los archivos fiacutesicos o loacutegicos
IBM Toolbox para Java 169
del servidor especificados por el usuario La salida de estos meacutetodos puede utilizarse como entrada paraun objeto AS400File al establecer el formato de registro
Se recomienda utilizar siempre la clase AS400FileRecordDescription para generar el objeto RecordFormatcuando el archivo ya existe en el servidor
Nota la clase AS400FileRecordDescription no recupera la totalidad del formato de registro de unarchivo Solo se recupera la informacioacuten suficiente para describir el contenido de los registros quecomponen el archivo No se recupera informacioacuten como la de las cabeceras de columna los alias y loscampos de referencia Por lo tanto los formatos de registro recuperados no necesariamente crean unarchivo cuyo formato de registro sea ideacutentico al del archivo del que se recuperoacute
Crear coacutedigo fuente Java para subclases de RecordFormat para representar el formato de registro dearchivos del servidor
El meacutetodo createRecordFormatSource() crea archivos fuente Java para subclases de la clase RecordFormatLos archivos se pueden compilar y luego una aplicacioacuten o un applet los puede utilizar como entradapara el meacutetodo AS400FilesetRecordFormat()
El meacutetodo createRecordFormatSource() debe utilizarse como herramienta en tiempo de desarrollo pararecuperar los formatos de registro de archivos existentes en el servidor Con este meacutetodo el fuentecorrespondiente a la subclase de la clase RecordFormat puede crearse una vez modificarse si esnecesario compilarse y despueacutes lo pueden utilizar muchos programas Java que accedan a los mismosarchivos del servidor Uacutenicamente las aplicaciones Java pueden utilizar este meacutetodo porque crea losarchivos en el sistema local Sin embargo la salida (el coacutedigo fuente Java) se puede compilar y despueacutes lapueden utilizar tanto las aplicaciones como los applets Java
Nota este meacutetodo sobrescribe los archivos cuyo nombre sea ideacutentico al de los archivos fuente Java quese crean
Ejemplo 1 el ejemplo siguiente muestra coacutemo se utiliza el meacutetodo createRecordFormatSource() Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto AS400FileRecordDescription que represente el archivoAS400FileRecordDescription myFile = new AS400FileRecordDescription(sys
QSYSLIBMYLIBLIBMYFILEFILE) Cree el archivo fuente Java en el directorio de trabajo actual Especifique package commyCompanymyProduct para la sentencia package en el fuente ya que la clase se va a suministrar como parte de my productmyFilecreateRecordFormatSource(null commyCompanymyProduct)
Suponiendo que el nombre de formato del archivo MYFILE sea FILE1 el archivo FILE1Formatjava se crearaacute en el directorio de trabajo actual Va a sobrescribir cualquier archivo que tenga el mismo nombre El nombre de la clase seraacute FILE1Format La clase ampliaraacute RecordFormat
Ejemplo 2 compile el archivo creado maacutes arriba FILE1Formatjava y utiliacutecelo de la siguiente manera Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto AS400File que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILE)
Establezca el formato de registro Ello presupone que importcommyCompanymyProductFILE1Format ya se ha realizado
170 IBM Toolbox para Java IBM Toolbox para Java
myFilesetRecordFormat(new FILE1Format())
Abra el archivo y leacutealo
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de usar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Crear objetos RecordFormat para representar el formato de registro de archivos del servidor
El meacutetodo retrieveRecordFormat() devuelve una matriz de objetos RecordFormat que representan losformatos de registro de un archivo existente en el servidor Lo maacutes habitual es que en la matriz solo sedevuelva un objeto RecordFormat Cuando el archivo cuyo formato de registro se estaacute recuperando es unarchivo loacutegico de formato muacuteltiple se devuelve maacutes de un objeto RecordFormat Utilice este meacutetodo pararecuperar dinaacutemicamente en tiempo de ejecucioacuten el formato de registro de un archivo existente en elservidor El objeto RecordFormat puede usarse luego como entrada para el meacutetodoAS400FilesetRecordFormat()
El ejemplo siguiente muestra coacutemo se utiliza el meacutetodo retrieveRecordFormat() Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto AS400FileRecordDescription que represente el archivoAS400FileRecordDescription myFile = new AS400FileRecordDescription(sys
QSYSLIBMYLIBLIBMYFILEFILE) Recupere el formato de registro correspondiente al archivoRecordFormat[] format = myFileretrieveRecordFormat()
Cree un objeto AS400File que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILE)
Establezca el formato de registromyFilesetRecordFormat(format[0])
Abra el archivo y leacutealo
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de usar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Javadoc AS400FileRecordDescriptionJavadoc RecordFormatJavadoc AS400File
Crear y suprimir archivos y miembros
Los archivos fiacutesicos del servidor se crean especificando una longitud de registro un archivo fuente DDS(especificaciones de descripcioacuten de datos) existente en el servidor o un objeto RecordFormat
Al crear un archivo y especificar una longitud de registro puede crearse un archivo de datos o unarchivo fuente El meacutetodo establece el formato de registro correspondiente al objeto No llame al meacutetodosetRecordFormat() para el objeto
IBM Toolbox para Java 171
Un archivo de datos tiene un campo Este campo tiene el nombre del archivo es de tipo caraacutecter y sulongitud es la especificada en el meacutetodo create
Un archivo fuente consta de tres camposv El campo SRCSEQ que es DECIMAL CON ZONA (62)v El campo SRCDAT que es DECIMAL CON ZONA (60)v El campo SRCDTA que es un campo de tipo caraacutecter y cuya longitud es la especificada en el meacutetodo
create menos 12
Los ejemplos que hay a continuacioacuten muestran coacutemo se crean archivos y miembros
Ejemplo 1 para crear un archivo de datos con un registro de 128 bytes Cree un objeto AS400 el archivo se crearaacute en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile newFile =
new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Cree el archivonewFilecreate(128 DATA Archivo de datos con un registro de 128 bytes)
Abra el archivo solo para escritura Nota el formato de registro del archivo ya se ha establecido mediante create()newFileopen(AS400FileWRITE_ONLY 0 AS400FileCOMMIT_LOCK_LEVEL_NONE)
Escriba un registro en el archivo Debido a que el formato de registro se establecioacute en create() se puede llamar a getRecordFormat() para obtener un registro debidamente formateado para este archivoRecord writeRec = newFilegetRecordFormat()getNewRecord()writeRecsetField(0 Registro uno)newFilewrite(writeRec)
Cierre el archivo porque ya ha terminado de usarlonewFileclose()
Desconecte puesto que ya ha terminado de usar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Ejemplo 2 cuando se crea un archivo especificando un archivo fuente DDS existente este se especifica enel meacutetodo create() Para poder abrir el archivo primero es preciso establecer su formato de registromediante el meacutetodo setRecordFormat() Por ejemplo
Cree un objeto AS400 el archivo se crearaacute en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree objetos QSYSObjectPathName para el archivo nuevo y para el archivo DDSQSYSObjectPathName file = new QSYSObjectPathName(MYLIB MYFILE FILE MBR)QSYSObjectPathName ddsFile = new QSYSObjectPathName(MYLIB DDSFILE FILE MBR)
Cree un objeto de archivo que represente el archivoSequentialFile newFile = new SequentialFile(sys file)
Cree el archivonewFilecreate(ddsFile Archivo creado utilizando la descripcioacuten DDSFile)
172 IBM Toolbox para Java IBM Toolbox para Java
Establezca el formato de registro del archivo recuperaacutendolo del servidornewFilesetRecordFormat(new AS400FileRecordDescription(sysnewFilegetPath())retrieveRecordFormat()[0])
Abra el archivo para escrituranewFileopen(AS400FileWRITE_ONLY 0 AS400FileCOMMIT_LOCK_LEVEL_NONE)
Escriba un registro en el archivo El meacutetodo getRecordFormat() seguido del meacutetodo getNewRecord() serviraacute para obtener obtener un registro predeterminado para el archivoRecord writeRec = newFilegetRecordFormat()getNewRecord()newFilewrite(writeRec)
Cierre el archivo porque ya ha terminado de usarlonewFileclose()
Desconecte puesto que ya ha terminado de utilizar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Ejemplo 3 cuando se crea un archivo especificando un objeto RecordFormat este objeto se especifica enel meacutetodo create() El meacutetodo establece el formato de registro correspondiente al objeto No debe llamarseal meacutetodo setRecordFormat() para el objeto
Cree un objeto AS400 el archivo se crearaacute en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile newFile =
new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Recupere el formato de registro de un archivo existenteRecordFormat recordFormat = new AS400FileRecordDescription(sysQSYSLIBMYLIBLIBEXISTINGFILEMBR1MBR)retrieveRecordFormat()[0]
Cree el archivonewFilecreate(recordFormat Archivo creado usando un objeto formato de registro)
Abra el archivo solo para escritura Nota el formato de registro del archivo ya se ha establecido mediante create()newFileopen(AS400FileWRITE_ONLY 0 AS400FileCOMMIT_LOCK_LEVEL_NONE)
Escriba un registro en el archivo El objeto recordFormat serviraacute para obtener un registro predeterminado debidamente formateado para el archivoRecord writeRec = recordFormatgetNewRecord()newFilewrite(writeRec)
Cierre el archivo porque ya ha terminado de usarlonewFileclose() Desconecte puesto que ya ha terminado de utilizar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Cuando suprima archivos y miembros utilice estos meacutetodosv Utilice el meacutetodo delete() para suprimir archivos del servidor y todos sus miembrosv Utilice el meacutetodo deleteMember() para suprimir tan solo un miembro de un archivo
IBM Toolbox para Java 173
Utilice el meacutetodo addPhysicalFileMember() para antildeadir miembros a un archivoInformacioacuten relacionadaJavadoc AS400File
Leer y escribir registros
Puede utilizar la clase AS400File para leer escribir actualizar y suprimir registros en los archivos delservidor
El acceso al registro se realiza mediante la clase Record que estaacute descrita por una clase RecordFormat Elformato de registro debe establecerse mediante el meacutetodo setRecordFormat() antes de abrir el archivo amenos que el archivo se haya acabado de crear (sin la intervencioacuten de close()) con uno de los meacutetodoscreate() pues estos meacutetodos establecen el formato de registro correspondiente al objeto
Utilice los meacutetodos read() para leer un registro del archivo Se proporcionan meacutetodos para realizar estastareasv read() - leer el registro situado en la posicioacuten actual del cursorv readFirst() - leer el primer registro del archivov readLast() - leer el uacuteltimo registro del archivov readNext() - leer el siguiente registro del archivov readPrevious() - leer el registro anterior del archivo
El ejemplo siguiente muestra coacutemo se utiliza el meacutetodo readNext() Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Supongamos que se ha empleado la clase AS400FileRecordDescription para generar el coacutedigo de una subclase de RecordFormat que representa el formato de registro del archivo MYFILE de la biblioteca MYLIB El coacutedigo se ha se ha compilado y estaacute disponible para que lo utilice el programa JavaRecordFormat recordFormat = new MYFILEFormat()
Establezca el formato de registro para myFile Esto se debe realizar antes de invocar el meacutetodo open()myFilesetRecordFormat(recordFormat)
Abra el archivomyFileopen(AS400FileREAD_ONLY 0 AS400FileCOMMIT_LOCK_LEVEL_NONE)
Lea cada registro del archivo escribiendo el campo CUSTNAME (nombre de cliente) en SystemoutSystemoutprintln( LISTA DE CLIENTES)Systemoutprintln(____________________________________________)
Record record = myFilereadNext()while(record = null)
Systemoutprintln(recordgetField(CUSTNAME))record = myFilereadNext()
Cierre el archivo porque ya ha terminado de usarlo
174 IBM Toolbox para Java IBM Toolbox para Java
myFileclose()
Desconecte puesto que ya ha terminado de utilizar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Utilice el meacutetodo update() para actualizar el registro situado en la posicioacuten del cursor
Por ejemplo Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Supongamos que se ha empleado la clase AS400FileRecordDescription para generar el coacutedigo de una subclase de RecordFormat que representa el formato de registro del archivo MYFILE de la biblioteca MYLIB El coacutedigo se ha compilado y estaacute disponible para que lo utilice el programa JavaRecordFormat recordFormat = new MYFILEFormat()
Establezca el formato de registro para myFile Esto se debe realizar antes de invocar el meacutetodo open()myFilesetRecordFormat(recordFormat)
Abra el archivo para actualizacioacutenmyFileopen(AS400FileREAD_WRITE 0 AS400FileCOMMIT_LOCK_LEVEL_NONE)
Actualice el primer registro del archivo Supongamos que newName es una serie que tiene el nombre nuevo para CUSTNAME (nombre de cliente)Record updateRec = myFilereadFirst()updateRecsetField(CUSTNAME newName)myFileupdate(updateRec)
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de usar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Utilice el meacutetodo write() para antildeadir registros al final de un archivo Al archivo se le puede antildeadir unregistro individual o una matriz de registros
Utilice el meacutetodo deleteCurrentRecord() para suprimir el registro situado en la posicioacuten del cursorInformacioacuten relacionadaJavadoc AS400File
Bloquear archivos
El programa Java puede bloquear un archivo para impedir que los demaacutes usuarios accedan a dichoarchivo mientras el primer programa Java lo esteacute utilizando
Los tipos de bloqueo son los siguientes Puede encontrar maacutes informacioacuten acerca de los tipos de bloqueoen el Javadoc de AS400Filev Bloqueo de lecturaexclusivo - El programa Java actual lee registros y ninguacuten otro programa puede
acceder al archivo
IBM Toolbox para Java 175
v Bloqueo de lecturapermitir lectura compartida - El programa Java actual lee registros y los demaacutesprogramas pueden leer registros del archivo
v Bloqueo de lecturapermitir escritura compartida - El programa Java actual lee registros y los demaacutesprogramas pueden cambiar el archivo
v Bloqueo de escrituraexclusivo - El programa Java actual cambia el archivo y los demaacutes programas nopueden acceder al archivo
v Bloqueo de escriturapermitir lectura compartida - El programa Java actual cambia el archivo y losdemaacutes programas pueden leer registros del archivo
v Bloqueo de escriturapermitir escritura compartida - El programa Java actual cambia el archivo y losdemaacutes programas pueden cambiar el archivo
Para liberar los bloqueos obtenidos mediante el meacutetodo lock() el programa Java inicia el meacutetodoreleaseExplicitLocks()Informacioacuten relacionadaJavadoc AS400File
Utilizar bloques de registros
La clase AS400File de IBM Toolbox para Java utiliza bloques de registros para aumentar el rendimientov Si el archivo se ha abierto para acceso de solo lectura se lee un bloque de registros cuando el
programa Java lee un registro La agrupacioacuten en bloques aumenta el rendimiento debido a que laspeticiones de lectura ulteriores se pueden manejar sin tener que acceder al servidor Es muy pequentildea ladiferencia de rendimiento que hay entre leer un registro individual y leer varios registros Elrendimiento aumenta de manera notable si el servicio de registros se puede obtener del bloque deregistros puesto en la memoria cacheacute del clienteEl nuacutemero de registros que deben leerse de cada bloque se puede establecer al abrir el archivo Porejemplo
Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Supongamos que se ha empleado la clase AS400FileRecordDescription para generar el coacutedigo de una subclase de RecordFormat que representa el formato de registro del archivo MYFILE de la biblioteca MYLIB El coacutedigo se ha compilado y estaacute disponible para que lo utilice el programa JavaRecordFormat recordFormat = new MYFILEFormat()
Establezca el formato de registro para myFile Esto se debe realizar antes de invocar el meacutetodo open()myFilesetRecordFormat(recordFormat)
Abra el archivo Especifique 50 para el factor de bloquesint blockingFactor = 50myFileopen(AS400FileREAD_ONLY blockingFactor AS400FileCOMMIT_LOCK_LEVEL_NONE)
Lea el primer registro del archivo Debido a que se ha especificado el factor de bloques se recuperan 50 registros durante esta invocacioacuten de read()Record record = myFilereadFirst()for (int i = 1 i lt 50 ampamp record = null i++)
Los registros leiacutedos en este bucle se obtendraacuten del bloque de registros puestos en la memoria cacheacute del cliente
176 IBM Toolbox para Java IBM Toolbox para Java
record = myFilereadNext()
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de utilizar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
v Si el archivo se abre para acceso solo de escritura el factor de bloques indica cuaacutentos registros seescriben en el archivo de una sola vez cuando se invoca el meacutetodo write(Record[])Por ejemplo
Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Supongamos que se ha empleado la clase AS400FileRecordDescription para generar el coacutedigo de una subclase de RecordFormat que representa el formato de registro del archivo MYFILE de la biblioteca MYLIB El coacutedigo se ha compilado y estaacute disponible para que lo utilice el programa JavaRecordFormat recordFormat = new MYFILEFormat()
Establezca el formato de registro para myFile Esto se debe realizar antes de invocar el meacutetodo open()myFilesetRecordFormat(recordFormat)
Abra el archivo Especifique 50 para el factor de bloquesint blockingFactor = 50myFileopen(AS400FileWRITE_ONLY blockingFactor AS400FileCOMMIT_LOCK_LEVEL_NONE)
Cree una matriz de registros que deban escribirse en el archivoRecord[] records = new Record[100]for (int i = 0 i lt 100 i++)
Supongamos que el archivo tiene dos campos CUSTNAME y CUSTNUM (nombre y nuacutemero de cliente)records[i] = recordFormatgetNewRecord()records[i]setField(CUSTNAME Cliente + StringvalueOf(i))records[i]setField(CUSTNUM new Integer(i))
Escriba los registros en el archivo Debido a que el factor de bloques es 50 solo se realizan dos viajes al servidor escribieacutendose 50 registros en cada viajemyFilewrite(records)
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de utilizar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
v Si el archivo se abre para acceso de lecturaescritura no se lleva a cabo la agrupacioacuten en bloques Deespecificarse un factor de bloques en el meacutetodo open() dicho valor no se tiene en cuentaJavadoc AS400File
IBM Toolbox para Java 177
Fijar la posicioacuten del cursor
Un archivo abierto dispone de un cursor El cursor sentildeala al registro que se ha de leer actualizar osuprimir Cuando se abre un archivo por primera vez el cursor sentildeala al principio del archivo Elprincipio del archivo se encuentra antes del primer registro
Utilice estos meacutetodos para fijar la posicioacuten del cursorv positionCursorAfterLast() - Situacutea el cursor despueacutes del uacuteltimo registro La existencia de este meacutetodo se
debe a que con eacutel los programas Java pueden utilizar el meacutetodo readPrevious() para acceder a losregistros del archivo
v positionCursorBeforeFirst() - Situacutea el cursor antes del primer registro La existencia de este meacutetodo sedebe a que con eacutel los programas Java pueden utilizar el meacutetodo readNext() para acceder a los registrosdel archivo
v positionCursorToFirst() - Situacutea el cursor en el primer registrov positionCursorToLast() - Situacutea el cursor en el uacuteltimo registrov positionCursorToNext() - Mueve el cursor al siguiente registrov positionCursorToPrevious() - Mueve el cursor al registro anterior
El ejemplo siguiente muestra coacutemo se utiliza el meacutetodo positionCursorToFirst() para situar el cursor Cree un objeto AS400 el archivo existe en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto de archivo que represente el archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)
Supongamos que se ha empleado la clase AS400FileRecordDescription para generar el coacutedigo de una subclase de RecordFormat que representa el formato de registro del archivo MYFILE de la biblioteca MYLIB El coacutedigo se ha compilado y estaacute disponible para que lo utilice el programa JavaRecordFormat recordFormat = new MYFILEFormat()
Establezca el formato de registro para myFile Esto se debe realizar antes de invocar el meacutetodo open()myFilesetRecordFormat(recordFormat)
Abra el archivomyFileopen(AS400FileREAD_WRITE 1 AS400FileCOMMIT_LOCK_LEVEL_NONE)
Suprima el primer registro del archivomyFilepositionCursorToFirst()myFiledeleteCurrentRecord()
Cierre el archivo porque ya ha terminado de usarlomyFileclose()
Desconecte puesto que ya ha terminado de utilizar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
Informacioacuten relacionadaJavadoc AS400File
178 IBM Toolbox para Java IBM Toolbox para Java
Control de compromiso
Mediante el control de compromiso el programa Java dispone de otro nivel de control sobre larealizacioacuten de cambios en un archivo Si el control de compromiso estaacute activado las transaccionesefectuadas en un archivo quedan pendientes mientras no se comprometan o se retrotraigan Si secomprometen todos los cambios se ponen en el archivo Si se retrotraen todos los cambios quedandescartados La transaccioacuten puede consistir en cambiar un registro existente antildeadir un registro suprimirun registro o incluso leer un registro que dependa del nivel de bloqueo de control de compromisoespecificado en el meacutetodo open()
Los niveles de control de compromiso son los siguientes Para ver maacutes detalles acerca de cada nivelconsulte el Javadoc de AS400Filev Todos - Todos los registros del archivo a los que se accede quedan bloqueados hasta que la transaccioacuten
se comprometa o se retrotraigav Cambio - Los registros del archivo que se actualizan antildeaden y suprimen quedan bloqueados hasta que
la transaccioacuten se comprometa o se retrotraigav Estabilidad de cursor - Los registros del archivo que se actualizan antildeaden y suprimen quedan
bloqueados hasta que la transaccioacuten se comprometa o se retrotraiga Los registros a los que se accedesin que se realice cambios en ellos solo quedan bloqueados hasta que se acceda a otro registro
v Ninguno - No se realiza ninguacuten control de compromiso en el archivo Los cambios se poneninmediatamente en el archivo y no pueden retrotraerse
Puede utilizar el meacutetodo startCommitmentControl() para iniciar el control de compromiso Dicho controlse aplica a la conexioacuten de AS400 El control de compromiso una vez que se ha iniciado para unaconexioacuten se aplica a todos los archivos abiertos bajo esa conexioacuten a partir del momento en que se inicioacuteel control de compromiso Los archivos que se han abierto antes de iniciar el control de compromiso nose encuentran bajo dicho control El nivel de control de compromiso para archivos individuales seespecifica en el meacutetodo open() Especifique COMMIT_LOCK_LEVEL_DEFAULT para utilizar el mismonivel de control de compromiso que el especificado en el meacutetodo startCommitmentControl()
Por ejemplo Cree un objeto AS400 los archivos existen en este servidorAS400 sys = new AS400(mySystemmyCompanycom)
Cree tres objetos archivoSequentialFile myFile = new SequentialFile(sys QSYSLIBMYLIBLIBMYFILEFILEFILEMBR)SequentialFile yourFile = new SequentialFile(sys QSYSLIBYOURLIBLIBYOURFILEFILEFILEMBR)SequentialFile ourFile = new SequentialFile(sys QSYSLIBOURLIBLIBOURFILEFILEFILEMBR)
Abra el archivo yourFile antes de iniciar el control de compromiso A este archivo no se le aplica ninguacuten control de compromiso El paraacutemetro nivel de bloqueo de compromiso no se tiene en cuenta porque el control de compromiso no se ha iniciado para la conexioacutenyourFilesetRecordFormat(new YOURFILEFormat())yourFileopen(AS400FileREAD_WRITE 0 AS400FileCOMMIT_LOCK_LEVEL_DEFAULT)
Inicie el control de compromiso para la conexioacuten Nota se puede usar cualquiera de los tres archivos para esta llamada a startCommitmentControl()myFilestartCommitmentControl(AS400FileCOMMIT_LOCK_LEVEL_CHANGE)
Abra myFile y ourFilemyFilesetRecordFormat(new MYFILEFormat())
Use el mismo nivel de bloqueo de compromiso que el especificado al iniciar el control de compromisomyFileopen(AS400FileWRITE_ONLY 0 COMMIT_LOCK_LEVEL_DEFAULT)
IBM Toolbox para Java 179
ourFilesetRecordFormat(new OURFILEFormat()) Especifique un nivel de bloqueo de compromiso distinto del que habiacutea al iniciar el control de compromisoourFileopen(AS400FileREAD_WRITE 0 COMMIT_LOCK_LEVEL_CURSOR_STABILITY)
Escriba y actualice registros en los tres archivos
Comprometa los cambios para los archivos myFile y ourFile Observe que el compromiso compromete todos los cambios para la conexioacuten aunque solo se ha invocado en un objeto AS400FilemyFilecommit() Cierre los archivosmyFileclose()yourFileclose()ourFileclose()
Finalice el control de compromiso Ello finaliza el control de compromiso para la conexioacutenourFileendCommitmentControl()
Desconecte puesto que ya ha terminado de usar el acceso a nivel de registrosysdisconnectService(AS400RECORDACCESS)
El meacutetodo commit() compromete todas las transacciones a partir del liacutemite del uacuteltimo compromiso parala conexioacuten El meacutetodo rollback() descarta todas las transacciones a partir del liacutemite del uacuteltimocompromiso para la conexioacuten El control de compromiso para una conexioacuten se finaliza mediante elmeacutetodo endCommitmentControl() Si se cierra un archivo antes de invocar el meacutetodo commit() orollback() se retrotraen todas las transacciones que no se hayan comprometido Todos los archivos que sehan abierto bajo control de compromiso deben cerrarse antes de llamar al meacutetodoendCommitmentControl()
Los ejemplos que figuran a continuacioacuten muestran coacutemo iniciar el control de compromiso utilizar lasfunciones de compromiso o retrotraccioacuten y luego finalizar el control de compromiso
Supongamos que el objeto AS400 y el archivo ya tienen creada una instancia
Inicie el control de compromiso para CHANGEaFilestartCommitmentControl(AS400FileCOMMIT_LOCK_LEVEL_CHANGE)
Abra el archivo y realice varios cambios Por ejemplo actualice antildeada o suprima registros
Basaacutendose en un distintivo guarde o descarte las transaccionesif (saveChanges)
aFilecommit()else
aFilerollback()
Cierre el archivoaFileclose()
Finalice el control de compromiso para la conexioacutenaFileendCommitmentControl()
Informacioacuten relacionadaJavadoc AS400File
Clase SaveFileLa clase SaveFile representa un archivo de guardar en un servidorInformacioacuten relacionadaJavadoc de SaveFile
180 IBM Toolbox para Java IBM Toolbox para Java
Clase ServiceProgramCallLa clase ServiceProgramCall de IBM Toolbox para Java permite al usuario llamar a un programa deservicio IBM i ServiceProgramCall es una subclase de la clase ProgramCall que se utiliza para llamar aprogramas de IBM i Si desea llamar a un programa de IBM i haacutegalo con la clase ProgramCall
La clase ServiceProgramCall hace que sea posible llamar a un programa de servicio de IBM i pasar datosa un programa de servicio mediante paraacutemetros de entrada y acceder a los datos devueltos por elprograma de servicio mediante paraacutemetros de salida Al utilizar la clase ServiceProgramCall el objetoAS400 se conecta al servidor En Gestioacuten de conexiones encontraraacute informacioacuten acerca de coacutemo segestionan las conexiones
El comportamiento predeterminado consiste en que los programas de servicio se ejecuten en un trabajoservidor aparte aun cuando el programa Java y el programa de servicio esteacuten en el mismo servidorPuede alterar temporalmente el comportamiento predeterminado y hacer que el programa de servicio seejecute en el trabajo Java mediante el meacutetodo setThreadSafe() heredado de ProgramCall
Utilizacioacuten de la clase ServiceProgramCall
Para poder utilizar la clase ServiceProgramCall debe asegurarse de que se cumplen estos requisitosv El programa de servicio debe estar en un servidorv No puede pasar maacutes de siete paraacutemetros al programa de serviciov El valor de retorno del programa de servicio es vaciacuteo (void) o de tipo numeacuterico
Trabajar con objetos ProgramParameter
La clase ProgramParameter funciona junto con la clase ServiceProgramCall para pasar datos deparaacutemetro a un programa de servicio de IBM i o desde eacutel Para pasar datos de entrada al programa deservicio utilice setInputData()
Para solicitar la cantidad de datos de salida que desea que se devuelva utilice setOutputDataLength()Para recuperar los datos de salida una vez que el programa de servicio ha terminado de ejecutarse utilicegetOutputData() La clase ServiceProgramCall ademaacutes de conocer los datos en siacute necesita conocer coacutemoha de pasar los datos de paraacutemetro al programa de servicio El meacutetodo setParameterType() deProgramParameter permite proporcionar esta informacioacuten El tipo indica si el paraacutemetro se pasa por valoro por referencia En los dos casos los datos se enviacutean desde el cliente al servidor Una vez que los datosesteacuten en el servidor eacuteste utiliza el tipo de paraacutemetro para llamar correctamente al programa de servicio
Todos los paraacutemetros tendraacuten el formato de una matriz de bytes Por lo tanto para realizar la conversioacutenentre los formatos de IBM i y Java se utilizan las clases de conversioacuten y descripcioacuten de datos
Javadoc ServiceProgramCallJavadoc ProgramCallJavadoc ProgramParameter
Clase SubsystemLa clase Subsystem representa un subsistema en el servidorInformacioacuten relacionadaJavadoc de Subsystem
Clases SystemStatusLas clases SystemStatus permiten recuperar informacioacuten sobre el estado del sistema asiacute como recuperar ycambiar informacioacuten de agrupacioacuten del sistema
El objeto SystemStatus le permite recuperar informacioacuten sobre el estado con los siguientes meacutetodos
IBM Toolbox para Java 181
v getUsersCurrentSignedOn() devuelve el nuacutemero de usuarios que tienen iniciada una sesioacuten en elsistema en este momento
v getUsersTemporarilySignedOff() devuelve el nuacutemero de trabajos interactivos desconectadosv getDateAndTimeStatusGathered() devuelve la fecha y la hora del momento en que se recopiloacute
informacioacuten sobre el estado del sistemav getJobsInSystem() devuelve el nuacutemero total de trabajos de usuario y del sistema que se estaacuten
ejecutando en este momentov getBatchJobsRunning() devuelve el nuacutemero de trabajos por lotes que se ejecutan actualmente en el
sistemav getBatchJobsEnding() devuelve el nuacutemero de trabajos por lotes que estaacuten en proceso de finalizacioacutenv getSystemPools() devuelve una enumeracioacuten que contiene un objeto SystemPool para cada una de las
agrupaciones del sistema
Ademaacutes de los meacutetodos que hay en la clase SystemStatus tambieacuten puede acceder a SystemPool medianteSystemStatus SystemPool le permite obtener informacioacuten acerca de las agrupaciones del sistema yrealizar cambios en dicha informacioacuten
Ejemplo
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Este ejemplo muestra coacutemo se utiliza la puesta en memoria cacheacute con la clase SystemStatusAS400 system = new AS400(MyAS400)SystemStatus status = new SystemStatus(system)
Active la puesta en memoria cacheacute De forma predeterminada estaacute desactivadastatussetCaching(true)
Esto recuperaraacute el valor a partir del sistema Cada llamada ulterior utilizaraacute el valor puesto en memoria cacheacute en vez de recuperarlo del sistemaint jobs = statusgetJobsInSystem()
Realice aquiacute otras operaciones
Asiacute se averigua si la puesta en memoria cacheacute todaviacutea estaacute habilitadaif (statusisCaching())
Esto recuperaraacute el valor a partir de la memoria cacheacutejobs = statusgetJobsInSystem()
Vaya al sistema la proacutexima vez aunque la puesta en memoria cacheacute esteacute habilitadastatusrefreshCache()
Esto recuperaraacute el valor a partir del sistemajobs = statusgetJobsInSystem()
Desactive la puesta en memoria cacheacute Todas las llamadas ulteriores iraacuten al sistemastatussetCaching(false)
Esto recuperaraacute el valor a partir del sistemajobs = statusgetJobsInSystem()
Javadoc SystemStatus
182 IBM Toolbox para Java IBM Toolbox para Java
Clase SystemPool
La clase SystemPool permite recuperar y cambiar informacioacuten de agrupacioacuten del sistema
La clase SystemPool incluye estos meacutetodosv El meacutetodo getPoolSize() que devuelve el tamantildeo de la agrupacioacuten y el meacutetodo setPoolSize() que lo
establecev El meacutetodo getPoolName() que recupera el nombre de la agrupacioacuten y el meacutetodo setPoolName() que
lo establecev El meacutetodo getReservedSize() que devuelve la cantidad de almacenamiento de la agrupacioacuten reservado
para uso del sistemav El meacutetodo getDescription() que devuelve la descripcioacuten de la agrupacioacuten del sistemav El meacutetodo getMaximumActiveThreads() que devuelve el nuacutemero maacuteximo de hebras que pueden estar
activas en la agrupacioacuten en cualquier momentov El meacutetodo setMaximumFaults() que establece la directriz de maacuteximo de faltas por segundo que se
utilizaraacute para esta agrupacioacuten del sistemav El meacutetodo setPriority() que establece la prioridad de esta agrupacioacuten del sistema en relacioacuten con las
demaacutes agrupaciones del sistema
Ejemplo
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Cree un objeto AS400AS400 as400 = new AS400(nombre del sistema)
Construya un objeto agrupacioacuten del sistemaSystemPool systemPool = new SystemPool(as400SPOOL)
Obtenga la opcioacuten de paginacioacuten de la agrupacioacuten del sistemaSystemoutprintln(Opcioacuten de paginacioacuten +systemPoolgetPagingOption())
Informacioacuten relacionadaJavadoc SystemPool
Valores del sistemaLas clases de valores del sistema permiten a un programa Java recuperar y cambiar valores del sistema yatributos de red Tambieacuten puede definir su propio grupo para contener los valores del sistema que desee
Un objeto SystemValue principalmente contiene la informacioacuten siguientev Nombrev Descripcioacutenv Releasev Valor
Mediante la clase SystemValue recupere un uacutenico valor del sistema con el meacutetodo getValue() y cambieun valor del sistema con el meacutetodo setValue()
Asimismo puede recuperar informacioacuten de grupo sobre un valor del sistema determinadov Para recuperar el grupo definido por el sistema al que pertenece un valor del sistema utilice el meacutetodo
getGroup()v Para recuperar el grupo definido por el usuario al que pertenece un objeto SystemValue (si existe)
utilice los meacutetodos getGroupName() y getGroupDescription()
IBM Toolbox para Java 183
El valor de un valor del sistema siempre que se recupera por primera vez se obtiene a partir delservidor y se almacena en la memoria cacheacute En las recuperaciones ulteriores el valor que se devuelve esel que estaacute en la memoria cacheacute Si en vez del valor almacenado en la memoria cacheacute se desea obtener elvalor actual se debe utilizar un meacutetodo clear() para borrar la memoria cacheacute actual
Lista de valores del sistema
SystemValueList representa una lista de valores del sistema del servidor especificado La lista sesubdivide en varios grupos definidos por el sistema que permiten al programa Java accedersimultaacuteneamente a parte de los valores del sistema
Grupo de valores del sistema
SystemValueGroup representa un conjunto definido por el usuario de valores del sistema y atributos dered No se trata de un contenedor sino de una faacutebrica para generar y mantener conjuntos exclusivos devalores del sistema
Puede crear un objeto SystemValueGroup especificando uno de los grupos definidos por el sistema (unade las constantes de la clase SystemValueList) o especificando una matriz de nombres de valores delsistema
Puede antildeadir de forma individual los nombres de valores del sistema para incluir en el grupo medianteel meacutetodo add() Asimismo puede eliminarlos mediante el meacutetodo remove()
Una vez que el objeto SystemValueGroup se haya llenado con los nombres de valores del sistemadeseados obtenga los objetos SystemValue reales del grupo llamando al meacutetodo getSystemValues() Deesta forma un objeto SystemValueGroup toma un conjunto de nombres de valores del sistema y generaun vector de objetos SystemValue todos ellos con el sistema el nombre de grupo y la descripcioacuten degrupo del objeto SystemValueGroup
Para renovar un vector de todos los objetos SystemValue a la vez utilice el meacutetodo refresh()
Ejemplos de coacutemo se utilizan las clases SystemValue y SystemValueList
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
El ejemplo siguiente muestra coacutemo se crea y recupera un valor del sistemaCree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto valor del sistema que represente los segundos actuales en el sistemaSystemValue sysval = new SystemValue(sys QSECOND)
Recupere el valorString second = (String)sysvalgetValue()
En este momento QSECOND se pone en memoria cacheacute Borre la memoria cacheacute para recuperar elvalor maacutes actualizado del sistemasysvalclear()second = (String)sysvalgetValue()
Cree una lista de valores del sistemaSystemValueList list = new SystemValueList(sys)
Recupere la totalidad de los valores de fechahora del sistema
184 IBM Toolbox para Java IBM Toolbox para Java
Vector vec = listgetGroup(SystemValueListGROUP_DATTIM)
Desconeacutectese del sistemasysdisconnectAllServices()
Ejemplos de coacutemo se utiliza la clase SystemValueGroup
El ejemplo siguiente muestra coacutemo se construye un grupo de nombres de valores del sistema y coacutemodespueacutes se trabaja con ellosCree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Cree un grupo de valores del sistema que inicialmente representa todos los atributos de red del sistemaString name = My GroupString description = Es uno de mis valores del sistemaSystemValueGroup svGroup = new SystemValueGroup(sys name description SystemValueListGROUP_NET)
Antildeada al grupo algunos nombres de valores del sistema maacutes y elimine algunos no deseadossvGroupadd(QDATE)svGroupadd(QTIME)svGroupremove(NETSERVER)svGroupremove(SYSNAME)
Obtenga los objetos SystemValue reales Se devuelven dentro de un vectorVector sysvals = svGroupgetSystemValues()
Observaraacute que es uno de los valores indicados como mis valores del sistemaSystemValue mySystemValue = (SystemValue)sysvalselementAt(0)Systemoutprintln(mySystemValuegetName()+ - +mySystemValuegetGroupDescription())
Podemos antildeadir al grupo otro objeto SystemValue de otro sistemaAS400 sys2 = new AS400(otherSystemmyCompanycom)SystemValue sv = new SystemValue(sys2 QDATE)sysvalsaddElement(sv)
Ahora renueve el grupo completo de todos los valores del sistema a la vezNo importa si algunos valores del sistema son de servidores System i distintosNo importa si algunos valores del sistema se han generado con SystemValueGroup y otros noSystemValueGrouprefresh(sysvals)
Desconeacutectese de los sistemassysdisconnectAllServices()sys2disconnectAllServices()
Javadoc SystemValueJavadoc SystemValueListJavadoc SystemValueGroup
Clase TraceLa clase Trace permite al programa Java anotar puntos de rastreo y mensajes de diagnoacutestico Estainformacioacuten ayuda a reproducir y a diagnosticar problemas
Nota tambieacuten puede establecer el rastreo mediante las propiedades de rastreo del sistema
La clase Trace anota las siguientes categoriacuteas de informacioacuten
Categoriacutea de informacioacuten Descripcioacuten
Conversioacuten Anota las conversiones de juego de caracteres entre laspaacuteginas de coacutedigos y Unicode Solo utilizan estacategoriacutea las clases de IBM Toolbox para Java
IBM Toolbox para Java 185
Categoriacutea de informacioacuten Descripcioacuten
Corriente de datos Anota los datos que fluyen entre el sistema y elprograma Java Solo utilizan esta categoriacutea las clases deIBM Toolbox para Java
Diagnoacutestico Anota informacioacuten sobre el estado
Error Anota errores adicionales que ocasionan una excepcioacuten
Informacioacuten Rastrea el flujo a traveacutes de un programa
PCML Esta categoriacutea se utiliza para determinar coacutemo interpretaPCML los datos que se enviacutean al servidor y que sereciben del mismo
Proxy Las clases de IBM Toolbox para Java utilizan estacategoriacutea para anotar el flujo de datos entre el cliente y elservidor proxy
Aviso Anota informacioacuten acerca de los errores de los que elprograma ha podido recuperarse
Total Esta categoriacutea permite habilitar o inhabilitar el rastreopara todas las categoriacuteas anteriores a la vez Lainformacioacuten de rastreo no se puede anotar directamenteen esta categoriacutea
Las clases de IBM Toolbox para Java tambieacuten utilizan las categoriacuteas de rastreo Cuando un programa Javahabilita las anotaciones la informacioacuten de IBM Toolbox para Java se incluye junto con la informacioacutenregistrada por la aplicacioacuten
El rastreo se puede habilitar para una sola categoriacutea o para un conjunto de categoriacuteas Una vezseleccionadas las categoriacuteas utilice el meacutetodo setTraceOn para activar y desactivar el rastreo Para escribirlos datos en las anotaciones se utiliza el meacutetodo log
Puede enviar los datos de rastreo de distintos componentes a anotaciones separadas Los datos derastreo de forma predeterminada se escriben en las anotaciones predeterminadas Utilice el rastreo decomponentes para escribir datos de rastreo especiacuteficos de la aplicacioacuten en unas anotaciones distintas o enla salida estaacutendar El rastreo de componentes permite separar faacutecilmente los datos de rastreo de unaaplicacioacuten especiacutefica de los demaacutes datos
Una cantidad excesiva de anotaciones puede afectar al rendimiento Utilice el meacutetodo isTraceOn paraconsultar el estado actual del rastreo El programa Java puede emplear este meacutetodo para determinar siconstruye el registro de rastreo antes de llamar al meacutetodo log Llamar al meacutetodo log cuando el rastreoestaacute desactivado no es un error pero se invierte maacutes tiempo
El valor predeterminado es escribir informacioacuten de anotaciones en la salida estaacutendar Para redirigir lasanotaciones a un archivo llame al meacutetodo setFileName() desde la aplicacioacuten Java En general esto solofunciona para las aplicaciones Java porque la mayoriacutea de los navegadores no dan acceso a los appletspara escribir en el sistema de archivos local
Las anotaciones estaacuten desactivadas de forma predeterminada Los programas Java proporcionan alusuario un procedimiento que le permite activar las anotaciones para que le resulte faacutecil habilitarlas Porejemplo la aplicacioacuten puede realizar un anaacutelisis para obtener un paraacutemetro de liacutenea de mandatos queindique queacute categoriacutea de datos se anota El usuario puede establecer este paraacutemetro cuando se necesiteinformacioacuten de anotaciones
186 IBM Toolbox para Java IBM Toolbox para Java
Ejemplos
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Los ejemplos que hay a continuacioacuten muestran coacutemo se utiliza la clase Trace
Ejemplo de coacutemo se utiliza setTraceOn() y de la escritura de datos en unas anotaciones mediante elmeacutetodo log
Habilite las anotaciones de diagnoacutestico informacioacuten y avisoTracesetTraceDiagnosticOn(true)TracesetTraceInformationOn(true)TracesetTraceWarningOn(true)
Active el rastreoTracesetTraceOn(true)
En este punto del programa Java escriba en las anotacionesTracelog(TraceINFORMATION Se acaba de entrar en la clase xxx meacutetodo xxx)
Desactive el rastreoTracesetTraceOn(false)
Ejemplo coacutemo se utiliza Trace
En el siguiente coacutedigo el meacutetodo 2 es la manera preferible de utilizar el rastreo Meacutetodo 1 - construya un registro de rastreo y luego llame al meacutetodo log y deje que la clase de rastreo determine si los datos deben anotarse Este meacutetodo funcionaraacute pero seraacute maacutes lento que el coacutedigo siguienteString traceData = new String(Se acaba de entrar en la clase xxx datos = )traceData = traceData + data + estado = + stateTracelog(TraceINFORMATION traceData)
Meacutetodo 2 - compruebe el estado de las anotaciones antes de incorporar la informacioacuten a las anotaciones Este meacutetodo es maacutes raacutepido cuando el rastreo no estaacute activoif (TraceisTraceOn() ampamp TraceisTraceInformationOn())
String traceData = new String(se acaba de entrar en la clase xxx datos = )traceData = traceData + data + estado = + stateTracelog(TraceINFORMATION traceData)
Ejemplo coacutemo se utiliza el rastreo de componentes Cree una serie de componente Es maacutes eficaz crear un objeto que muchos literales StringString myComponent1 = commyCompanyxyzComponentString myComponent2 = commyCompanyabcComponent
Enviacutee los datos de rastreo de IBM Toolbox para Java y los de componente a archivos distintos El rastreo contendraacute toda la informacioacuten de rastreo mientras que cada archivo de anotaciones de componente solo contendraacute la informacioacuten de rastreo especiacutefica de ese componente Si no se especifica un archivo de rastreo todos los datos de rastreo iraacuten a la salida estaacutendar con el componente especificado frente a cada uno de los mensajes de rastreo
TracesetFileName(cbitbucket) TracesetFileName(myComponent1 cComponent1log) TracesetFileName(myComponent2 cComponent2log)
TracesetTraceOn(true) Active el rastreoTracesetTraceInformationOn(true) Habilite los mensajes informativos
IBM Toolbox para Java 187
Anote los datos de rastreo especiacuteficos de componente o los generales de IBM Toolbox para Java
TracesetFileName(cbitbucket)TracesetFileName(myComponent1 cComponent1log)
Informacioacuten relacionadaJavadoc Trace
Clases de usuarios y gruposLas clases de usuarios y grupos de IBM Toolbox para Java permiten obtener una lista de los usuarios ygrupos de usuarios existentes en el servidor asiacute como informacioacuten acerca de cada usuario mediante unprograma Java
La informacioacuten de usuario que se puede recuperar comprende la fecha del inicio de sesioacuten anterior elestado la fecha del uacuteltimo cambio de contrasentildea la fecha de caducidad de la contrasentildea y la clase deusuario Cuando acceda al objeto User utilice el meacutetodo setSystem() para establecer el nombre delsistema y el meacutetodo setName() para establecer el nombre de usuario Tras estos pasos utilice el meacutetodoloadUserInformation() para obtener la informacioacuten del servidor
El objeto UserGroup representa un usuario especial cuyo perfil de usuario es un perfil de grupo Con elmeacutetodo getMembers() puede obtenerse una lista de los usuarios que son miembros del grupo
El programa Java puede iterar por la lista utilizando una enumeracioacuten Todos los elementos de laenumeracioacuten son objetos Usergt por ejemplo
Cree un objeto AS400AS400 system = new AS400 (mySystemmyCompanycom)
Cree el objeto UserListUserList userList = new UserList (system)
Obtenga la lista de todos los usuarios y gruposEnumeration enum = userListgetUsers ()
Itere por la listawhile (enumhasMoreElements ())
User u = (User) enumnextElement ()Systemoutprintln (u)
Recuperar informacioacuten acerca de los usuarios y grupos
Utilice un objeto UserList para obtener una lista dev Todos los usuarios y gruposv Solo gruposv Todos los usuarios que son miembros de alguacuten grupov Todos los usuarios que no son miembros de alguacuten grupo
La uacutenica propiedad del objeto UserList que debe establecerse es el objeto AS400 que representa el sistemadel que se debe recuperar la lista de usuarios
De forma predeterminada se devuelven todos los usuarios Utilice una combinacioacuten de los meacutetodos deUserList setUserInfo() y setGroupInfo() para especificar exactamente queacute usuarios se devuelven
Javadoc UserJavadoc UserGroupJavadoc UserList
188 IBM Toolbox para Java IBM Toolbox para Java
Javadoc AS400ldquoEjemplo coacutemo se utiliza UserList para listar todos los usuarios de un grupo determinadordquo en lapaacutegina 472Este coacutedigo fuente es un ejemplo de UserList de IBM Toolbox para Java Este programa lista todos losusuarios de un grupo determinado
Clase UserSpaceLa clase UserSpace representa un espacio de usuario en el servidor Los paraacutemetros obligatorios son elnombre del espacio de usuario y el objeto AS400 que representa el servidor al que pertenece el espacio deusuario
En la clase UserSpace hay meacutetodos que permiten realizar estas tareasv Crear un espacio de usuariov Suprimir un espacio de usuariov Leer en un espacio de usuariov Escribir en un espacio de usuariov Obtener los atributos de un espacio de usuario Un programa Java puede obtener los atributos de valor
inicial valor de longitud y ampliacioacuten automaacutetica de un espacio de usuariov Establecer los atributos de un espacio de usuario Un programa Java puede establecer los atributos de
valor inicial valor de longitud y ampliacioacuten automaacutetica de un espacio de usuario
El objeto UserSpace requiere el nombre de viacutea de acceso del sistema de archivos integrado del programaEn Nombres de viacutea de acceso del sistema de archivos integrado puede encontrar maacutes informacioacuten
Al utilizar la clase UserSpace el objeto AS400 se conecta al servidor En Gestioacuten de conexiones encontraraacuteinformacioacuten acerca de coacutemo se gestionan las conexiones
El siguiente ejemplo crea un espacio de usuario y luego escribe datos en eacutel
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Cree un objeto AS400AS400 sys = new AS400(mySystemmyCompanycom)
Cree un objeto espacio de usuarioUserSpace US = new UserSpace(sys
QSYSLIBMYLIBLIBMYSPACEUSRSPC)
Use el meacutetodo create para crear el espacio de usuario en el servidorUScreate(10240 El tamantildeo inicial es 10 KB
true Sustituir si el espacio de usuario ya existe Ninguacuten atributo ampliado(byte) 0x00 El valor inicial es nullCreado por un programa Java Descripcioacuten del espacio de usuarioUSE) La autorizacioacuten de uso puacuteblico sobre el
espacio de usuario es USE
Use el meacutetodo write para escribir bytes en el espacio de usuarioUSwrite(Escribir esta serie en el espacio de usuario 0)
Javadoc UserSpaceJavadoc AS400
IBM Toolbox para Java 189
Clases commtraceLas clases commtrace de IBM Toolbox para Java permiten a los programas Java trabajar con los datos derastreo de comunicaciones de una descripcioacuten de liacutenea de LAN (Ethernet o Token Ring) especificada Elpaquete commtrace incluye una clase que se puede ejecutar como un programa de utilidad autoacutenomopara dar formato a los datos de rastreo de comunicaciones
Cuando se vuelca un rastreo de comunicaciones de un servidor en un archivo continuo la informacioacuten seguarda en un formato binario Las clases commtrace permiten trabajar con los diversos componentes delarchivo continuo
Nota los archivos de rastreo de comunicaciones pueden contener informacioacuten confidencial como porejemplo contrasentildeas sin cifrar Si el archivo de rastreo de comunicaciones se encuentra en el servidorsolo pueden acceder a los datos de rastreo los usuarios con la autorizacioacuten especial SERVICE Si mueveel archivo a un cliente aseguacuterese de proteger el archivo de forma adecuada Para obtener maacutesinformacioacuten sobre los rastreos de comunicaciones consulte los enlaces que encontraraacute al final de estapaacutegina
Utilice las clases commtrace para llevar a cabo las tareas siguientesv Dar formato a los datos de rastreo purosv Analizar los datos para extraer la informacioacuten deseada Puede analizar tanto los datos puros como los
datos con formato siempre que haya utilizado las clases commtrace para dar formato a los datos
Otras clases del paquete comibmas400commtrace que no aparecen aquiacute son especiacuteficas del tipo de datosde rastreo con el que se desea trabajar Para obtener maacutes informacioacuten sobre los rastreos decomunicaciones y todas las clases commtrace consulte la seccioacuten Rastreo de comunicaciones
Modelo de commtraceLa ilustracioacuten siguiente muestra coacutemo las clases commtrace se corresponden con un archivo de rastreo decomunicaciones El graacutefico tambieacuten indica los convenios de denominacioacuten que utilizan las clasescommtrace para los componentes de un rastreo de comunicaciones
Figura 1 modelo de commtrace
190 IBM Toolbox para Java IBM Toolbox para Java
Cada trama (Frame) del archivo de rastreo contiene dos secciones iniciales (que proporcionan informacioacutengeneral sobre el contenido de la trama) y el paquete que el servidor ha transmitido a otro punto de lared
La seccioacuten con los primeros 24 bytes de datos contiene informacioacuten general sobre el contenido de latrama como por ejemplo el nuacutemero de trama y la longitud de los datos Utilice la clase Frame paraprocesar esta informacioacuten
Clases Format y FormatPropertiesLa clase Format de IBM Toolbox para Java lee los datos puros y los datos con formato de un rastreo decomunicaciones FormatProperties establece las propiedades del objeto Format como las horas de inicio yfinalizacioacuten las direcciones IP y los puertos
La clase Format sirve de interfaz entre el programa llamador y las tramas del rastreo La claseFormatProperties permite establecer y recuperar propiedades que determinan coacutemo se comporta el objetoFormat cuando encuentra informacioacuten en las tramas del rastreo
Clase Format
Utilice la clase Format para leer tanto los datos de rastreo puros como los datos de rastreo a los que ya seha dado formato con las clases commtrace
Nota no puede emplear las clases commtrace para leer un rastreo de comunicaciones al que ha dadoformato mediante el control CL Imprimir rastreo de comunicaciones (PRTCMNTRC)
Utilice la clase Format para analizar y formatear la informacioacuten de un rastreo y a continuacioacuten enviaresa informacioacuten formateada a un archivo o dispositivo de impresioacuten Ademaacutes puede crear un
IBM Toolbox para Java 191
componente frontal graacutefico que visualice la informacioacuten en una aplicacioacuten autoacutenoma o en un navegadorSi desea seleccionar uacutenicamente datos especiacuteficos utilice la clase Format para proporcionar esainformacioacuten al programa Java Por ejemplo puede emplear la clase Format para leer direcciones IP de unrastreo y utilizar esos datos en su programa
Los constructores de Format aceptan argumentos que representan datos sin formato tales como un objetoIFSFileInputStream un archivo local o el archivo de rastreo binario Para visualizar un rastreo que ya haformateado utilice el constructor de Format predeterminado y despueacutes utilice FormatopenIFSFile() oFormatopenLclFile() para especificar el archivo formateado que desea mostrar
Ejemplos
Los ejemplos que hay a continuacioacuten muestran coacutemo se puede visualizar un rastreo guardado oformatear un rastreo binario
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante
Ejemplo visualizar un rastreo guardadoFormat fmt = new Format()fmtopenLclFile(pathtofile)
Lea el proacutelogoSystemoutprintln(fmtgetRecFromFile()) El nuacutemero total de registros del rastreo TCP y no TCPSystemoutprintln(Total de registros + fmtgetIntFromFile())String rec Lea los registros hasta llegar al finalwhile((rec = fmtgetRecFromFile())=null) Systemoutprintln(rec)
Ejemplo formatear un rastreo binario Cree un objeto FormatProperties De forma predeterminada efectuacutee una visualizacioacuten completaFormatProperties fmtprop = new FormatProperties()
Format fmt = new Format(pathtofile) Establece las propiedades de filtrado para este formatofmtsetFilterProperties(fmtprop)fmtsetOutFile(pathtooutputfile) Formatee el proacutelogofmtformatProlog() Formatee el rastreo y enviacutee los datos al archivo especificadofmttoLclBinFile()
Ejecutar Format como un programa de utilidad autoacutenomo
tambieacuten puede ejecutar la clase Format como un programa de utilidad autoacutenomo Encontraraacute maacutesinformacioacuten en este tema
Ejecutar Format como un programa autoacutenomo
Clase FormatProperties
Utilice la clase FormatProperties para especificar y recuperar las propiedades del objeto Format Dicho deotro modo cuando utilice la clase Format para enviar la informacioacuten a un archivo utilice la claseFormatProperties para filtrar la informacioacuten que desea enviar
192 IBM Toolbox para Java IBM Toolbox para Java
Estas propiedades especifican coacutemo se desea que el objeto Format maneje la informacioacuten que encuentraen las tramas del rastreo de comunicaciones El comportamiento predeterminado establece que el objetoFormat omitiraacute las propiedades para las que no se haya especificado un valor concreto
La clase FormatProperties proporciona constantes que se utilizaraacuten para establecer las propiedades Elestablecimiento de propiedades permite al objeto Format verificar queacute filtros se desea utilizar Porejemplo el coacutedigo siguiente establece que un objeto Format visualice un diaacutelogo de progreso y novisualice las tramas de difusioacuten
FormatProperties prop = new FormatProperties()propsetProgress(FormatPropertiesTRUE)propsetBroadcast(FormatPropertiesNO)
La mayor parte de las propiedades estaacuten disponibles para el objeto Format como filtros que se establecenexpliacutecitamente para incluir datos especiacuteficos Una vez establecidos los filtros el objeto Format visualizauacutenicamente los datos que coinciden con esos filtros Por ejemplo el coacutedigo siguiente establece un filtroque visualiza las tramas producidas entre una hora de inicio y una hora de finalizacioacuten determinadas
FormatProperties prop = new FormatProperties() Establezca el filtro en las horas de inicio y finalizacioacuten 230 pm y 245 pm GMT del 22 de julio de 2002 La hora se expresa como una indicacioacuten de la hora Unix(TM) que se basa en el origen estaacutendar 000000 GMT del 01011970propsetStartTime(1027348200)propsetEndTime(1027349100)
Ejemplo
El ejemplo siguiente muestra coacutemo se pueden emplear muchas de las clases commtrace entre ellas lasclases Format y FormatProperties para visualizar informacioacuten de rastreo en el supervisor
ldquoEjemplo coacutemo se utilizan las clases commtracerdquo en la paacutegina 197Javadoc FormatJavadoc FormatProperties
Ejecutar Format como un programa autoacutenomo
Ademaacutes de utilizar la clase Format en los programas Java puede ejecutarlo como un programa deutilidad de liacutenea de mandatos autoacutenomo para dar formato a un rastreo de comunicaciones El programaconecta un objeto IFSFileOutputStream con el archivo de salida especificado y escribe los datos en elmismo
La ejecucioacuten de Format como un programa de utilidad autoacutenomo permite dar formato a archivos con lacapacidad de proceso y el espacio de almacenamiento del servidor
Ejecutar Format desde una liacutenea de mandatos
Para ejecutar el programa de utilidad Format desde una solicitud de liacutenea de mandatos utilice elmandato siguiente
java comibmas400commtraceFormat [opciones]
donde [opciones] es una o varias de las opciones disponibles Las opciones son las siguientesv El sistema al que desea conectarsev El ID de usuario y la contrasentildea del sistemav El rastreo de comunicaciones que desea analizarv El archivo en el que desea almacenar los resultados
IBM Toolbox para Java 193
Para obtener una lista completa de las opciones disponibles consulte la documentacioacuten de consulta deJavadocs correspondiente a la clase Format
Ejecutar Format de forma remota
Para ejecutar esta clase de forma remota utilice la clase JavaApplicationCall Construya un objeto JavaApplicationCalljaCall = new JavaApplicationCall(sys)
Establezca la aplicacioacuten Java que desea ejecutarjaCallsetJavaApplication(comibmas400utilcommtraceFormat)
Establezca la variable de entorno classpath que utiliza la JVM en el servidor para que pueda encontrar la clase que debe ejecutarjaCallsetClassPath(QIBMProdDataOS400JT400libJT400Nativejar)
String[] args2 = -c true -t pathtotrace -o pathtotraceextension
jaCallsetParameters(args2)
if (jaCallrun() = true) La llamada ha fallado
Informacioacuten relacionadaJavadoc Format
Clase PrologLa clase Prolog de IBM Toolbox para Java representa la seccioacuten de 256 bytes inicial de un rastreo decomunicaciones para una descripcioacuten de liacutenea de LAN Prolog contiene informacioacuten general sobre elrastreo como las horas de inicio y finalizacioacuten el nuacutemero de bytes recogidos etc Utilice la clase Prologpara recuperar informacioacuten de esta seccioacuten de rastreo que despueacutes puede imprimir visualizar filtrar oprocesar de alguacuten otro modo
La clase Prolog proporciona meacutetodos que permiten llevar a cabo diversas acciones tales como lassiguientesv Recuperar valores de los campos del proacutelogo como por ejemplo la descripcioacuten del rastreo el tipo
Ethernet el sentido de los datos la direccioacuten IP etcv Devolver una serie con formato que contiene todos los campos del proacutelogov Probar los campos del proacutelogo para ver si hay datos no vaacutelidos
Ejemplo
El ejemplo siguiente muestra coacutemo se pueden emplear muchas de las clases commtrace entre ellas laclase Prolog para visualizar informacioacuten de rastreo en el supervisor
ldquoEjemplo coacutemo se utilizan las clases commtracerdquo en la paacutegina 197Informacioacuten relacionadaJavadoc Prolog
Clase FrameLa clase Frame representa todos los datos de un registro o trama de un rastreo de comunicaciones parauna descripcioacuten de liacutenea de LAN
Cada trama contiene tres secciones de datos principales que aparecen en el orden siguiente1 Una seccioacuten de 24 bytes inicial que contiene informacioacuten general sobre la trama2 Informacioacuten general sobre la trama (que representa la clase LanHeader)
194 IBM Toolbox para Java IBM Toolbox para Java
3 Los datos del paquete (que representan las subclases de la clase abstracta IPacket)
Utilice la clase Frame para analizar y crear una representacioacuten imprimible de los datos de la trama Laclase Frame mantiene los datos del paquete en una estructura a modo de lista enlazada que utilizaformatos especiacuteficos Para obtener informacioacuten especiacutefica sobre los posibles formatos de los datos delpaquete de una trama y para obtener informacioacuten general sobre la estructura de una trama consulteldquoModelo de commtracerdquo en la paacutegina 190
La clase Frame proporciona meacutetodos que permiten llevar a cabo diversas acciones tales como lassiguientesv Recuperar el paquete de datosv Recuperar el nuacutemero el estado y el tipo de la tramav Devolver datos especiacuteficos de la trama como una serie con formato
Puede utilizar el proceso siguiente para acceder a los datos de un paquete1 Utilice FramegetPacket() para recuperar el paquete2 Acceda a los datos de la cabecera llamando a PacketgetHeader()3 Tras recuperar la cabecera llame a HeadergetType() para encontrar el tipo4 Utilice la subclase Header especiacutefica para acceder a los datos asociados con esa cabecera (la carga uacutetil)
y las cabeceras adicionales
Ejemplo
El ejemplo siguiente muestra coacutemo se pueden emplear muchas de las clases commtrace entre ellas lasclases Format y FormatProperties para visualizar informacioacuten de rastreo en el supervisor
ldquoEjemplo coacutemo se utilizan las clases commtracerdquo en la paacutegina 197
Clase LanHeaderLa clase LanHeader recupera informacioacuten de la seccioacuten de datos que se encuentra en una ocasioacuten cercadel principio de una trama en la seccioacuten inicial de 24 bytes Normalmente esta seccioacuten contieneinformacioacuten especiacutefica del hardware con datos sobre la trama tales como el nuacutemero de trama y lalongitud de los datos
Utilice la clase LanHeader para analizar e imprimir la informacioacuten de LanHeader LanHeader contiene eltipo de informacioacuten siguientev El byte que identifica el inicio de la primera cabecera de este paquetev Las direcciones de control de acceso al medio (MAC)v Las direcciones Token Ring y la informacioacuten de direccionamiento
LanHeader tambieacuten proporciona dos meacutetodos que permiten devolver una serie con formato con losiguientev Datos de direccionamiento Token Ringv Direcciones MAC de origen direcciones MAC de destino formato de la trama y tipo de tramaInformacioacuten relacionadaJavadoc LanHeader
Clase IPPacketLa clase IPPacket de IBM Toolbox para Java representa todos los paquetes de datos que la red hatransmitido para esta trama durante el rastreo de comunicaciones IPPacket es una clase abstracta por loque deberaacuten utilizarse las diversas subclases concretas para procesar las cabeceras y los datos de lospaquetes
IBM Toolbox para Java 195
Las subclases de IPPacket son las siguientesv ARPPacketv IP4Packetv IP6Packetv UnknownPacket
Las clases Packet permiten recuperar el tipo de paquete y acceder a los datos puros (la cabecera y lacarga uacutetil) que contiene el paquete Todas las subclases utilizan constructores parecidos e incluyen unmeacutetodo adicional que devuelve una versioacuten imprimible del contenido del paquete como una serie
Todos los constructores de las clases Packet toman como argumento una matriz de bytes de los datos delpaquete pero ARPPacket tambieacuten requiere un entero que especifique el tipo de trama Al crear unainstancia de una clase Packet automaacuteticamente se crea el objeto Header correspondiente
Las clases Packet proporcionan meacutetodos que permiten llevar a cabo diversas acciones tales como lassiguientesv Recuperar el nombre y el tipo del paquetev Establecer el tipo del paquetev Devolver el objeto Header de nivel superior asociado al paquetev Devolver todos los datos del paquete como una serie sin formatov Devolver datos especiacuteficos del paquete como una serie con formato
Javadoc IPPacketJavadoc ARPPacketJavadoc IP4PacketJavadoc IP6PacketJavadoc UnknownPacket
Clase HeaderLa clase Header es la superclase abstracta para crear clases que representan tipos de cabeceras depaquetes especiacuteficos Las cabeceras de paquetes incluyen los datos asociados (o carga uacutetil) que puedenser otras cabeceras y cargas uacutetiles
Las subclases de Header son las siguientesv ARPHeaderv ExtHeaderv ICMP4Headerv ICMP6Headerv IP4Headerv IP6Headerv TCPHeaderv UDPHeaderv UnknownHeader
Las clases Header permiten recuperar los datos de la cabecera y la carga uacutetil Una cabecera puedeencapsular otras cabeceras y sus cargas uacutetiles
Al crear una instancia de una clase Packet automaacuteticamente se crea el objeto Header correspondiente Lasclases Header proporcionan meacutetodos que permiten llevar a cabo diversas acciones tales como lassiguientesv Devolver la longitud el nombre y el tipo de la cabecera
196 IBM Toolbox para Java IBM Toolbox para Java
v Recuperar los datos de la cabecera como una matriz de bytesv Recuperar la siguiente cabecera del paquetev Recuperar la carga uacutetil como una matriz de bytes una serie ASCII y una serie hexadecimalv Devolver todos los datos de la cabecera como una serie sin formatov Devolver datos especiacuteficos de la cabecera como una serie con formato
Javadoc HeaderJavadoc ARPHeaderJavadoc ExtHeaderJavadoc ICMP4HeaderJavadoc ICMP6HeaderJavadoc IP4HeaderJavadoc IP6HeaderJavadoc TCPHeaderJavadoc UDPHeaderJavadoc UnknownHeader
Ejemplo coacutemo se utilizan las clases commtraceEste ejemplo utiliza las clases commtrace de IBM Toolbox para Java para imprimir datos de rastreo decomunicaciones en un supervisor mediante un archivo binario de rastreo de comunicaciones como origende los datos
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante Ejemplo de coacutemo se utilizan las clases commtrace para imprimir datos de rastreo de comunicaciones en un supervisor mediante un archivo binario de rastreo de comunicaciones como como origen de los datos Sintaxis del mandato java CommTraceExample
import comibmas400utilcommtrace
public class CommTraceExample
public CommTraceExample() Cree un objeto FormatProperties De forma predeterminada efectuacutee una visualizacioacuten completaFormatProperties fmtprop = new FormatProperties()
Format fmt = new Format(pathtofile) Establece las propiedades de filtrado para este formatofmtsetFilterProperties(fmtprop)fmtformatProlog() Deacute formato al proacutelogo
Prolog pro = fmtgetProlog()Systemoutprintln(protoString())
Si no es un rastreo vaacutelidoif (proinvalidData())
Frame rec
Obtenga los registroswhile ((rec = fmtgetNextRecord()) = null)
IBM Toolbox para Java 197
Imprima el nuacutemero de tramaSystemoutprint(Registro + recgetRecNum()) Imprima la horaSystemoutprintln( Hora + recgetTime()) Obtenga este paquete de registrosIPPacket p = recgetPacket() Obtenga la primera cabeceraHeader h = pgetHeader()
Si IPPacket IP6if (pgetType() == IPPacketIP6)
Si Header IP6if (hgetType() == HeaderIP6)
Realice la conversioacuten a IP6 para poder acceder a los meacutetodosIP6Header ip6 = (IP6Header) h
Systemoutprintln(hgetName() + src + ip6getSrcAddr() + dst + ip6getDstAddr()) Imprima la cabecera como hexadecimalSystemoutprintln(ip6printHexHeader()) Imprima una representacioacuten de tipo String de la cabeceraSystemoutprintln(Completo + hgetName() + n + ip6toString(fmtprop))
Obtenga el resto de las cabeceraswhile ((h = hgetNextHeader()) = null)
Si es una cabecera TCPif (hgetType() == HeaderTCP)
Realice la conversioacuten para poder acceder a los meacutetodosTCPHeader tcp = (TCPHeader) hSystemoutprintln(hgetName() + src + tcpgetSrcPort() + dst + tcpgetDstPort())Systemoutprintln(Completo + hgetName() + n + tcptoString(fmtprop))
Si es una cabecera UDP else if (hgetType() == HeaderUDP)
Realice la conversioacuten para poder acceder a los meacutetodosUDPHeader udp = (UDPHeader) hSystemoutprintln(hgetName() + src + udpgetSrcPort() + dst + udpgetDstPort())Systemoutprintln(Completo + hgetName() + n + udptoString(fmtprop))
public static void main(String[] args) CommTraceExample e = new CommTraceExample()
Clases HTMLLas clases HTML de IBM Toolbox para Java proporcionan representaciones para muchos de loe elementosde coacutedigo HTML habituales
Las clases HTML de IBM Toolbox para Java ayudan al usuario a llevar a cabo las acciones siguientesv Preparar formularios y tablas para paacuteginas HTMLv Alinear textov Trabajar con una gran variedad de coacutedigos HTMLv Crear datos fuente de objetos de formato (FO) XSL (Extensible Stylesheet Language)
198 IBM Toolbox para Java IBM Toolbox para Java
v Modificar el idioma y la direccioacuten del textov Crear listas ordenadas y sin ordenarv Crear listas de archivos y aacuterboles jeraacuterquicos HTML (y los elementos que contienen)v Antildeadir atributos de coacutedigo que no estaacuten definidos en las clases HTML (por ejemplo los atributos
bgcolor y style)
Las clases HTML implementan la interfaz HTMLTagElement Cada clase genera un coacutedigo HTML para untipo de elemento especiacutefico El coacutedigo se puede recuperar con el meacutetodo getTag() y luego se puedeincorporar a cualquier documento HTML Los coacutedigos que se generan con las clases HTML soncoherentes con la especificacioacuten de HTML 32
Las clases HTML pueden funcionar conjuntamente con las clases servlet para obtener datos del servidorSin embargo tambieacuten se pueden utilizar solas si se suministran los datos de la tabla o del formulario
Asimismo puede emplear la clase HTMLDocument para crear paacuteginas HTML o datos fuente FO XSL contoda facilidad Puede convertir los datos FO XSL en documentos PDF (Portable Document Format) Conel formato PDF los documentos conservan el mismo aspecto graacutefico cuando se imprimen que cuando sevisualizan electroacutenicamente
Nota el archivo jt400Servletjar incluye tanto las clases HTML como las clases Servlet Debe actualizar laCLASSPATH para que sentildeale al archivo jt400Servletjar si desea utilizar las clases del paquetecomibmas400utilhtmlInformacioacuten relacionadaJavadoc HTMLTagElementJavadoc DirFilter - Se utiliza para determinar si un objeto File es un directorioJavadoc HTMLFileFilter - Se utiliza para determinar si un objeto File es un archivoJavadoc URLEncoder - Codifica delimitadores que deben utilizarse en una serie de URLJavadoc URLParser - Permite analizar una serie de URL para examinar el identificador URI laspropiedades y la referencia
Clase BidiOrderingLa clase BidiOrdering de IBM Toolbox para Java representa un coacutedigo HTML que modifica el idioma y ladireccioacuten del texto Una serie HTML ltBDOgt requiere dos atributos uno para el idioma y otro para ladireccioacuten del texto
La clase BidiOrdering permite llevar a cabo estas accionesv Obtener y establecer el atributo de idiomav Obtener y establecer la direccioacuten del texto
Para obtener maacutes informacioacuten acerca de coacutemo se utiliza el coacutedigo HTML ltBDOgt consulte el sitio Web de
W3C
Ejemplo coacutemo se utiliza BidiOrdering
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importanteEn el ejemplo siguiente se crea un objeto BidiOrdering y se establece el idioma y la direccioacuten del mismo
Cree un objeto BidiOrdering y establezca el idioma y la direccioacutenBidiOrdering bdo = new BidiOrdering()bdosetDirection(HTMLConstantsRTL)bdosetLanguage(AR)
Cree un texto
IBM Toolbox para Java 199
HTMLText text = new HTMLText(Un texto en aacuterabe)textsetBold(true)
Antildeada el texto al objeto BidiOrdering y obtenga el coacutedigo HTMLbdoaddItem(text)bdogetTag()
La sentencia de imprimir genera el siguiente coacutedigo HTMLltbdo lang=AR dir=rtlgt
ltbgtTexto en aacuterabeltbgtltbdogt
Cuando se utiliza este coacutedigo en una paacutegina HTML los navegadores que entienden el coacutedigo ltBDOgtvisualizan el ejemplo de esta forma
ebaraacute ne otxet nU
Informacioacuten relacionadaJavadoc BidiOrdering
Clase HTMLAlignLa clase HTMLAlign de IBM Toolbox para Java permite alinear secciones del documento HTML en lugarde alinear elementos individuales tales como paacuterrafos o cabeceras
La clase HTMLAlign representa el coacutedigo ltDIVgt y el atributo de alineacioacuten asociado al mismo Puedeutilizar la alineacioacuten a la derecha a la izquierda o centrada
Puede emplear esta clase para llevar a cabo diversas acciones tales como las siguientesv Antildeadir o eliminar elementos de la lista de coacutedigos que desea alinearv Obtener y establecer la alineacioacutenv Obtener y establecer la direccioacuten de interpretacioacuten del textov Obtener y establecer el idioma del elemento de entradav Obtener una representacioacuten de tipo serie del objeto HTMLAlign
Ejemplo crear objetos HTMLAlign
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importanteEl ejemplo que sigue crea una lista sin ordenar y a continuacioacuten crea un objeto HTMLAlign para alineartoda la lista
Cree una lista sin ordenarUnorderedList uList = new UnorderedList()uListsetType(HTMLConstantsDISC)UnorderedListItem uListItem1 = new UnorderedListItem()uListItem1setItemData(new HTMLText(Lista sin ordenar centrada))uListaddListItem(uListItem1)UnorderedListItem uListItem2 = new UnorderedListItem()uListItem2setItemData(new HTMLText(Otro elemento))uListaddListItem(uListItem2)
Alinee la listaHTMLAlign align = new HTMLAlign(uList HTMLConstantsCENTER)Systemoutprintln(align)
El ejemplo anterior genera el coacutedigo siguiente
200 IBM Toolbox para Java IBM Toolbox para Java
ltdiv align=centergtltul type=discgt
ltligtLista desordenada centradaltligtltligtOtro elementoltligt
ltulgt
Este coacutedigo cuando se utiliza en una paacutegina HTML ofrece este aspectov Lista sin ordenar centradav Otro elementoInformacioacuten relacionadaJavadoc HTMLAlign
Clase HTMLDocumentLa clase HTMLDocument permite utilizar las clases HTML de IBM Toolbox para Java existentes paracrear paacuteginas HTML o documentos PDF (Portable Document Format)
Al crear un objeto HTMLDocument debe especificar si este contiene coacutedigos HTML o coacutedigos de objetosde formato (FO) XSL (Extensible Stylesheet Language)v Cuando desee crear paacuteginas HTML la clase HTMLDocument le ofrece un sencillo meacutetodo para
agrupar todos los coacutedigos HTML necesarios Sin embargo las paacuteginas HTML no siempre tienen elmismo aspecto cuando se imprimen que cuando se visualizan en un navegador Web
v Cuando desee crear documentos PDF la clase HTMLDocument le ofrece la posibilidad de crear fuenteFO XSL que contiene toda la informacioacuten necesaria para generar un documento PDF Los documentosPDF conservan el mismo aspecto graacutefico cuando se imprimen que cuando se visualizanelectroacutenicamente
Para emplear HTMLDocument debe incluir un analizador XML y un procesador XSLT en la variable deentorno CLASSPATH Encontraraacute maacutes informacioacuten en estas paacuteginasv ldquoArchivos JARrdquo en la paacutegina 8v ldquoAnalizador XML y procesador XSLTrdquo en la paacutegina 330
Puede procesar los datos fuente XSL o HTML resultantes como desee por ejemplo visualizando el coacutedigoHTML guardando el coacutedigo XSL en un archivo o empleando los datos pasados como corriente en otraparte del programa Java
Para obtener maacutes informacioacuten sobre coacutemo crear paacuteginas HTML y datos fuente FO XSL consulte laspaacuteginas siguientesv ldquoCoacutemo se utiliza HTMLDocument para crear datos HTMLrdquov ldquoCoacutemo se utiliza HTMLDocument para crear datos FO XSLrdquo en la paacutegina 202v ldquoEjemplos coacutemo se utiliza HTMLDocumentrdquo en la paacutegina 205
Javadoc HTMLDocument
Coacutemo se utiliza HTMLDocument para crear datos HTML
HTMLDocument funciona como un objeto que envuelve la informacioacuten necesaria para crear datos fuenteHTML o de objetos de formato (FO) XSL (Extensible Stylesheet Language) Cuando desee crear paacuteginasHTML la clase HTMLDocument le ofrece un sencillo meacutetodo para agrupar todos los coacutedigos HTMLnecesarios
Generar datos fuente HTML
Al crear fuente HTML HTMLDocument recupera los coacutedigos HTML de los objetos HTML que se hancreado Puede emplear HTMLDocumentgetTag() para pasar como una corriente todos los elementosdefinidos o getTag() para cada uno de los objetos HTML individuales
IBM Toolbox para Java 201
HTMLDocument genera datos HTML a medida que estos se definen en el programa Java por lo quepuede estar seguro de que el coacutedigo HTML resultante es completo y correcto
Al llamar a HTMLDocumentgetTag() el objeto HTMLDocument lleva a cabo las acciones siguientesv Genera el coacutedigo ltHTMLgt inicial Al final de los datos genera el coacutedigo ltHTMLgt finalv Convierte los objetos HTMLHead y HTMLMeta en coacutedigos HTMLv Genera el coacutedigo ltBODYgt inicial justo despueacutes del coacutedigo ltHEADgt Al final de los datos justo antes
del coacutedigo ltHTMLgt final genera el coacutedigo ltBODYgt final
Nota si no especifica ninguacuten coacutedigo ltHEADgt HTMLDocument genera el coacutedigo ltBODYgt tras elcoacutedigo ltHTMLgt
v Convierte los demaacutes objetos HTML en coacutedigos HTML seguacuten las indicaciones del programa
Nota HTMLDocument pasa como una corriente los coacutedigos HTML tal como se lo indica el programaJava por lo que debe asegurarse de que se llama a los coacutedigos en el orden correcto
Ejemplos coacutemo se utiliza HTMLDocument
El ejemplo siguiente muestra coacutemo se utiliza HTMLDocument para generar datos fuente HTML (y fuenteFO XSL)
ldquoEjemplo coacutemo se utiliza HTMLDocument para generar fuente HTML y FO XSLrdquo en la paacutegina 208
Documentacioacuten de consulta de javadocs
Para obtener maacutes informacioacuten sobre la clase HTMLDocument consulte la siguiente documentacioacuten deconsulta de javadocs
HTMLDocument
La siguiente declaracioacuten de limitacioacuten de responsabilidad es vaacutelida para todos los ejemplos de IBMToolbox para Java
Declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo
IBM le concede una licencia de copyright no exclusiva de uso de todos los ejemplos de coacutedigo deprogramacioacuten a partir de los cuales puede generar funciones similares adaptadas a sus propiasnecesidades
IBM proporciona todo el coacutedigo de ejemplo solo a efectos ilustrativos Estos ejemplos no se hancomprobado de forma exhaustiva en todas las condiciones IBM por lo tanto no puede garantizarni dar por sentada la fiabilidad la utilidad ni el funcionamiento de estos programas
Todos los programas contenidos aquiacute se proporcionan TAL CUAL sin garantiacuteas de ninguacuten tipoLas garantiacuteas impliacutecitas de no incumplimiento comerciabilidad y adecuacioacuten para un findeterminado se especifican expliacutecitamente como declaraciones de limitacioacuten de responsabilidad
Coacutemo se utiliza HTMLDocument para crear datos FO XSL
HTMLDocument funciona como un objeto que envuelve la informacioacuten necesaria para crear datos fuenteHTML o de objetos de formato (FO) XSL (Extensible Stylesheet Language)
El fuente FO XSL generado sigue el modelo de formato de FO XSL El modelo emplea elementosrectangulares denominados aacutereas para contener los elementos de contenido individuales que pueden serimaacutegenes texto otros FO XSL o nada En la lista siguiente se describen los cuatro tipos de aacuterea baacutesicos
202 IBM Toolbox para Java IBM Toolbox para Java
v Las regiones funcionan como el contenedor de nivel superiorv Las aacutereas de bloque representan elementos a nivel de bloque como por ejemplo paacuterrafos o elementos
de listav Las aacutereas de liacutenea representan una liacutenea de texto dentro de un bloquev Las aacutereas dentro de liacutenea representan partes de una liacutenea como por ejemplo un caraacutecter una nota a pie
de paacutegina o una ecuacioacuten matemaacutetica
Los coacutedigos FO XSL creados por IBM Toolbox para Java cumplen los estaacutendares XSL que se describen enla recomendacioacuten de W3C Para obtener maacutes informacioacuten sobre XSL los FO XSL y la recomendacioacuten deW3C consulte lo siguiente
Extensible Stylesheet Language (XSL) Version 10
Generar datos fuente FO XSL
Al crear fuente FO XSL las propiedades de HTMLDocument representan coacutedigos FO XSL que especificanel tamantildeo la orientacioacuten y los maacutergenes de la paacutegina Ademaacutes HTMLDocument recupera de muchasclases HTML los coacutedigos FO XSL correspondientes para ese elemento de contenido
Tras emplear HTMLDocument para generar el fuente FO XSL puede emplear un formateador XSL (porejemplo la clase XSLReportWriter) para colocar los elementos de contenido en las paacuteginas de undocumento
HTMLDocument genera datos fuente FO XSL en dos grandes seccionesv La primera seccioacuten contiene los coacutedigos FO XSL ltforootgt y ltfolayout-master-setgt que contienen
informacioacuten general sobre el disentildeo de la paacutegina en relacioacuten con la altura la anchura y los maacutergenesde la paacutegina Para especificar los valores de la informacioacuten de disentildeo utilice los meacutetodos set deHTMLDocument para establecer los valores de las propiedades asociadas
v La segunda seccioacuten contiene el coacutedigo FO XSL ltfopage-sequencegt que contiene los elementos decontenido individuales Para especificar elementos de contenido individuales que son instancias de lasclases HTML recupere el coacutedigo FO XSL correspondiente del objeto HTML Aseguacuterese de utilizaruacutenicamente clases HTML que tengan el meacutetodo getFoTag() para los elementos de contenido
Nota si intenta recuperar coacutedigos FO XSL de clases HTML que no tienen el meacutetodo getFoTag()obtendraacute un coacutedigo de comentario
Para obtener maacutes informacioacuten sobre las clases HTML que incluyen meacutetodos para trabajar con los coacutedigosFO XSL consulte la siguiente documentacioacuten de consulta de javadocs
ldquoClases habilitadas para FO XSLrdquo en la paacutegina 204
Tras crear una instancia de HTMLDocument y establecer las propiedades de disentildeo recupere los coacutedigosFO XSL de los objetos HTML mediante los meacutetodos setUseFO() getFoTag() y getTag()v Puede emplear setUseFO() tanto en HTMLDocument como en los objetos HTML individuales Al
utilizar setUseFO() puede recuperar coacutedigos FO XSL mediante HTMLDocumentgetTag()v Si lo prefiere tambieacuten puede emplear el meacutetodo getFoTag() tanto en HTMLDocument como en los
objetos HTML individuales Puede interesarle utilizar este otro meacutetodo cuando tenga que generarfuente HTML y FO XSL a partir de HTMLDocument o de los objetos HTML
IBM Toolbox para Java 203
Ejemplo coacutemo se utiliza HTMLDocument
Despueacutes de crear datos fuente FO XSL tendraacute que convertir esos datos FO XSL en un formato que losusuarios puedan visualizar e imprimir Los ejemplos siguientes muestran coacutemo generar datos fuente FOXSL (y fuente HTML) y convertir los datos fuente FO XSL en un documento PDF mediante las clasesXSLReportWriter y Context
ldquoEjemplo coacutemo se utiliza HTMLDocument para generar fuente HTML y FO XSLrdquo en la paacutegina 208
ldquoEjemplo convertir datos fuente FO XSL en un PDFrdquo en la paacutegina 205
Documentacioacuten de consulta de javadocs
Para obtener maacutes informacioacuten sobre la clase HTMLDocument consulte la siguiente documentacioacuten deconsulta de javadocs
HTMLDocument
La siguiente declaracioacuten de limitacioacuten de responsabilidad es vaacutelida para todos los ejemplos de IBMToolbox para Java
Declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo
IBM le concede una licencia de copyright no exclusiva de uso de todos los ejemplos de coacutedigo deprogramacioacuten a partir de los cuales puede generar funciones similares adaptadas a sus propiasnecesidades
IBM proporciona todo el coacutedigo de ejemplo solo a efectos ilustrativos Estos ejemplos no se hancomprobado de forma exhaustiva en todas las condiciones IBM por lo tanto no puede garantizarni dar por sentada la fiabilidad la utilidad ni el funcionamiento de estos programas
Todos los programas contenidos aquiacute se proporcionan TAL CUAL sin garantiacuteas de ninguacuten tipoLas garantiacuteas impliacutecitas de no incumplimiento comerciabilidad y adecuacioacuten para un findeterminado se especifican expliacutecitamente como declaraciones de limitacioacuten de responsabilidad
Clases habilitadas para FO XSL
Este tema describe las clases de IBM Toolbox para Java que son compatibles con la claseHTMLDocument
Muchas clases HTML de IBM Toolbox para Java ofrecen los meacutetodos siguientes que permiten a lasinstancias de estas clases trabajar con HTMLDocumentv getFoTag()v getTag()v setUseFO()
Para obtener maacutes informacioacuten sobre la clase HTMLDocument y sobre las clases HTML que incluyenmeacutetodos para trabajar con los objetos FO XSL consulte la siguiente documentacioacuten de consulta dejavadocsv HTMLDocumentv BidiOrderingv HTMLAlignv HTMLHeadv HTMLHeading
204 IBM Toolbox para Java IBM Toolbox para Java
v HTMLImagev HTMLListv HTMLListItemv HTMLTablev HTMLTableCaptionv HTMLTableCellv HTMLTableHeaderv HTMLTableRowv HTMLTagElementv OrderedListv UnorderedList
Ejemplos coacutemo se utiliza HTMLDocument
Los ejemplos siguientes muestran varios modos de emplear la clase HTMLDocument para generar datosfuente HTML y de objetos de formato (FO) XSL (Extensible Stylesheet Language)
Ejemplo coacutemo se utiliza HTMLDocument para generar fuente HTML y FO XSL
El ejemplo siguiente muestra coacutemo generar datos fuente HTML y FO XSL a la vez
ldquoEjemplo coacutemo se utiliza HTMLDocument para generar fuente HTML y FO XSLrdquo en la paacutegina 208
Ejemplo convertir datos fuente FO XSL en un PDF
Despueacutes de crear datos fuente FO XSL tendraacute que convertir esos datos FO XSL en un formato que losusuarios puedan visualizar e imprimir El ejemplo siguiente muestra coacutemo convertir un archivo quecontiene datos fuente FO XSL en un documento PDF mediante las clases XSLReportWriter y Context
ldquoEjemplo convertir datos fuente FO XSL en un PDFrdquo
La siguiente declaracioacuten de limitacioacuten de responsabilidad es vaacutelida para todos los ejemplos de IBMToolbox para Java
Declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo
IBM le concede una licencia de copyright no exclusiva de uso de todos los ejemplos de coacutedigo deprogramacioacuten a partir de los cuales puede generar funciones similares adaptadas a sus propiasnecesidades
IBM proporciona todo el coacutedigo de ejemplo solo a efectos ilustrativos Estos ejemplos no se hancomprobado de forma exhaustiva en todas las condiciones IBM por lo tanto no puede garantizarni dar por sentada la fiabilidad la utilidad ni el funcionamiento de estos programas
Todos los programas contenidos aquiacute se proporcionan TAL CUAL sin garantiacuteas de ninguacuten tipoLas garantiacuteas impliacutecitas de no incumplimiento comerciabilidad y adecuacioacuten para un findeterminado se especifican expliacutecitamente como declaraciones de limitacioacuten de responsabilidad
Ejemplo convertir datos fuente FO XSL en un PDF
Este programa de ejemplo no debe utilizarse ya que la clase XSLReportProcessor ha dejado de estarsoportada
IBM Toolbox para Java 205
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante Ejemplo convertir fuente FO XSL en un PDF Este programa utiliza las clases ReportWriter de IBM Toolbox para Java para convertir datos fuente FO XSL (creados mediante HTMLDocument) en un PDF Es necesario que los siguientes archivos jar esteacuten en la classpath composerjar outputwritersjar reportwriterjar x4j400jar xslparserjar Estos archivos JAR forman parte de IBM ToolBox para Java y residen en el directorio QIBMProdDataHTTPPublicjt400lib del servidor Tambieacuten necesitaraacute la definicioacuten de clase para orgapachexercesdomNodeContainer que reside en el directorio QIBMProdDataOS400xmllib Sintaxis del mandato ProcessXslFo nombreArchivoFO nombreArchivoPDF
import javaioFileInputStreamimport javaioFileOutputStream
import javaawtprintPaperimport javaawtprintPageFormat
import orgw3cdomDocument
import comibmxslcomposerframeworkContext
import comibmas400utilreportwriterpdfwriterPDFContextimport comibmas400utilreportwriterprocessorXSLReportProcessor
public class ProcessXslFo
public static void main(String args[])
if (argslength = 2)
Systemoutprintln(Utilizacioacuten java ProcessXslFo ltnombre de archivo fogt ltnombre de archivo pdfgt)Systemexit (0)
try
String inName = args[0]String outName = args[1]
Entrada Archivo que contiene FO XML FileInputStream fin = null
Salida En este ejemplo seraacute un PDF FileOutputStream fout = null
try
206 IBM Toolbox para Java IBM Toolbox para Java
fin = new FileInputStream(inName)fout = new FileOutputStream(outName)
catch (Exception e)
eprintStackTrace()Systemexit (0)
Configure el formato de paacuteginaPaper paper = new Paper()papersetSize(612 792)papersetImageableArea(0 0 756 936)
PageFormat pageFormat = new PageFormat()pageFormatsetPaper(paper)
Cree un contexto de PDF Establezca el nombre de archivo de salidaPDFContext pdfContext = new PDFContext(fout pageFormat)
Cree la instancia de XSLReportProcessorXSLReportProcessor report = new XSLReportProcessor(pdfContext)
Abra el fuente FO XMLtry
reportsetXSLFOSource(fin)catch (Exception e)
eprintStackTrace()Systemexit (0)
Procese el informetry
reportprocessReport()catch (Exception e)
eprintStackTrace()Systemexit (0)
catch (Exception e)
eprintStackTrace()Systemexit (0)
Salida Systemexit (0)
IBM Toolbox para Java 207
Ejemplo coacutemo se utiliza HTMLDocument para generar fuente HTML y FO XSL
Este ejemplo utiliza la clase HTMLDocument para generar datos fuente HTML y FO XSL
Nota lea la declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo para obtenerinformacioacuten legal importante Ejemplo coacutemo se utiliza la clase HTMLDocument de la Caja de Herramientas para generar datos fuente HTML y FO XSL Este programa utiliza la clase HTMLDocument para generar dos archivos uno con el fuente HTML y otro con el fuente FO XSL Sintaxis del mandato HTMLDocumentExample
import comibmas400utilhtmlimport javaimport javaioimport javalangimport javabeansPropertyVetoException
public class HTMLDocumentExample
public static void main (String[] args)
Cree el objeto HTMLDocument con las propiedades del documento necesariasHTMLDocument doc = new HTMLDocument()
Establezca las propiedades de la paacutegina y los maacutergenes Los nuacutemeros se dan en pulgadasdocsetPageWidth(85)docsetPageHeight(11)docsetMarginTop(1)docsetMarginBottom(1)docsetMarginLeft(1)docsetMarginRight(1)
Cree una cabecera para la paacuteginaHTMLHead head = new HTMLHead() Establezca el tiacutetulo de la cabeceraheadsetTitle(Esta es la cabecera de la paacutegina)
Cree varias cabecerasHTMLHeading h1 = new HTMLHeading(1 Cabecera 1)HTMLHeading h2 = new HTMLHeading(2 Cabecera 2)HTMLHeading h3 = new HTMLHeading(3 Cabecera 3)HTMLHeading h4 = new HTMLHeading(4 Cabecera 4)HTMLHeading h5 = new HTMLHeading(5 Cabecera 5)HTMLHeading h6 = new HTMLHeading(6 Cabecera 6)
Cree un texto que se imprimiraacute de derecha a izquierda Cree un objeto BidiOrdering y establezca la direccioacutenBidiOrdering bdo = new BidiOrdering()bdosetDirection(HTMLConstantsRTL)
Cree un textoHTMLText text = new HTMLText(Este es un texto en aacuterabe) Antildeada el texto al objeto BidiOrderingbdoaddItem(text)
Cree un objeto UnorderedList
208 IBM Toolbox para Java IBM Toolbox para Java
UnorderedList uList = new UnorderedList(HTMLConstantsSQUARE) Cree y establezca los datos de los objetos UnorderedListItemUnorderedListItem listItem1 = new UnorderedListItem()UnorderedListItem listItem2 = new UnorderedListItem()listItem1setItemData(new HTMLText(Primer elemento))listItem2setItemData(new HTMLText(Segundo elemento)) Antildeada los elementos de lista al objeto UnorderedListuListaddListItem(listItem1)uListaddListItem(listItem2)
Cree un objeto OrderedListOrderedList oList = new OrderedList(HTMLConstantsSMALL_ROMAN) Cree los objetos OrderedListItemOrderedListItem olistItem1 = new OrderedListItem()OrderedListItem olistItem2 = new OrderedListItem()OrderedListItem olistItem3 = new OrderedListItem() Establezca los datos de los objetos OrderedListItemolistItem1setItemData(new HTMLText(Primer elemento))olistItem2setItemData(new HTMLText(Segundo elemento))olistItem3setItemData(new HTMLText(Tercer elemento)) Antildeada los elementos de lista al objeto OrderedListoListaddListItem(olistItem1)oListaddListItem(olistItem2) Antildeada (anide) la lista sin ordenar a OrderedListItem2oListaddList(uList) Antildeada otro objeto OrderedListItem al objeto OrderedList despueacutes del objeto UnorderedList anidadooListaddListItem(olistItem3)
Cree un objeto HTMLTable predeterminadoHTMLTable table = new HTMLTable()try
Establezca los atributos de la tablatablesetAlignment(HTMLTableLEFT)tablesetBorderWidth(1)
Cree un objeto HTMLTableCaption predeterminado y establezca el texto del pie de tablaHTMLTableCaption caption = new HTMLTableCaption()
captionsetElement(Saldos de cuenta de cliente - 1 de enero de 2000)
Establezca el pie de tablatablesetCaption(caption)
Cree las cabeceras de la tabla y antildeaacutedalas a la mismaHTMLTableHeader account_header = new HTMLTableHeader(new HTMLText(CUENTA))HTMLTableHeader name_header = new HTMLTableHeader(new HTMLText(NOMBRE))HTMLTableHeader balance_header = new HTMLTableHeader(new HTMLText(SALDO))
tableaddColumnHeader(account_header)tableaddColumnHeader(name_header)tableaddColumnHeader(balance_header)
Antildeada filas a la tabla Cada registro de cliente corresponde a una fila de la tablaint numCols = 3for (int rowIndex=0 rowIndexlt 5 rowIndex++)
HTMLTableRow row = new HTMLTableRow()rowsetHorizontalAlignment(HTMLTableRowCENTER)
HTMLText account = new HTMLText(000 + rowIndex)HTMLText name = new HTMLText(Customer + rowIndex)HTMLText balance = new HTMLText( + (rowIndex + 1)200)
rowaddColumn(new HTMLTableCell(account))rowaddColumn(new HTMLTableCell(name))rowaddColumn(new HTMLTableCell(balance))
IBM Toolbox para Java 209
Antildeada la fila a la tablatableaddRow(row)
catch(Exception e)
Systemoutprintln(Problema durante la creacioacuten de la tabla)Systemexit (0)
Antildeada los elementos al objeto HTMLDocumentdocaddElement(head)docaddElement(h1)docaddElement(h2)docaddElement(h3)docaddElement(h4)docaddElement(h5)docaddElement(h6)docaddElement(oList)docaddElement(table)docaddElement(bdo)
Imprima los coacutedigos FO en un archivotry
FileOutputStream fout = new FileOutputStream(FOFILEfo)PrintStream pout = new PrintStream(fout)poutprintln(docgetFOTag())
catch (Exception e)
Systemoutprintln(No se han podido escribir los coacutedigos FO en FOFILEfo)
Imprima los coacutedigos HTML en un archivotry
FileOutputStream htmlout = new FileOutputStream(HTMLFILEhtml)PrintStream phtmlout = new PrintStream(htmlout)phtmloutprintln(docgetTag())
catch (Exception e)
Systemoutprintln(No se han podido escribir los coacutedigos HTML en HTMLFILEhtml)
Clases de formularios HTMLLa clase HTMLForm de IBM Toolbox para Java representa un formulario HTML Utilice estas clases paraque los formularios sean maacutes faacuteciles de crear que con los scripts CGI
Esta clase le permitev Antildeadir un elemento (por ejemplo un botoacuten un hiperenlace o una tabla HTML) a un formulariov Eliminar un elemento de un formulariov Establecer otros atributos de formulario por ejemplo queacute meacutetodo se ha de usar para enviar el
contenido del formulario al servidor la lista de paraacutemetros ocultos o la direccioacuten URL de la accioacuten
El constructor del objeto HTMLForm toma una direccioacuten de URL A esta direccioacuten la llamamos URL deaccioacuten Es la ubicacioacuten de la aplicacioacuten en el servidor que va a procesar la entrada del formulario El URL
210 IBM Toolbox para Java IBM Toolbox para Java
de accioacuten se puede especificar en el constructor tambieacuten se puede establecer la direccioacuten mediante elmeacutetodo setURL() Los atributos de formulario se establecen con los diversos meacutetodos set y se recuperancon los diversos meacutetodos get
Los elementos de coacutedigo HTML se pueden antildeadir a un objeto HTMLForm utilizando el meacutetodoaddElement() y se pueden eliminar utilizando el meacutetodo removeElement()
Obviamente puede antildeadir otros elementos de coacutedigo a un formulario tales como HTMLTextHTMLHyperlink y HTMLTable
Javadoc HTMLFormldquoClase HTMLTextrdquo en la paacutegina 228La clase HTMLText de IBM Toolbox para Java permite acceder a las propiedades del texto de lapaacutegina HTML Mediante la clase HTMLText puede obtener establecer y comprobar el estado denumerosos atributos del textoldquoClase HTMLHyperlinkrdquo en la paacutegina 220La clase HTMLHyperlink de IBM Toolbox para Java representa un coacutedigo de hiperenlace HTML Conla clase HTMLHyperlink puede crear un enlace dentro de la paacutegina HTMLldquoClases de tablas HTMLrdquo en la paacutegina 226La clase HTMLTable de IBM Toolbox para Java permite preparar de manera sencilla las tablas que sepueden utilizar en las paacuteginas HTMLldquoEjemplo coacutemo se utilizan las clases de formularios HTMLrdquo en la paacutegina 482El ejemplo siguiente de IBM Toolbox para Java muestra coacutemo se utilizan las clases de formularioHTMLldquoSalida de ejemplo de las clases HTMLrdquo en la paacutegina 492A continuacioacuten figuran algunas posibles salidas de ejemplo que se pueden obtener al ejecutar elejemplo de las clases HTML
Clases FormInput
La clase FormInput de IBM Toolbox para Java representa un elemento de entrada de un formularioHTML
La clase FormInput permite llevar a cabo estas accionesv Obtener y establecer el nombre de un elemento de entradav Obtener y establecer el tamantildeo de un elemento de entradav Obtener y establecer el valor inicial de un elemento de entrada
La clase FormInput se ampliacutea mediante las clases de la lista siguiente Estas clases permiten crear tiposespeciacuteficos de elementos de entrada de formulario y permiten obtener y establecer diversos atributos orecuperar el coacutedigo HTML del elemento de entradav ButtonFormInput representa un elemento que es un botoacuten de un formulario HTMLv FileFormInput representa un tipo de entrada de archivo de un formulario HTMLv HiddenFormInput representa un tipo de entrada oculta de un formulario HTMLv ImageFormInput representa un tipo de entrada de imagen de un formulario HTMLv ResetFormInput representa una entrada de botoacuten de restablecer de un formulario HTMLv SubmitFormInput representa una entrada de botoacuten de someter de un formulario HTMLv TextFormInput representa una entrada de texto de una sola liacutenea de un formulario HTML en la que se
define el nuacutemero maacuteximo de caracteres de una liacutenea Para un tipo de entrada de contrasentildea se utilizala clase PasswordFormInput que ampliacutea TextFormInput y representa un tipo de entrada de contrasentildeade un formulario HTML
IBM Toolbox para Java 211
v ToggleFormInput representa un tipo de entrada de conmutador de un formulario HTML El usuariopuede establecer u obtener la etiqueta de texto y especificar si el conmutador se debe marcar oseleccionar El tipo de entrada de conmutador puede ser uno de estos dosndash RadioFormInput representa un tipo de entrada de botoacuten de seleccioacuten de un formulario HTML Los
botones de seleccioacuten se pueden colocar en grupos con la clase RadioFormInputGroup esta clase creaun grupo de botones de seleccioacuten donde el usuario solo selecciona una de las opciones presentadas
ndash CheckboxFormInput representa un tipo de entrada de recuadro de seleccioacuten de un formularioHTML en que el usuario puede seleccionar maacutes de una de las opciones presentadas y en que elrecuadro de seleccioacuten se inicializa como marcado o no marcado
Javadoc FormInputJavadoc ToggleFormInputJavadoc RadioFormInputGroup
Clase ButtonFormInput
La clase ButtonFormInput representa un elemento de botoacuten de un formulario HTML
El ejemplo siguiente muestra coacutemo se crea un objeto ButtonFormInputButtonFormInput button = new ButtonFormInput(button1 Pulse aquiacute test())Systemoutprintln(buttongetTag())
Este ejemplo genera el siguiente coacutedigoltinput type=button name=button1 value=Pulse aquiacute onclick=test() gt
Informacioacuten relacionadaJavadoc ButtonFormInput
Clase FileFormInput
La clase FileFormInput de IBM Toolbox para Java representa un tipo de entrada de archivo de unformulario HTML
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto FileFormInput nuevoFileFormInput file = new FileFormInput(myFile)Systemoutprintln(filegetTag())
El coacutedigo anterior crea la siguiente salidaltinput type=file name=myFile gt
Informacioacuten relacionadaJavadoc FileFormInput
Clase HiddenFormInput
La clase HiddenFormInput de IBM Toolbox para Java representa un tipo de entrada oculto de unformulario HTML
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto HiddenFormInputHiddenFormInput hidden = new HiddenFormInput(account 123456)Systemoutprintln(hiddengetTag())
El coacutedigo anterior genera el coacutedigo siguienteltinput type=hidden name=account value=123456 gt
212 IBM Toolbox para Java IBM Toolbox para Java
En una paacutegina HTML el tipo de entrada oculta (HiddenInputType) no se visualiza Enviacutea la informacioacuten(en este caso el nuacutemero de cuenta) de regreso al servidorInformacioacuten relacionadaJavadoc HiddenFormInput
Clase ImageFormInput
La clase ImageFormInput representa un tipo de entrada de formulario HTML que es una imagen
Mediante los meacutetodos proporcionados se pueden recuperar y actualizar numerosos atributos de la claseImageFormInput por ejemplo puedev Obtener o establecer el coacutedigo fuentev Obtener o establecer la alineacioacutenv Obtener o establecer la alturav Obtener o establecer la anchura
Ejemplo crear un objeto ImageFormInput
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto ImageFormInputImageFormInput image = new ImageFormInput(myPicture myPicturegif)
imagesetAlignment(HTMLConstantsTOP)imagesetHeight(81)imagesetWidth(100)
El ejemplo de coacutedigo anterior genera el coacutedigo HTML siguienteltinput type=image name=MyPicture src=myPicturegif align=top height=81 width=100 gt
Informacioacuten relacionadaJavadoc ImageFormInput
Clase ResetFormInput
La clase ResetFormInput representa un tipo de entrada de un formulario HTML que es un botoacuten derestablecer
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto ResetFormInputResetFormInput reset = new ResetFormInput()resetsetValue(Restablecer)Systemoutprintln(resetgetTag())
El ejemplo de coacutedigo anterior genera el coacutedigo HTML siguienteltinput type=reset value=Reset gt
Informacioacuten relacionadaJavadoc ResetFormInput
Clase SubmitFormInput
La clase SubmitFormInput representa un tipo de entrada de un formulario HTML que es un botoacuten desometer
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto SubmitFormInputSubmitFormInput submit = new SubmitFormInput()submitsetValue(Someter)Systemoutprintln(submitgetTag())
IBM Toolbox para Java 213
El ejemplo de coacutedigo anterior genera la siguiente salidaltinput type=submit value=Send gt
Informacioacuten relacionadaJavadoc SubmitFormInput
Clase TextFormInput
La clase TextFormInput representa en un formulario HTML un tipo de entrada que es una sola liacutenea detexto La clase TextFormInput proporciona meacutetodos que permiten obtener y establecer el nuacutemero maacuteximode caracteres que un usuario puede entrar en el campo de texto
El ejemplo siguiente muestra coacutemo se crea un objeto TextFormInput nuevoTextFormInput text = new TextFormInput(userID)textsetSize(40)Systemoutprintln(textgetTag())
El ejemplo de coacutedigo anterior genera el siguiente coacutedigo HTMLltinput type=text name=userID size=40 gt
Informacioacuten relacionadaJavadoc TextFormInput
Clase PasswordFormInput
La clase PasswordFormInput representa un tipo de campo de entrada de contrasentildea de un formularioHTML
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto PasswordFormInput nuevoPasswordFormInput pwd = new PasswordFormInput(password)pwdsetSize(12)Systemoutprintln(pwdgetTag())
El ejemplo de coacutedigo anterior genera el siguiente coacutedigo HTMLltinput type=password name=password size=12 gt
Informacioacuten relacionadaJavadoc PasswordFormInput
Clase RadioFormInput
La clase RadioFormInput representa un tipo de entrada de formulario HTML que es un botoacuten deseleccioacuten Este en el momento de construirse se puede inicializar como seleccionado
Una serie de botones de seleccioacuten que tengan un mismo nombre de control forman un grupo de botonesde seleccioacuten La clase RadioFormInputGroup crea grupos de botones de seleccioacuten En un momento dadouacutenicamente puede seleccionarse un solo botoacuten del grupo Ademaacutes en el momento de construir el grupose puede inicializar como seleccionado un botoacuten concreto
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto RadioFormInput nuevoRadioFormInput radio = new RadioFormInput(age twentysomething Edad entre 20 y 29 true)Systemoutprintln(radiogetTag())
El ejemplo de coacutedigo anterior genera el coacutedigo HTML siguienteltinput type=radio name=age value=twentysomething checked=checked gt
Javadoc RadioFormInputJavadoc RadioFormInputGroup
214 IBM Toolbox para Java IBM Toolbox para Java
Clase CheckboxFormInput
La clase CheckboxFormInput de IBM Toolbox para Java representa un tipo de entrada de formularioHTML que corresponde a un recuadro de seleccioacuten El usuario puede seleccionar maacutes de una de laselecciones presentadas como recuadros de seleccioacuten dentro de un formulario
El ejemplo siguiente muestra coacutemo se crea un objeto CheckboxFormInput nuevoCheckboxFormInput checkbox = new CheckboxFormInput(uscitizen yes textLabel true)Systemoutprintln(checkboxgetTag())
El coacutedigo anterior genera la siguiente salidaltinput type=checkbox name=uscitizen value=yes checked=checked gt textLabel
Clase LayoutFormPanel
La clase LayoutFormPanel de IBM Toolbox para Java representa un disentildeo de los elementos de unformulario HTML Puede utilizar los meacutetodos proporcionados por LayoutFormPanel para antildeadir yeliminar elementos de un panel u obtener el nuacutemero de elementos del disentildeo
Puede optar por utilizar uno de estos dos disentildeosv GridLayoutFormPanel representa un disentildeo cuadriculado de los elementos de un formulario HTMLv LineLayoutFormPanel representa un disentildeo lineal de los elementos de un formulario HTML
Javadoc LayoutFormPanelldquoGridLayoutFormPanelrdquoLa clase GridLayoutFormPanel representa un disentildeo cuadriculado de los elementos de formularioEste disentildeo se utiliza en un formulario HTML en el que se especifica el nuacutemero de columnas de lacuadriacuteculaldquoClase LineLayoutFormPanelrdquo en la paacutegina 216La clase LineLayoutFormPanel representa un disentildeo lineal de los elementos de un formulario HTMLLos elementos del formulario se disponen en una sola fila dentro de un panel
GridLayoutFormPanel
La clase GridLayoutFormPanel representa un disentildeo cuadriculado de los elementos de formulario Estedisentildeo se utiliza en un formulario HTML en el que se especifica el nuacutemero de columnas de la cuadriacutecula
En el ejemplo que hay a continuacioacuten se crea un objeto GridLayoutFormPanel con dos columnas Cree un elemento de entrada de formulario de texto para el sistemaLabelFormElement sysPrompt = new LabelFormElement(Sistema)TextFormInput system = new TextFormInput(System)
Cree un elemento de entrada de formulario de texto para el ID de usuarioLabelFormElement userPrompt = new LabelFormElement(Usuario)TextFormInput user = new TextFormInput(User)
Cree un elemento de entrada de formulario de contrasentildea para la contrasentildeaLabelFormElement passwordPrompt = new LabelFormElement(Contrasentildea)PasswordFormInput password = new PasswordFormInput(Password)
Cree el objeto GridLayoutFormPanel con dos columnas y antildeada los elementos de formularioGridLayoutFormPanel panel = new GridLayoutFormPanel(2)paneladdElement(sysPrompt)paneladdElement(system)paneladdElement(userPrompt)paneladdElement(user)paneladdElement(passwordPrompt)paneladdElement(password)
IBM Toolbox para Java 215
Cree el botoacuten de someter para el formularioSubmitFormInput logonButton = new SubmitFormInput(logon Iniciar sesioacuten)
Cree el objeto HTMLForm y antildeaacutedale el panelHTMLForm form = new HTMLForm(servletURI)formaddElement(panel)formaddElement(logonButton)
Este ejemplo genera el siguiente coacutedigo HTMLltform action=servletURI method=getgtlttable border=0gtlttrgtlttdgtSystemlttdgtlttdgtltinput type=text name=System gtlttdgtlttrgtlttrgtlttdgtUserlttdgtlttdgtltinput type=text name=User gtlttdgtlttrgtlttrgtlttdgtPasswordlttdgtlttdgtltinput type=password name=Password gtlttdgtlttrgtlttablegtltinput type=submit name=logon value=Logon gtltformgt
Informacioacuten relacionadaJavadoc GridLayoutFormPanel
Clase LineLayoutFormPanel
La clase LineLayoutFormPanel representa un disentildeo lineal de los elementos de un formulario HTML Loselementos del formulario se disponen en una sola fila dentro de un panel
Ejemplo coacutemo se utiliza LineLayoutFormPanel
Este ejemplo crea un objeto LineLayoutFormPanel y antildeade dos elementos de formularioCheckboxFormInput privacyCheckbox =
new CheckboxFormInput(confidential yes Confidencial true)CheckboxFormInput mailCheckbox =
new CheckboxFormInput(mailingList yes Uacutenase a nuestra lista de correo false)LineLayoutFormPanel panel = new LineLayoutFormPanel()paneladdElement(privacyCheckbox)paneladdElement(mailCheckbox)String tag = panelgetTag()
El ejemplo de coacutedigo anterior genera el siguiente coacutedigo HTMLltinput type=checkbox name=confidential value=yes checked=checked gt Confidencialltinput type=checkbox name=mailingList value=yes gt Uacutenase a nuestra lista de correo ltbrgt
Informacioacuten relacionadaJavadoc LineLayoutFormPanel
Clase TextAreaFormElement
La clase TextAreaFormElement representa un elemento de formulario HTML que es un aacuterea de textoPara especificar el tamantildeo del aacuterea de texto debe establecer el nuacutemero de filas y columnas Paraaveriguar queacute tamantildeo se ha establecido para un aacuterea de texto puede utilizar los meacutetodos getRows() ygetColumns()
216 IBM Toolbox para Java IBM Toolbox para Java
Para establecer el texto inicial dentro del aacuterea de texto se utiliza el meacutetodo setText() Utilice el meacutetodogetText() para ver el texto inicial que se ha establecido
El ejemplo siguiente muestra coacutemo se crea un objeto TextAreaFormElementTextAreaFormElement textArea = new TextAreaFormElement(foo 3 40)textAreasetText(Aquiacute se especifica el valor predeterminado de TEXTAREA)Systemoutprintln(textAreagetTag())
El ejemplo de coacutedigo anterior genera el siguiente coacutedigo HTMLltformgtlttextarea name=foo rows=3 cols=40gtAquiacute se especifica el valor predeterminado de TEXTAREAlttextareagtltformgt
Javadoc TextAreaFormElement
Clase LabelFormElement
La clase LabelFormElement representa una etiqueta para un elemento de formulario HTML
La clase LabelFormElement permite etiquetar elementos de un formulario HTML como por ejemplo unaacuterea de texto o una entrada de formulario de contrasentildea La etiqueta es una liacutenea de texto que seestablece mediante el meacutetodo setLabel() Este texto no responde a la entrada de usuario y sirve para queal usuario le sea maacutes faacutecil comprender el formulario
Ejemplo coacutemo se utiliza LabelFormElement
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto LabelFormElementLabelFormElement label = new LabelFormElement(Saldo de cuenta)Systemoutprintln(labelgetTag())
Este ejemplo genera la siguiente salidaSaldo de cuenta
Informacioacuten relacionadaJavadoc LabelFormElement
Clase SelectFormElement
La clase SelectFormElement representa un tipo de entrada de seleccioacuten de un formulario HTML Puedeantildeadir y eliminar diversas opciones dentro del elemento de seleccioacuten
La clase SelectFormElement dispone de meacutetodos que le permiten ver y cambiar atributos del elemento deseleccioacutenv Utilice setMultiple() para establecer si el usuario puede o no seleccionar maacutes de una opcioacutenv Utilice getOptionCount() para averiguar cuaacutentos elementos hay en el disentildeo de la opcioacutenv Utilice setSize() para establecer el nuacutemero de opciones visibles dentro del elemento de seleccioacuten y el
meacutetodo getSize() para determinar el nuacutemero de opciones visibles
En el ejemplo siguiente se crea un objeto SelectFormElement que tiene tres opciones El objetoSelectFormElement que se llama list estaacute resaltado Las dos primeras opciones que se antildeaden especificanel texto de la opcioacuten que es el nombre y los atributos de seleccioacuten La tercera opcioacuten que se antildeade sedefine mediante un objeto SelectOption
IBM Toolbox para Java 217
SelectFormElement list = new SelectFormElement(list1)SelectOption option1 = listaddOption(Opcioacuten1 opt1)SelectOption option2 = listaddOption(Opcioacuten2 opt2 false)SelectOption option3 = new SelectOption(Opcioacuten3 opt3 true)listaddOption(option3)Systemoutprintln(listgetTag())
El ejemplo de coacutedigo anterior genera el coacutedigo HTML siguienteltselect name=list1gtltoption value=opt1gtOpcioacuten1ltoptiongtltoption value=opt2gtOpcioacuten2ltoptiongtltoption value=opt3 selected=selectedgtOpcioacuten3ltoptiongtltselectgt
Referencia relacionadaldquoClase SelectOptionrdquoLa clase SelectOption representa una opcioacuten en un objeto SelectFormElement de un formulario HTML Elelemento de formulario option se utiliza en un formulario de seleccioacutenInformacioacuten relacionadaJavadoc SelectFormElement
Clase SelectOption
La clase SelectOption representa una opcioacuten en un objeto SelectFormElement de un formulario HTML Elelemento de formulario option se utiliza en un formulario de seleccioacuten
Se proporcionan meacutetodos que permiten recuperar y establecer atributos dentro de una opcioacuten deseleccioacuten (SelectOption) Por ejemplo puede establecer si de forma predeterminada la opcioacuten debe estarseleccionada Tambieacuten puede establecer el valor de entrada que la opcioacuten utilizaraacute cuando se someta elformulario
El siguiente ejemplo crea tres objetos SelectOption dentro de un formulario de seleccioacuten Todos los objetosSelectOption que figuran maacutes abajo estaacuten resaltados Se llaman option1 option2 y option3 El objeto option3estaacute inicialmente seleccionado
SelectFormElement list = new SelectFormElement(list1)SelectOption option1 = listaddOption(Opcioacuten1 opt1)SelectOption option2 = listaddOption(Opcioacuten2 opt2 false)SelectOption option3 = new SelectOption(Opcioacuten3 opt3 true)listaddOption(option3)Systemoutprintln(listgetTag())
El ejemplo de coacutedigo anterior genera el coacutedigo HTML siguienteltselect name=list1gtltoption value=opt1gtOpcioacuten1ltoptiongtltoption value=opt2gtOpcioacuten2ltoptiongtltoption value=opt3 selected=selectedgtOpcioacuten3ltoptiongtltselectgt
Referencia relacionadaldquoClase SelectFormElementrdquo en la paacutegina 217La clase SelectFormElement representa un tipo de entrada de seleccioacuten de un formulario HTML Puedeantildeadir y eliminar diversas opciones dentro del elemento de seleccioacutenInformacioacuten relacionadaJavadoc SelectOption
Clase RadioFormInputGroup
La clase RadioFormInputGroup representa un grupo de objetos RadioFormInput Los usuarios solopueden seleccionar uno de los objetos RadioFormInput de un RadioFormInputGroup
218 IBM Toolbox para Java IBM Toolbox para Java
Los meacutetodos de la clase RadioFormInputGroup permiten trabajar con los diversos atributos de un grupode botones de seleccioacuten Con estos meacutetodos puede hacer las siguientes tareasv Antildeadir un botoacuten de seleccioacutenv Eliminar un botoacuten de seleccioacutenv Obtener o establecer el nombre del grupo de botones de seleccioacuten
En el ejemplo que hay a continuacioacuten se crea un grupo de botones de seleccioacuten Cree algunos botones de seleccioacutenRadioFormInput radio0 = new RadioFormInput(age kid 0-12 true)RadioFormInput radio1 = new RadioFormInput(age teen 13-19 false)RadioFormInput radio2 = new RadioFormInput(age twentysomething 20-29 false)RadioFormInput radio3 = new RadioFormInput(age thirtysomething 30-39 false) Cree un grupo de botones de seleccioacuten y antildeada los botones de seleccioacutenRadioFormInputGroup ageGroup = new RadioFormInputGroup(age)ageGroupadd(radio0)ageGroupadd(radio1)ageGroupadd(radio2)ageGroupadd(radio3)Systemoutprintln(ageGroupgetTag())
El ejemplo de coacutedigo anterior genera el siguiente coacutedigo HTMLltinput type=radio name=age value=kid checked=checked gt 0-12ltinput type=radio name=age value=teen gt 13-19ltinput type=radio name=age value=twentysomething gt 20-29ltinput type=radio name=age value=thirtysomething gt 30-39
Informacioacuten relacionadaJavadoc RadioFormInputGroupJavadoc RadioFormInput
Clase HTMLHeadLa clase HTMLHead de IBM Toolbox para Java representa un coacutedigo head HTML La seccioacuten head deuna paacutegina HTML contiene un coacutedigo head inicial y otro final que normalmente incluyen otros coacutedigosPor lo general el coacutedigo head contiene un coacutedigo de tiacutetulo y coacutedigos meta
Los constructores de HTMLHead permiten crear un coacutedigo head que estaacute vaciacuteo que contiene un coacutedigode tiacutetulo o que contiene un coacutedigo de tiacutetulo y un coacutedigo meta Faacutecilmente se pueden antildeadir coacutedigos detiacutetulo y meta al objeto HTMLHead vaciacuteo
Los meacutetodos de la clase HTMLHead permiten establecer y obtener los coacutedigos de tiacutetulo y meta de lapaacutegina Defina el contenido de los coacutedigos meta mediante la clase HTMLMeta
El coacutedigo siguiente muestra un modo de crear un coacutedigo HTMLHead Cree un objeto HTMLHead vaciacuteoHTMLHead head = new HTMLHead(Paacutegina principal)
Antildeada el tiacutetuloheadsetTitle(Paacutegina principal)
Defina la informacioacuten meta y antildeaacutedala al objeto HTMLHeadHTMLMeta meta = new HTMLMeta(Content-Type texthtml charset=iso-8859-1)headaddMetaInformation(meta)
Esta es la salida del coacutedigo HTMLHead de ejemploltheadgtltmeta http-equiv=Content-Type content=texthtml charset=iso-8859-1gtlttitlegtMi paacutegina principallttitlegtltheadgt
Referencia relacionada
IBM Toolbox para Java 219
ldquoClase HTMLMetardquo en la paacutegina 224La clase HTMLMeta de IBM Toolbox para Java representa informacioacuten de metadatos que se utiliza dentrode un coacutedigo HTMLHead Los atributos de los coacutedigos META se emplean al identificar indexar y definirinformacioacuten en el documento HTMLInformacioacuten relacionadaJavadoc HTMLHead
Clase HTMLHeadingLa clase HTMLHeading de IBM Toolbox para Java representa una cabecera HTML Cada una de lascabeceras puede tener su propia alineacioacuten y su propio nivel de 1 (font maacutes grande mayor importancia)a 6
Los meacutetodos de la clase HTMLHeading sonv Obtener y establecer el texto de la cabecerav Obtener y establecer el nivel de la cabecerav Obtener y establecer la alineacioacuten de la cabecerav Obtener y establecer la direccioacuten de interpretacioacuten del textov Obtener y establecer el idioma del elemento de entradav Obtener una representacioacuten de tipo String del objeto HTMLHeading
Ejemplo crear objetos HTMLHeading
El ejemplo que sigue crea tres objetos HTMLHeading Cree y visualice tres objetos HTMLHeadingHTMLHeading h1 = new HTMLHeading(1 Cabecera HTMLConstantsLEFT)HTMLHeading h2 = new HTMLHeading(2 Subcabecera HTMLConstantsCENTER)HTMLHeading h3 = new HTMLHeading(3 Elemento HTMLConstantsRIGHT)Systemoutprint(h1 + rn + h2 + rn + h3)
El ejemplo anterior genera los coacutedigos siguienteslth1 align=leftgtCabeceralth1gtlth2 align=centergtSubcabeceralth2gtlth3 align=rightgtElementolth3gt
Informacioacuten relacionadaJavadoc HTMLHeading
Clase HTMLHyperlinkLa clase HTMLHyperlink de IBM Toolbox para Java representa un coacutedigo de hiperenlace HTML Con laclase HTMLHyperlink puede crear un enlace dentro de la paacutegina HTML
Esta clase le permite obtener y establecer numerosos atributos de hiperenlaces como los que se indican acontinuacioacutenv Obtener y establecer el URI (identificador de recursos uniforme) del enlacev Obtener y establecer el tiacutetulo del enlacev Obtener 0 establecer el marco destino del enlace
La clase HTMLHyperlink puede imprimir el hiperenlace completo con las propiedades definidas parapoder utilizar la salida en la paacutegina HTML
A continuacioacuten figura un ejemplo de HTMLHyperlink Cree un hiperenlace HTML con la paacutegina de presentacioacuten de IBM Toolbox para JavaHTMLHyperlink toolbox =
new HTMLHyperlink(httpwwwibmcomas400toolboxPaacutegina de presentacioacuten de IBM Toolbox para Java)
220 IBM Toolbox para Java IBM Toolbox para Java
toolboxsetTarget(TARGET_BLANK)
Visualice el coacutedigo de enlace de la Caja de Herramientas (Toolbox)Systemoutprintln(toolboxtoString())
El coacutedigo anterior genera el coacutedigo HTML siguientelta href=httpwwwibmcomas400toolboxgtPaacutegina de presentacioacuten de IBM Toolbox para Javaltagt
Informacioacuten relacionadaJavadoc HTMLHyperlink
Clase HTMLImageLa clase HTMLImage permite crear coacutedigos de imagen para la paacutegina HTML
La clase HTMLImage proporciona meacutetodos que permiten obtener y establecer los atributos de imagentales comov Obtener o establecer la altura de la imagenv Obtener o establecer la anchura de la imagenv Obtener o establecer el nombre de la imagenv Obtener o establecer el texto alternativo de la imagenv Obtener o establecer el espacio horizontal alrededor de la imagenv Obtener o establecer el espacio vertical alrededor de la imagenv Obtener o establecer la referencia absoluta o relativa de la imagenv Recuperar una representacioacuten de tipo serie del objeto HTMLImage
El ejemplo siguiente muestra un modo de crear un objeto HTMLImage Cree un objeto HTMLImageHTMLImage image = new HTMLImage(httpmyWebSitepicturegif
Texto alternativo para este graacutefico)imagesetHeight(94)imagesetWidth(105)Systemoutprintln(image)
La sentencia de imprimir genera el siguiente coacutedigo en una sola liacutenea La acomodacioacuten de texto solo seproduce para la visualizacioacuten
ltimg src=httpmyWebSitepicturegifalt=Texto alternativo para este graacuteficoheight=94 width=105 gt
Informacioacuten relacionadaJavadoc HTMLImage
Clases HTMLListLas clases HTMLList de IBM Toolbox para Java permiten crear listas dentro de las paacuteginas HTML congran facilidad Estas clases proporcionan meacutetodos para obtener y establecer los diversos atributos de laslistas y los elementos que contienen
En concreto la clase padre HTMLList proporciona un meacutetodo para generar una lista compacta quevisualiza los elementos en vertical en el menor espacio posiblev Los meacutetodos de HTMLList permiten
ndash Compactar la listandash Antildeadir y eliminar elementos de la listandash Antildeadir y eliminar listas de la lista (posibilitando el anidamiento de listas)
v Los meacutetodos de HTMLListItem permitenndash Obtener y establecer el contenido del elemento
IBM Toolbox para Java 221
ndash Obtener y establecer la direccioacuten de interpretacioacuten del textondash Obtener y establecer el idioma del elemento de entrada
Las subclases de HTMLList y HTMLListItem permiten crear listas HTML propiasv OrderedList y OrderedListItemv UnorderedList y UnorderedListItem
Para la codificacioacuten de snippets consulte los ejemplos siguientesv Ejemplo crear listas ordenadasv Ejemplo crear listas sin ordenarv Ejemplo crear listas anidadas
OrderedList y OrderedListItem
Las clases OrderedList y OrderedListItem permiten crear listas ordenadas en las paacuteginas HTMLv Los meacutetodos de OrderedList permiten
ndash Obtener y establecer el nuacutemero inicial del primer elemento de la listandash Obtener y establecer el tipo (o estilo) de los nuacutemeros de elemento
v Los meacutetodos de OrderedListItem permitenndash Obtener y establecer el nuacutemero del elementondash Obtener y establecer el tipo (o estilo) del nuacutemero de elemento
Con los meacutetodos de OrderedListItem puede alterar temporalmente la numeracioacuten y el tipo de unelemento especiacutefico de la lista
Vea el ejemplo para crear listas ordenadas
UnorderedList y UnorderedListItem
Las clases UnorderedList y UnorderedListItem permiten crear listas sin ordenar en las paacuteginas HTMLv Los meacutetodos de UnorderedList permiten
ndash Obtener y establecer el tipo (o estilo) de los elementosv Los meacutetodos de UnorderedListItem permiten
ndash Obtener y establecer el tipo (o estilo) del elemento
Vea el ejemplo para crear listas sin ordenar
Ejemplos coacutemo se utilizan las clases HTMLList
Los ejemplos siguientes muestran coacutemo se utilizan las clases HTMLList para crear listas ordenadas listassin ordenar y listas anidadas
Ejemplo crear listas ordenadas
A continuacioacuten figura un ejemplo en el que se crea una lista ordenada Cree un objeto OrderedList
OrderedList oList = new OrderedList(HTMLConstantsSMALL_ROMAN) Cree los objetos OrderedListItem
OrderedListItem listItem1 = new OrderedListItem()OrderedListItem listItem2 = new OrderedListItem()
Establezca los datos de los objetos OrderedListItemlistItem1setItemData(new HTMLText(Primer elemento))listItem2setItemData(new HTMLText(Segundo elemento))
222 IBM Toolbox para Java IBM Toolbox para Java
Antildeada los elementos de lista al objeto OrderedListoListaddListItem(listItem1)oListaddListItem(listItem2)Systemoutprintln(oListgetTag())
El ejemplo anterior genera los coacutedigos siguientesltol type=igtltligtPrimer elementoltligtltligtSegundo elementoltligtltolgt
Ejemplo crear listas sin ordenar
A continuacioacuten figura un ejemplo en el que se crea una lista sin ordenar Cree un objeto UnorderedList
UnorderedList uList = new UnorderedList(HTMLConstantsSQUARE) Cree los objetos UnorderedListItem
UnorderedListItem listItem1 = new UnorderedListItem()UnorderedListItem listItem2 = new UnorderedListItem()
Establezca los datos de los objetos UnorderedListItemlistItem1setItemData(new HTMLText(Primer elemento))listItem2setItemData(new HTMLText(Segundo elemento))
Antildeada los elementos de lista al objeto UnorderedListuListaddListItem(listItem1)uListaddListItem(listItem2)Systemoutprintln(uListgetTag())
El ejemplo anterior genera los coacutedigos siguientesltul type=squaregtltligtPrimer elementoltligtltligtSegundo elementoltligtltulgt
Ejemplo crear listas anidadas
A continuacioacuten figura un ejemplo en el que se crea una lista anidada Cree un objeto UnorderedList
UnorderedList uList = new UnorderedList(HTMLConstantsSQUARE) Cree y establezca los datos de los objetos UnorderedListItem
UnorderedListItem listItem1 = new UnorderedListItem()UnorderedListItem listItem2 = new UnorderedListItem()listItem1setItemData(new HTMLText(Primer elemento))listItem2setItemData(new HTMLText(Segundo elemento))
Antildeada los elementos de lista al objeto UnorderedListuListaddListItem(listItem1)uListaddListItem(listItem2)
Cree un objeto OrderedListOrderedList oList = new OrderedList(HTMLConstantsSMALL_ROMAN)
Cree los objetos OrderedListItemOrderedListItem listItem1 = new OrderedListItem()OrderedListItem listItem2 = new OrderedListItem()OrderedListItem listItem3 = new OrderedListItem()
Establezca los datos de los objetos OrderedListItemlistItem1setItemData(new HTMLText(Primer elemento))listItem2setItemData(new HTMLText(Segundo elemento))listItem3setItemData(new HTMLText(Tercer elemento))
Antildeada los elementos de lista al objeto OrderedListoListaddListItem(listItem1)oListaddListItem(listItem2)
Antildeada (anide) la lista sin ordenar a OrderedListItem2oListaddList(uList)
IBM Toolbox para Java 223
Antildeada otro objeto OrderedListItem al objeto OrderedList despueacutes del objeto UnorderedList anidado
oListaddListItem(listItem3)Systemoutprintln(oListgetTag())
El ejemplo anterior genera los coacutedigos siguientesltol type=igtltligtPrimer elementoltligtltligtSegundo elementoltligtltul type=squaregtltligtPrimer elementoltligtltligtSegundo elementoltligtltulgtltligtTercer elementoltligtltolgt
Javadoc HTMLListJavadoc HTMLListItem
Clase HTMLMetaLa clase HTMLMeta de IBM Toolbox para Java representa informacioacuten de metadatos que se utiliza dentrode un coacutedigo HTMLHead Los atributos de los coacutedigos META se emplean al identificar indexar y definirinformacioacuten en el documento HTML
Los atributos del coacutedigo META sonv NAME - nombre asociado al contenido del coacutedigo METAv CONTENT - valores asociados al atributo NAMEv HTTP-EQUIV - informacioacuten recopilada por servidores HTTP para las cabeceras de los mensajes de
respuestav LANG - idiomav URL - se utiliza para redirigir a los usuarios de la paacutegina actual a otro URL
Por ejemplo para ayudar a los motores de buacutesqueda a determinar el contenido de una paacutegina podriacuteautilizar el coacutedigo META que se indica a continuacioacuten
ltMETA name=keywords lang=es-es content=games cards bridgegt
Tambieacuten puede emplear una clase HTMLMeta para redirigir a un usuario de una paacutegina a otra
Los meacutetodos de la clase HTMLMeta permitenv Obtener y establecer el atributo NAMEv Obtener y establecer el atributo CONTENTv Obtener y establecer el atributo HTTP-EQUIVv Obtener y establecer el atributo LANGv Obtener y establecer el atributo URL
Ejemplo crear coacutedigos META
En el ejemplo siguiente se crean dos coacutedigos META Cree un coacutedigo META para ayudar a los motores de buacutesqueda a determinar el contenido de la paacuteginaHTMLMeta meta1 = new HTMLMeta()meta1setName(keywords)meta1setLang(es-es)meta1setContent(games cards bridge) Cree un coacutedigo META para que las memorias cacheacute puedan determinar cuaacutendo renovar la paacuteginaHTMLMeta meta2 = new HTMLMeta(Expires Mon 01 Jun 2000 120000 GMT)Systemoutprint(meta1 + rn + meta2)
224 IBM Toolbox para Java IBM Toolbox para Java
El ejemplo anterior genera los coacutedigos siguientesltmeta name=keywords content=games cards bridgegtltmeta http-equiv=Expires content=Mon 01 Jun 2000 120000 GMTgt
Informacioacuten relacionadaJavadoc HTMLMeta
Clase HTMLParameterLa clase HTMLParameter representa los paraacutemetros que puede utilizar con la clase HTMLServlet Cadauno de los paraacutemetros tiene un nombre y un valor propios
Los meacutetodos de la clase HTMLParameter permitenv Obtener y establecer el nombre del paraacutemetrov Obtener y establecer el valor del paraacutemetro
Ejemplo crear coacutedigos HTMLParameter
En el ejemplo siguiente se crea un coacutedigo HTMLParameter Cree un objeto HTMLServletParameter
HTMLParameter parm = new HTMLParameter (age 21)Systemoutprintln(parm)
El ejemplo anterior genera el coacutedigo siguienteltparam name=age value=21gt
Informacioacuten relacionadaJavadoc HTMLParameter
Clase HTMLServletLa clase HTMLServlet representa un elemento include en el lado del servidor El objeto de servletespecifica el nombre del servlet y de forma opcional su ubicacioacuten Tambieacuten puede elegir emplear laubicacioacuten predeterminada en el sistema local
La clase HTMLServlet se utiliza con la clase HTMLParameter que especifica los paraacutemetros disponiblespara el servlet
Los meacutetodos de la clase HTMLServlet permitenv Antildeadir y eliminar HTMLParameters del coacutedigo del servletv Obtener y establecer la ubicacioacuten del servletv Obtener y establecer el nombre del servletv Obtener y establecer el texto alternativo del servlet
Ejemplo crear coacutedigos HTMLServlet
El ejemplo siguiente antildeade un coacutedigo HTMLServlet Cree un objeto HTMLServletHTMLServlet servlet = new HTMLServlet(myServlet httpserverportdir)
Cree un paraacutemetro y a continuacioacuten antildeaacutedalo al servletHTMLParameter param = new HTMLParameter(parm1 value1)servletaddParameter(param)
Cree y antildeada un segundo paraacutemetroHTMLParameter param2 = servletadd(parm2 value2)
IBM Toolbox para Java 225
Cree el texto alternativo si el servidor Web no soporta el coacutedigo de servletservletsetText(El servidor Web que proporciona esta paacutegina no da soporte al coacutedigo SERVLET)Systemoutprintln(servlet)
El ejemplo anterior genera los coacutedigos siguientesltservlet name=miServlet codebase=httpserverportdirgtltparam name=parm1 value=value1gtltparam name=parm2 value=value2gtEl servidor Web que proporciona esta paacutegina no da soporte al coacutedigo SERVLETltservletgt
Javadoc HTMLServletldquoClase HTMLParameterrdquo en la paacutegina 225La clase HTMLParameter representa los paraacutemetros que puede utilizar con la clase HTMLServletCada uno de los paraacutemetros tiene un nombre y un valor propios
Clases de tablas HTMLLa clase HTMLTable de IBM Toolbox para Java permite preparar de manera sencilla las tablas que sepueden utilizar en las paacuteginas HTML
Esta clase proporciona meacutetodos para obtener y establecer los diversos atributos de la tabla como seindica a continuacioacutenv Obtener y establecer la anchura del bordev Obtener el nuacutemero de filas de la tablav Antildeadir una columna o fila al final de la tablav Eliminar una columna o fila situada en una posicioacuten de columna o fila especificada
Ejemplo coacutemo se utilizan las clases HTMLTable
El ejemplo siguiente muestra coacutemo se utilizan las clases HTMLTable
ldquoEjemplo coacutemo se utilizan las clases HTMLTablerdquo en la paacutegina 502Informacioacuten relacionadaJavadoc HTMLTable
Clase HTMLTableCell
La clase HTMLTableCell toma como entrada cualquier objeto HTMLTagElement y crea el coacutedigo HTMLde casilla de tabla con el elemento especificado El elemento se puede establecer en el constructor omediante uno de los dos meacutetodos setElement()
Se pueden recuperar o actualizar muchos atributos de las casillas utilizando los meacutetodos proporcionadosen la clase HTMLTableCell Algunas de las acciones que se pueden realizar con estos meacutetodos sonv Obtener o establecer la distribucioacuten de filasv Obtener o establecer la altura de las casillasv Establecer si los datos de la casilla utilizaraacuten los convenios de desglose normal de liacutenea HTML
A continuacioacuten figura un ejemplo que crea un objeto HTMLTableCell y visualiza el coacutedigo HTMLCree un objeto HTMLHyperlinkHTMLHyperlink link = new HTMLHyperlink(httpwwwibmcom
Paacutegina de presentacioacuten de IBM)HTMLTableCell cell = new HTMLTableCell(link)cellsetHorizontalAlignment(HTMLConstantsCENTER)Systemoutprintln(cellgetTag())
226 IBM Toolbox para Java IBM Toolbox para Java
El meacutetodo getTag() anterior proporciona la salida del ejemplo
lttd align=centergtlta href=httpwwwibmcomgtPaacutegina de presentacioacuten de IBMltagtlttdgtJavadoc HTMLTableCellJavadoc HTMLTagElement
Clase HTMLTableRow
La clase HTMLTableRow crea una fila dentro de una tabla Esta clase proporciona diversos meacutetodos paraobtener y establecer los atributos de una fila
Los meacutetodos de la clase HTMLTableRow permiten llevar a cabo estas accionesv Antildeadir una columna a la fila o eliminar una columna de la filav Obtener datos de la columna que tiene el iacutendice especificadov Obtener el iacutendice de la columna que tiene la casilla especificadav Obtener el nuacutemero de columnas que hay en una filav Establecer la alineacioacuten horizontal y vertical
A continuacioacuten figura un ejemplo de HTMLTableRow Cree una fila y establezca la alineacioacutenHTMLTableRow row = new HTMLTableRow()rowsetHorizontalAlignment(HTMLTableRowCENTER)
Cree la informacioacuten de columna y antildeaacutedala a la filaHTMLText account = new HTMLText(customers_[rowIndex]getAccount())HTMLText name = new HTMLText(customers_[rowIndex]getName())HTMLText balance = new HTMLText(customers_[rowIndex]getBalance())
rowaddColumn(new HTMLTableCell(account))rowaddColumn(new HTMLTableCell(name))rowaddColumn(new HTMLTableCell(balance))
Antildeada la fila a un objeto HTMLTable (se presupone que ya existe la tabla)tableaddRow(row)
Informacioacuten relacionadaJavadoc HTMLTableRow
Clase HTMLTableHeader
La clase HTMLTableHeader es heredera de la clase HTMLTableCell Crea un tipo especiacutefico de casilla lacasilla de cabecera que proporciona una casilla de tipo ltthgt en vez de una casilla de tipo lttdgt Al igualque sucede con la clase HTMLTableCell se puede llamar a diversos meacutetodos con el fin de actualizar orecuperar los atributos de la casilla de cabecera
A continuacioacuten figura un ejemplo de HTMLTableHeader Cree las cabeceras de la tablaHTMLTableHeader account_header = new HTMLTableHeader(new HTMLText(CUENTA))HTMLTableHeader name_header = new HTMLTableHeader(new HTMLText(NOMBRE))HTMLTableHeader balance_header = new HTMLTableHeader()HTMLText balance = new HTMLText(SALDO)balance_headersetElement(balance)
Antildeada las cabeceras de tabla a un objeto HTMLTable (se presupone que ya existe la tabla)tableaddColumnHeader(account_header)tableaddColumnHeader(name_header)tableaddColumnHeader(balance_header)
Informacioacuten relacionada
IBM Toolbox para Java 227
Javadoc HTMLTableHeader
Clase HTMLTableCaption
La clase HTMLTableCaption crea un tiacutetulo para la tabla HTML Proporciona meacutetodos para actualizar yrecuperar los atributos del tiacutetulo Por ejemplo puede utilizar setAlignment() para especificar con queacutecomponente de la tabla se debe alinear el tiacutetulo
A continuacioacuten figura un ejemplo de HTMLTableCaption Cree unobjeto HTMLTableCaption predeterminado y establezca el texto del tiacutetulo
HTMLTableCaption caption = new HTMLTableCaption()captionsetElement(Saldos de cuenta de cliente - 1 de enero de 2000)
Antildeada el tiacutetulo de tabla a un objeto HTMLTable (se presupone que ya existe la tabla)tablesetCaption(caption)
Informacioacuten relacionadaJavadoc HTMLTableCaption
Clase HTMLTextLa clase HTMLText de IBM Toolbox para Java permite acceder a las propiedades del texto de la paacuteginaHTML Mediante la clase HTMLText puede obtener establecer y comprobar el estado de numerososatributos del texto
Estos atributos incluyen los siguientesv Obtener o establecer el tamantildeo del fontv Activar (true) o desactivar (false) el atributo de negrita o determinar si ya estaacute activadov Activar (true) o desactivar (false) el atributo de subrayado o determinar si ya estaacute activadov Obtener o establecer la alineacioacuten horizontal del texto
A continuacioacuten figura un ejemplo en el que se crea un objeto HTMLText se activa el atributo de negrita yse establece el tamantildeo del font en 5
HTMLText text = new HTMLText(IBM)textsetBold(true)textsetSize(5)Systemoutprintln(textgetTag())
La sentencia de imprimir genera el siguiente coacutedigo HTMLltfont size=5gtltbgtIBMltbgtltfontgt
Este coacutedigo cuando se utiliza en una paacutegina HTML ofrece este aspecto
IBM
Informacioacuten relacionadaJavadoc HTMLText
Clases HTMLTreeLa clase HTMLTree permite preparar de manera sencilla un aacuterbol jeraacuterquico de elementos HTML que sepuede utilizar en las paacuteginas HTML
Esta clase proporciona meacutetodos para obtener y establecer los diversos atributos del aacuterbol ademaacutes de losmeacutetodos que permiten llevar a cabo las acciones siguientesv Obtener y establecer la peticioacuten de servlet HTTPv Antildeadir un objeto HTMLTreeElement o FileTreeElement al aacuterbol
228 IBM Toolbox para Java IBM Toolbox para Java
v Eliminar un objeto HTMLTreeElement o FileTreeElement del aacuterbol
Ejemplos coacutemo se utilizan las clases HTMLTree
En los ejemplos siguientes se muestran diversas formas de utilizar las clases HTMLTreev ldquoEjemplo coacutemo se utilizan las clases HTMLTreerdquo en la paacutegina 493v ldquoEjemplo crear un aacuterbol de sistema de archivos integrado que se pueda recorrerrdquoInformacioacuten relacionadaJavadoc HTMLTree
Ejemplo crear un aacuterbol de sistema de archivos integrado que se pueda recorrer
El ejemplo siguiente consta de tres archivos que juntos muestran coacutemo crear un aacuterbol de sistema dearchivos integrado que se pueda recorrer El ejemplo utiliza marcos para visualizar un HTMLTree yFileListElement en un servletv FileTreeExamplejava - Este archivo genera los marcos HTML y arranca el servletv TreeNavjava - Este archivo construye y gestiona el aacuterbolv TreeListjava - Este archivo visualiza el contenido de las selecciones efectuadas en la clase TreeNavjava
Clase HTMLTreeElement
La clase HTMLTreeElement representa un elemento jeraacuterquico dentro de un objeto HTMLTree o de otrosobjetos HTMLTreeElement
Se pueden recuperar o actualizar muchos atributos de elementos de aacuterbol utilizando los meacutetodosproporcionados en la clase HTMLTreeElement Algunas de las acciones que se pueden realizar con estosmeacutetodos sonv Obtener o establecer el texto visible del elemento de aacuterbolv Obtener o establecer el URL del icono expandido y contraiacutedov Establecer si el elemento de aacuterbol se expandiraacute
A continuacioacuten figura un ejemplo que crea un objeto HTMLTreeElement y visualiza el coacutedigo HTML Cree un objeto HTMLTreeHTMLTree tree = new HTMLTree()
Cree el objeto HTMLTreeElement padreHTMLTreeElement parentElement = new HTMLTreeElement()parentElementsetTextUrl(new HTMLHyperlink(httpMiPaacuteginaWeb Mi paacutegina Web))
Cree el objeto HTMLTreeElement hijoHTMLTreeElement childElement = new HTMLTreeElement()childElementsetTextUrl(new HTMLHyperlink(httpOtraPaacuteginaWeb Otra paacutegina Web))parentElementaddElement(childElement)
Antildeada el elemento de aacuterbol al aacuterboltreeaddElement(parentElement)Systemoutprintln(treegetTag())
El meacutetodo getTag() del ejemplo anterior genera coacutedigos HTML como los siguienteslttable cellpadding=0 cellspacing=3gtlttrgtlttdgtltfont color=0000FFgtltugt-ltugtltfontgt lttdgtlttdgtltfont color=0000FFgtltugtMi paacutegina Webltugtltfontgtlttdgtlttrgt
lttrgt
IBM Toolbox para Java 229
lttdgt lttdgtlttdgtlttable cellpadding=0 cellspacing=3gtlttrgtlttdgtltfont color=0000FFgtltugt-ltugtltfontgt lttdgtlttdgtltfont color=0000FFgtltugtOtra paacutegina Webltugtltfontgt lttdgtlttrgtlttablegtlttdgtlttrgtlttablegt
Informacioacuten relacionadaJavadoc HTMLTreeElement
Clase FileTreeElement
La clase FileTreeElement de IBM Toolbox para Java representa el sistema de archivos integrado dentro deuna vista HTMLTree
Se pueden recuperar o actualizar muchos atributos de elementos de aacuterbol utilizando los meacutetodosproporcionados en la clase HTMLTreeElement Tambieacuten puede obtener y establecer el nombre y la viacutea deacceso de las unidades compartidas NetServer
Algunas de las acciones que estos meacutetodos permiten llevar a cabo sonv Obtener o establecer el URL del icono expandido y contraiacutedo (meacutetodo heredado)v Establecer si el elemento de aacuterbol se expandiraacute (meacutetodo heredado)v Obtener o establecer el nombre de la unidad compartida NetServerv Obtener o establecer la viacutea de acceso de la unidad compartida NetServer
Ejemplo coacutemo se utiliza FileTreeElement
A continuacioacuten figura un ejemplo que crea un objeto FileTreeElement y visualiza el coacutedigo HTML Cree un objeto HTMLTreeHTMLTree tree = new HTMLTree()
Cree un objeto URLParserURLParser urlParser = new URLParser(httpServletRequestgetRequestURI())
Cree un objeto AS400AS400 system = new AS400(mySystem myUserId myPassword)
Cree un objeto IFSJavaFileIFSJavaFile root = new IFSJavaFile(system QIBM)
Cree un objeto DirFilter y obtenga los directoriosDirFilter filter = new DirFilter()File[] dirList = rootlistFiles(filter)
for (int i=0 i lt dirListlength i++)
Cree un objeto FileTreeElementFileTreeElement node = new FileTreeElement(dirList[i])
Establezca el URL del iconoServletHyperlink sl = new ServletHyperlink(urlParsergetURI())slsetHttpServletResponse(resp)elementsetIconUrl(sl)
Antildeada el objeto FileTreeElement al aacuterbol
230 IBM Toolbox para Java IBM Toolbox para Java
treeaddElement(element)
Systemoutprintln(treegetTag())
El meacutetodo getTag() anterior proporciona la salida del ejemploInformacioacuten relacionadaJavadoc FileTreeElement
Clase FileListElement
La clase FileListElement de IBM Toolbox para Java permite crear un elemento de lista de archivos querepresenta el contenido de un directorio de sistema de archivos integrado
Puede utilizar el objeto FileListElement para representar el contenido de una unidad compartidaNetServer obteniendo y estableciendo el nombre y la viacutea de acceso de las unidades compartidasNetServer
La clase FileListElement proporciona meacutetodos que permiten llevar a cabo estas accionesv Listar y ordenar los elementos de la lista de archivosv Obtener y establecer la peticioacuten de servlet HTTPv Obtener y establecer FileListRendererv Obtener y establecer HTMLTable con el que se visualizaraacute la lista de archivosv Obtener y establecer el nombre de una unidad compartida NetServerv Obtener y establecer la viacutea de acceso de una unidad compartida NetServer
Puede utilizar la clase FileListElement con otras clases del paquete htmlv Con una clase FileListRenderer puede especificar coacutemo desea visualizar la lista de archivosv Con la clase FileTreeElement puede crear una lista que se pueda recorrer de archivos de sistema de
archivos integrado o archivos compartidos NetServer
Ejemplo Utilizar FileListElement para crear un aacuterbol de sistema de archivos integrado que se puedarecorrer
El ejemplo que sigue muestra coacutemo se puede utilizar la clase FileListElement con las clases HTMLTree(FileTreeElement y HTMLTreeElement) para crear un aacuterbol de sistema de archivos integrado que se puedarecorrer El ejemplo tambieacuten contiene coacutedigo para establecer la viacutea de acceso de una unidad compartidaNetServer
ldquoEjemplo crear un aacuterbol de sistema de archivos integrado que se pueda recorrerrdquo en la paacutegina 229Informacioacuten relacionadaJavadoc FileListElementJavadoc FileTreeElementJavadoc HTMLTreeElement
Clase FileListRenderer
La clase FileListRenderer de IBM Toolbox para Java representa cualquier campo de los objetos File(directorios y archivos) en un objeto FileListElement
La clase FileListRenderer ofrece meacutetodos que permiten llevar a cabo las acciones siguientesv Obtener el nombre del directoriov Obtener el nombre del archivo
IBM Toolbox para Java 231
v Obtener el nombre del directorio padrev Devolver la fila de datos que desea visualizar en el objeto FileListElement
En este ejemplo se crea un objeto FileListElement con un representador Cree un objeto FileListElementFileListElement fileList = new FileListElement(sys httpservletrequest)
Establezca el representador especiacutefico para este servlet que ampliacutea FileListRenderer y altera temporalmente los meacutetodos aplicablesfileListsetRenderer(new myFileListRenderer(request))
Si no desea utilizar el representador predeterminado puede ampliar FileListRenderer y alterartemporalmente los meacutetodos o crear otros nuevos Por ejemplo puede desear asegurarse de impedir quese pasen los nombres de directorios o archivos especiacuteficos con unas extensiones determinadas al objetoFileListElement Ampliando la clase y alterando temporalmente el meacutetodo correspondiente puededevolver un valor nulo para estos archivos y directorios con lo que se asegura de que no se visualicen
Para personalizar por completo las filas de un objeto FileListElement utilice el meacutetodo getRowData() Unejemplo de personalizacioacuten de datos de filas mediante getRowData() podriacutea ser antildeadir una columna a losdatos de fila o reorganizar las columnas Cuando el comportamiento predeterminado del objetoFileListRenderer sea satisfactorio no seraacute necesario que lleve a cabo ninguna programacioacuten adicional yaque la clase FileListElement crea un objeto FileListRenderer predeterminadoReferencia relacionadaldquoClase FileListElementrdquo en la paacutegina 231La clase FileListElement de IBM Toolbox para Java permite crear un elemento de lista de archivos querepresenta el contenido de un directorio de sistema de archivos integradoInformacioacuten relacionadaJavadoc FileListRenderer
Clases ReportWriterEl paquete comibmas400utilreportwriter proporciona clases que permiten acceder a datos de un archivofuente XML o datos generados por servlets o JavaServer Pages y darles formato con facilidad
El paquete reportwriter ofrece un modo coacutemodo de especificar tres paquetes distintos pero relacionadosv comibmas400utilreportwriterpclwriterv comibmas400utilreportwriterpdfwriterv comibmas400utilreportwriterprocessor
Estos paquetes contienen diversas clases que permiten dar formato a corrientes de datos XML y generarinformes en esos formatos Compruebe que tiene los archivos JAR necesarios en la CLASSPATH entre losque debe haber un analizador XML y un procesador XSLT Encontraraacute maacutes informacioacuten en estas paacuteginasv Archivos JAR
Las clases Context (de los paquetes pclwriter y pdfwriter) definen meacutetodos que las clases ReportProcessornecesitan para representar datos XML y JSP en el formato elegidov Utilice PCLContext junto con una clase ReportWriter para generar un informe en el formato PCL
(Printer Control Language) de Hewlett Packardv Utilice PDFContext junto con una clase ReportWriter para generar un informe en el formato PDF
(Portable Document Format) de Adobe
Las clases ReportProcessor (del paquete processor) permiten generar informes con formato a partir de lainformacioacuten que la aplicacioacuten recoge de los datos fuente XML servlets Java y JavaServer Pages (JSP)
232 IBM Toolbox para Java IBM Toolbox para Java
v Utilice la clase JSPReportProcessor para recuperar datos de servlets y paacuteginas JSP para generarinformes en los formatos disponibles (contextos)
Clases ContextLas clases Context de IBM Toolbox para Java soportan formatos de datos especiacuteficos que en combinacioacutencon las clases OutputQueue y SpooledFileOutputStream permiten a las clases ReportWriter generarinformes en ese formato y colocar esos informes en un archivo en spool
La aplicacioacuten solo tiene que crear una instancia de la clase Context que las clases ReportWriterposteriormente utilizan para generar los informes La aplicacioacuten nunca llama directamente a ninguno delos meacutetodos de ninguna clase Context Los meacutetodos PCLContext y PDFContext estaacuten pensados para eluso interno de las clases ReportWriter
Para construir una instancia de la clase Context se necesita un OutputStream (del paquete javaio) y unPageFormat (del paquete javaawtprint) El Ejemplo Utilizar JSPReportProcessor con PDFContextmuestra coacutemo se puede construir y utilizar las clases Context con otras clases ReportWriter para generarinformes
Javadoc OutputQueueJavadoc SpooledFileOutputStreamldquoClases ReportWriterrdquo en la paacutegina 232El paquete comibmas400utilreportwriter proporciona clases que permiten acceder a datos de unarchivo fuente XML o datos generados por servlets o JavaServer Pages y darles formato con facilidadldquoEjemplo coacutemo se utiliza XSLReportProcessor con PCLContextrdquo en la paacutegina 517Este ejemplo no debe utilizarse ya que la clase XSLReportProcessor ha dejado de estar soportadaldquoEjemplo coacutemo se utiliza JSPReportProcessor con PDFContextrdquo en la paacutegina 514Este ejemplo utiliza las clases JSPReportProcessor y PDFContext para obtener datos de un URLespecificado y convertir los datos a formato PDF Despueacutes los datos se convierten en un documentoPDF
Clase JSPReportProcessorLa clase JSPReportProcessor permite crear un documento o informe a partir del contenido de unaJavaServer Page (JSP) o un servlet Java
Utilice esta clase para obtener un servlet o JSP de un URL determinado y crear un documento a partir delcontenido El servlet o JSP debe proporcionar los datos del documento incluidos los objetos de formatoXSL El usuario debe especificar el contexto de salida y el origen de datos de entrada de JSP antes depoder generar las paacuteginas del documento A continuacioacuten puede convertir los datos del informe en unformato de corriente de datos de salida especiacutefico
La clase JSPReportProcessor permite llevar a cabo estas accionesv Procesar el informev Establecer un URL como plantilla
Los ejemplos que hay a continuacioacuten muestran coacutemo pueden utilizarse las clases JSPReportProcessor yPDFContext para generar un informe Los ejemplos contienen el coacutedigo Java y JSP que puede vermediante los enlaces siguientes Tambieacuten puede bajar un archivo zip que contiene los archivos fuente JSPXML y XSL de ejemplo para los ejemplos de JSPReportProcessorv ldquoEjemplo coacutemo se utiliza JSPReportProcessor con PDFContextrdquo en la paacutegina 514v ldquoEjemplo archivo JSP de ejemplo de JSPReportProcessorrdquo en la paacutegina 515
Tecnologiacutea Java Server Pages
Clase XSLReportProcessorLa clase XSLReportProcessor ya no estaacute soportada y no debe utilizarse
IBM Toolbox para Java 233
La clase XSLReportProcessor permite crear un documento o informe transformando los datos fuente XMLy daacutendoles formato con una hoja de estilo XSL Utilice esta clase para crear el informe empleando unahoja de estilo XSL que contenga los objetos de formato (FO) XSL que deben cumplir la especificacioacutenXSL A continuacioacuten utilice una clase Context para convertir los datos del informe en un formato decorriente de datos de salida especiacutefico
La clase XSLReportProcessor permite llevar a cabo estas accionesv Establecer la hoja de estilo XSLv Establecer el origen de datos XMLv Establecer el fuente FO XSLv Procesar un informe
Ejemplos
Los ejemplos que hay a continuacioacuten muestran coacutemo pueden utilizarse las clases XSLReportProcessor yPCLContext para generar un informe Los ejemplos contienen el coacutedigo Java XML y XSL que puede vermediante los enlaces siguientes Tambieacuten puede bajar un archivo zip con los archivos fuente XML XSL yJSP de ejemplo para los ejemplos de XSLReportProcessor y JSPReportProcessorv Ejemplo coacutemo se utiliza XSLReportProcessor con PCLContextv Ejemplo archivo XML de ejemplo de XSLReportProcessorv Ejemplo archivo XSL de ejemplo de XSLReportProcessor
Para obtener maacutes informacioacuten sobre XML y XSL consulte el tema XML Toolkit que se encuentra enInformation Center
Clases de seguridadUtilice las clases de seguridad de IBM Toolbox para Java para proporcionar conexiones protegidas con unservidor verificar la identidad de un usuario y asociar un usuario a la hebra de sistema operativo cuandose esteacute ejecutando en el servidor local
Los servicios de seguridad incluidos sonv Una infraestructura de comunicaciones que utiliza Java Secure Socket Extension (JSSE) proporciona
conexiones seguras tanto mediante el cifrado de los datos intercambiados entre un cliente y una sesioacutende servidor como mediante la autenticacioacuten de servidor
v Los servicios de autenticacioacuten proporcionan la posibilidad dendash Autenticar una identidad de usuario y su contrasentildea en relacioacuten con el registro de usuarios de IBM
indash Capacidad de asignar una identidad a la hebra de IBM i actual
SSL (capa de sockets segura)SSL (capa de sockets segura) proporciona conexiones seguras mediante tanto mediante el cifrado de losdatos intercambiados entre un cliente y una sesioacuten de servidor como mediante la autenticacioacuten deservidor
La utilizacioacuten de SSL incide de forma negativa en el rendimiento ya que las conexiones SSL son maacuteslentas que las que no tienen cifrado Utilice conexiones SSL cuando la seguridad de los datos transferidossea maacutes importante que el rendimiento (por ejemplo al transferir informacioacuten de tarjetas de creacutedito o deestado de cuentas bancarias)
Poacutengase en contacto con el representante de IBM para obtener maacutes informacioacuten
Utilizacioacuten del cifrado entre las clases de IBM Toolbox para Java y los servidores IBM i
234 IBM Toolbox para Java IBM Toolbox para Java
Utilizacioacuten de SSL para cifrar datos entre IBM Toolbox para Java y los servidores IBM i
Puede utilizar SSL para cifrar los datos que se intercambian entre las clases de IBM Toolbox para Java ylos servidores IBM i
En el lado del cliente utilice JSSE para cifrar los datos En el lado del servidor debe utilizar el gestor decertificados digitales de IBM i a fin de configurar los servidores IBM i para intercambiar los datoscifrados
Configuracioacuten del cliente y del servidor para utilizar SSL
Para cifrar los datos que fluyen entre las clases de IBM Toolbox para Java y los servidores IBM i lleve acabo estas tareas1 Configure los servidores para intercambiar datos cifrados2 Utilice el objeto SecureAS400 para forzar a IBM Toolbox para Java a cifrar datos
Nota con la realizacioacuten de los dos primeros pasos anteriores solo se crea una viacutea de acceso seguraentre el cliente y el servidor La aplicacioacuten debe utilizar el objeto SecureAS400 para indicar a IBMToolbox para Java queacute datos debe cifrar Los datos que fluyen por el objeto SecureAS400 son losuacutenicos datos que se cifran Si emplea un objeto AS400 los datos no se cifraraacuten y se utilizaraacute la viacutea deacceso normal hasta el servidor
Configuracioacuten de IBM i para utilizar SSL
Para configurar el sistema para utilizar SSL con IBM Toolbox para Java siga estos pasos1 Obtenga y configure el certificado de servidor2 Aplique el certificado a los siguientes sistemas utilizados por IBM Toolbox para Java
v QIBM_OS400_QZBS_SVR_CENTRALv QIBM_OS400_QZBS_SVR_DATABASEv QIBM_OS400_QZBS_SVR_DTAQv QIBM_OS400_QZBS_SVR_NETPRTv QIBM_OS400_QZBS_SVR_RMTCMDv QIBM_OS400_QZBS_SVR_SIGNONv QIBM_OS400_QZBS_SVR_FILEv QIBM_OS400_QRW_SVR_DDM_DRDA
Obtener y configurar certificados de servidor
Antes de obtener y configurar el certificado de servidor debe instalar los productos siguientes
v Programa bajo licencia IBM HTTP Server (5770-DG1)v Opcioacuten 34 del sistema operativo base (Gestor de Certificados Digitales)
El proceso que siga para obtener y configurar el certificado de servidor depende del tipo de certificadoque utilicev Si obtiene un certificado de una autoridad de confianza (como por ejemplo VeriSign Inc o RSA Data
Security Inc) instale el certificado en el sistema y a continuacioacuten apliacutequelo a los servidores de hostv Si opta por no utilizar un certificado de una autoridad de confianza puede construir su propio
certificado para ser utilizado en el sistema Construya el certificado mediante el Gestor de CertificadosDigitales1 Cree la autoridad certificadora en el sistema Consulte el tema correspondiente de Information
Center Actuar como CA propia
IBM Toolbox para Java 235
2 Cree un certificado del sistema a partir de la autoridad certificadora que ha creado3 Asigne queacute servidores de host van a utilizar el certificado del sistema que ha creado
Servicios de autenticacioacutenIBM Toolbox para Java proporciona clases que interactuacutean con los servicios de seguridad proporcionadospor IBM i
Concretamente se proporciona soporte para autenticar una identidad de usuario al que a veces se hacereferencia como principal y una contrasentildea en relacioacuten con el registro de usuarios de IBM i Entonces sepuede establecer una credencial que represente al usuario autenticado La credencial permite alterar laidentidad de la hebra de IBM i actual para que trabaje bajo las autorizaciones y los permisos del usuarioautenticado En efecto este intercambio de identidad hace que la hebra actuacutee como si el usuarioautenticado hubiese realizado un inicio de sesioacuten
Visioacuten general del soporte proporcionado
El objeto AS400 proporciona autenticacioacuten para un determinado perfil de usuario y su contrasentildea enrelacioacuten con el servidor Tambieacuten se pueden recuperar para el sistema tickets de kerberos y siacutembolos deperfil que representen perfiles de usuario y contrasentildeas autenticados
Nota para utilizar los tickets de kerberos debe configurarse la interfaz de programacioacuten de aplicacionesJava General Security Services (JGSS) Para obtener maacutes informacioacuten sobre JGSS consulte la
Documentacioacuten de seguridad de Java
Para utilizar los tickets de kerberos establezca uacutenicamente el nombre de sistema (y no la contrasentildea) enel objeto AS400 La identidad de usuario se recupera mediante la infraestructura de JGSS Solo puedeestablecer un meacutetodo de autenticacioacuten en un objeto AS400 a la vez Al establecer la contrasentildea se borranlos tickets de kerberos o los siacutembolos de perfil
Para utilizar los siacutembolos de perfil utilice los meacutetodos getProfileToken() para recuperar instancias de laclase ProfileTokenCredential El siacutembolo de perfil puede describirse como la representacioacuten de un perfilde usuario y una contrasentildea autenticados para un servidor especiacutefico Los siacutembolos de perfil caducan conel tiempo (duran como maacuteximo una hora) pero en algunos casos se pueden renovar para que su tiempode vida sea maacutes largo
Nota si utiliza la clase ProfileTokenCredential no olvide consultar la informacioacuten situada al final de estapaacutegina sobre los meacutetodos para establecer siacutembolos
El ejemplo siguiente crea un objeto sistema y utiliza ese objeto para generar un siacutembolo de perfil Acontinuacioacuten el ejemplo utiliza el siacutembolo de perfil para crear otro objeto sistema y emplea el segundoobjeto sistema para conectar con el servicio de mandatos
AS400 system = new AS400(mySystemName MYUSERID MYPASSWORD)ProfileTokenCredential myPT = systemgetProfileToken()AS400 system2 = new AS400(mySystemName myPT)system2connectService(AS400COMMAND)
Establecer identidades de hebra
Una credencial se puede establecer ya sea en un contexto remoto o en un contexto local Una vez creadase puede serializar o distribuir seguacuten lo requiera la aplicacioacuten llamadora Se puede utilizar unacredencial cuando se pasa a un proceso en ejecucioacuten en el servidor asociado para modificar ointercambiar (swap) la identidad de la hebra de IBM i y llevar a cabo tareas en nombre del usuariopreviamente autenticado
Una aplicacioacuten praacutectica de este soporte seriacutea en una aplicacioacuten de dos niveles en el primer nivel (porejemplo un PC) una interfaz graacutefica de usuario realizariacutea la autenticacioacuten de un perfil de usuario y una
236 IBM Toolbox para Java IBM Toolbox para Java
contrasentildea y en el segundo nivel (el servidor) se llevariacutea a cabo el trabajo de ese usuario Al utilizarcredenciales de siacutembolo de perfil (clases ProfileTokenCredential) la aplicacioacuten puede evitar el tener quepasar directamente los ID de usuario y las contrasentildeas a traveacutes de la red Entonces el siacutembolo de perfilse puede distribuir al programa del segundo nivel que puede realizar el intercambio swap() y operar bajolas autorizaciones y los permisos de IBM i asignados al usuario
Nota los siacutembolos de perfil son inherentemente maacutes seguros que pasar un perfil de usuario y unacontrasentildea debido a su tiempo de vida limitado sin embargo la aplicacioacuten auacuten los debe considerar comoinformacioacuten delicada y manejarlos como tal Debido a que el siacutembolo representa a un usuario autenticadoy su contrasentildea una aplicacioacuten hostil podriacutea aprovecharse de eacutel para trabajar en nombre de ese usuarioLa aplicacioacuten es en uacuteltima instancia la que debe encargarse de que el acceso a las credenciales se realicede manera segura
Meacutetodos para establecer siacutembolos de ProfileTokenCredential
Si desea emplear los meacutetodos para establecer siacutembolos de la clase ProfileTokenCredential debe distinguirentre los diferentes modos de especificar contrasentildeasv Como un valor especial como por ejemplo NOPWD o NOPWDCHK utilizando un entero de valor
especial definidov Como la contrasentildea del perfil de usuario utilizando una serie que representa la contrasentildea
Nota en la V5R3 IBM Toolbox para Java establece como obsoletos los meacutetodos setToken que no precisanla distincioacuten del modo de especificar la contrasentildea
Asimismo los meacutetodos setToken permiten a los usuarios remotos especificar valores especiales decontrasentildea y admiten contrasentildeas de perfil de usuario maacutes largas de hasta 128 caracteres
Para especificar un entero de valor especial de contrasentildea como por ejemplo NOPWD o NOPWDCHKutilice uno de los meacutetodos siguientesv setToken(AS400Principal principal int passwordSpecialValue)v setToken(String name int passwordSpecialValue)
La clase ProfileTokenCredential incluye las siguientes constantes estaacuteticas para los enteros de valorespecial de contrasentildeav ProfileTokenCredentialPW_NOPWD indica NOPWDv ProfileTokenCredentialPW_NOPWDCHK indica NOPWDCHK
Para especificar una contrasentildea de perfil de usuario como una serie emplee uno de los meacutetodossiguientesv setTokenExtended(AS400Principal principal String password)v setTokenExtended(String name String password)
Los meacutetodos setTokenExended no permiten pasar series de valor especial de contrasentildea como paraacutemetrode contrasentildea Por ejemplo estos meacutetodos no admiten la serie de contrasentildea NOPWD
Encontraraacute maacutes detalles en la informacioacuten de consulta del Javadoc ProfileTokenCredential
Ejemplo
En este coacutedigo encontraraacute un ejemplo de coacutemo se utiliza una credencial de siacutembolo de perfil paraintercambiar la identidad de la hebra de IBM i y llevar a cabo tareas en nombre de un determinadousuario
Javadoc AS400
IBM Toolbox para Java 237
Javadoc ProfileTokenCredential
Clases de servletsLas clases de servlets que se proporcionan con IBM Toolbox para Java funcionan con las clases de accesoque se encuentran en el servidor Web para ofrecerle acceso a la informacioacuten ubicada en el servidorUsted es quien decide de queacute manera va a utilizar las clases de servlets como ayuda para sus propiosproyectos de servlets
En el siguiente diagrama se ve coacutemo las clases de servlets funcionan entre el navegador el servidor Weby los datos de IBM i Un navegador se conecta al servidor Web que estaacute ejecutando el servlet Losarchivos jt400Servletjar y jt400jar residen en el servidor Web porque las clases de servlets utilizanalgunas de las clases de acceso para recuperar los datos y las clases HTML para presentar los datos Elservidor Web se conecta al servidor en el que estaacuten los datos
Figura 1 coacutemo funcionan los servlets
ldquoDescripcioacutenexhaustiva de la figura 1 coacutemo funcionan los servlets (rzahh585gif)rdquo
Nota el archivo jt400Servletjar incluye tanto las clases HTML como las clases de servlets Debe actualizarla CLASSPATH para que sentildeale a los dos archivos (jt400Servletjar y jt400jar) si desea utilizar las clasesde los paquetes comibmas400utilhtml y comibmas400utilservlet
Encontraraacute maacutes informacioacuten sobre los servlets en general en la seccioacuten Consulta o referencia
Descripcioacuten exhaustiva de la figura 1 coacutemo funcionan los servlets (rzahh585gif)que se encuentra en IBM Toolbox para Java clases de servlet
Esta figura muestra de forma general coacutemo funcionan los servlets
Descripcioacuten
La figura consta de los elementos siguientesv Una imagen situada a la izquierda de un PC con la etiqueta Navegador que representa una instancia
de un navegador que se ejecuta en un PCv Una imagen de un servidor IBM i a la derecha con la etiqueta Datos de IBM i que representa la
ubicacioacuten de los datos a los que desea que acceda el servletv Una imagen de un servidor IBM i en el medio (entre las otras dos imaacutegenes) con la etiqueta Servidor
Web que representa el servidor Web Varios elementos con etiqueta situados en la imagen del servidorWeb indican archivos o funciones que residen en el servidor Webndash Un oacutevalo verde (Servlet) que representa la ubicacioacuten del coacutedigo del servletndash Un ciacuterculo de color canela (jt400Servlet) que indica la ubicacioacuten del archivo jt400Servletjarndash Un ciacuterculo de color canela (jt400) que indica la ubicacioacuten del archivo jt400jar
238 IBM Toolbox para Java IBM Toolbox para Java
Nota el servidor Web no tiene que estar en un servidor IBM i pero puede estarlo e incluso puede serel mismo servidor que el indicado por la imagen Datos de IBM i
v Diversas liacuteneas que conectan las imaacutegenes entre siacute
Una liacutenea etiquetada con HTML conecta el navegador (la imagen de la izquierda) con un servlet (el oacutevaloverde) en el servidor Web (la imagen del medio) La liacutenea tiene la etiqueta HTML ya que habitualmentelos servlets utilizan HTML para servir datos al navegador
El servidor Web ejecuta dos archivos JAR de IBM Toolbox para Java (los ciacuterculos de color canela)jt400Servletjar y jt400jar Las clases de jt400Servletjar junto con las clases de jt400jar permiten alservidor Web ejecutar un servlet que conecta faacutecilmente con servidores que contienen datos de IBM i (laimagen de la derecha) La liacutenea con puntas de flecha en ambos extremos que conecta las dos imaacutegenesindica esta conexioacuten
Clases de autenticacioacutenDos clases del paquete de servlets llevan a cabo la autenticacioacuten de servlets AuthenticationServlet yAS400Servlet
Clase AuthenticationServlet
AuthenticationServlet es una implementacioacuten de HttpServlet que lleva a cabo la autenticacioacuten baacutesica deservlets Las subclases de AuthenticationServlet alteraraacuten temporalmente uno o varios de los meacutetodossiguientesv Altere temporalmente el meacutetodo validateAuthority() para realizar la autenticacioacuten (obligatorio)v Altere temporalmente el meacutetodo bypassAuthentication() para que la subclase autentique uacutenicamente
determinadas peticionesv Altere temporalmente el meacutetodo postValidation() para permitir el proceso adicional de la peticioacuten tras
la autenticacioacuten
La clase AuthenticationServlet proporciona meacutetodos que permiten llevar a cabo estas accionesv Inicializar el servletv Obtener el ID de usuario autenticadov Establecer un ID de usuario tras eludir la autenticacioacutenv Anotar excepciones y mensajes
Clase AS400Servlet
La clase AS400Servlet es una subclase abstracta de AuthenticationServlet que representa un servletHTML Puede utilizar una agrupacioacuten de conexiones para compartir conexiones y gestionar el nuacutemero deconexiones que un usuario de servlet puede tener con el servidor
La clase AS400Servlet proporciona meacutetodos que permiten llevar a cabo estas accionesv Validar la autoridad de usuario (alterando temporalmente el meacutetodo validateAuthority() de la clase
AuthenticationServlet)v Conectarse a un sistemav Obtener objetos de agrupacioacuten de conexiones de la agrupacioacuten y devolver objetos de agrupacioacuten de
conexiones a la agrupacioacutenv Cerrar una agrupacioacuten de conexionesv Obtener y establecer los coacutedigos head de documentos HTMLv Obtener y establecer los coacutedigos end de documentos HTML
Encontraraacute maacutes informacioacuten sobre los servlets en general en la seccioacuten Consulta o referencia
IBM Toolbox para Java 239
Javadoc AuthenticationServletJavadoc AS400Servlet
Clase RowDataLa clase RowData es una clase abstracta que proporciona una manera de describir una lista de datos yacceder a ella
Las clases RowData le permiten realizar estas tareasv Obtener y establecer la posicioacuten actualv Obtener los datos de fila situados en una columna dada utilizando el meacutetodo getObject()v Obtener los metadatos de la filav Obtener o establecer las propiedades de un objeto situado en una columna dadav Obtener el nuacutemero de filas de la lista mediante el meacutetodo length()
Posicioacuten de RowData
Hay varios meacutetodos que permiten obtener y establecer la posicioacuten actual dentro de una lista La tablasiguiente indica los meacutetodos para establecer y obtener correspondientes a las clases RowData
Meacutetodos para establecer Meacutetodos para obtener
absolute() next() getCurrentPosition()
afterLast() previous() isAfterLast()
beforeFirst() relative() isBeforeFirst()
first() isFirst()
last() isLast()
Informacioacuten relacionadaJavadoc RowData
Clase ListRowData
La clase ListRowData de IBM Toolbox para Java representa una lista de datos en formato de tabla En latabla cada fila contiene un nuacutemero finito de columnas determinado por el objeto ListMetaData y cadacolumna dentro de una fila contiene un elemento de datos individual Los datos pueden corresponder aun directorio del sistema de archivos integrado a una lista de trabajos a una lista de impresoras o a otrosdiversos datos
La clase ListRowData le permite llevar a cabo estas tareasv Antildeadir y eliminar filas de la lista de resultadosv Obtener y establecer la filav Obtener informacioacuten sobre las columnas de la lista con el meacutetodo getMetaData()v Establecer informacioacuten de columna con el meacutetodo setMetaData()
La clase ListRowData representa una lista de datos Mediante las clases de acceso de IBM Toolbox paraJava la clase ListRowData puede representar numerosos tipos de informacioacuten entre ellos los siguientesv Un directorio del sistema de archivos integradov Una lista de trabajosv Una lista de mensajes de una cola de mensajesv Una lista de usuariosv Una lista de impresoras
240 IBM Toolbox para Java IBM Toolbox para Java
Ejemplo
El ejemplo siguiente muestra coacutemo funcionan las clases ListRowData y HTMLTableConverter El ejemplomuestra el coacutedigo Java el coacutedigo HTML y el aspecto HTML
ldquoEjemplo coacutemo se utiliza ListRowDatardquo en la paacutegina 533Javadoc ListRowData
Clase RecordListRowData
La clase RecordListRowData de IBM Toolbox para Java permite realizar las siguientes accionesv Antildeadir y eliminar filas de la lista de registrosv Obtener y establecer la filav Establecer el formato de registro con el meacutetodo setRecordFormatv Obtener el formato de registro
La clase RecordListRowData representa una lista de registros Los registros se pueden obtener delservidor con distintos formatos tales comov Un registro que deba leerse de un archivo del servidor o escribirse en eacutelv Una entrada de una cola de datosv Los datos de paraacutemetro de una llamada a programav Los datos que se devuelvan y necesiten convertirse entre el formato del servidor y el formato Java
Este ejemplo muestra coacutemo funcionan las clases RecordListRowData y HTMLTableConverter Muestra elcoacutedigo Java el coacutedigo HTML y el aspecto HTMLInformacioacuten relacionadaJavadoc RecordListRowData
Clase ResourceListRowData
La clase ResourceListRowData de IBM Toolbox para Java representa una lista de recursos de datosUtilice objetos ResourceListRowData para representar cualquier implementacioacuten de la interfazResourceList
A las listas de recursos se les da el formato de una serie de filas y cada una de las filas contiene unnuacutemero finito de columnas que viene determinado por la cantidad de ID de atributo de columna Cadacolumna de una fila contiene un elemento de datos individual
La clase ResourceListRowData proporciona meacutetodos que permiten llevar a cabo las acciones siguientesv Obtener y establecer los ID de atributo de columnav Obtener y establecer la lista de recursosv Recuperar el nuacutemero de filas de la listav Obtener los datos de columna de la fila actualv Obtener la lista de propiedades del objeto de datosv gtObtener los metadatos de la lista
Ejemplo visualizar una lista de recursos en un servlet
Declaracioacuten de limitacioacuten de responsabilidad de ejemplos de coacutedigo
La siguiente declaracioacuten de limitacioacuten de responsabilidad es vaacutelida para todos los ejemplos de IBMToolbox para Java
IBM Toolbox para Java 241
IBM le concede una licencia de copyright no exclusiva de uso de todos los ejemplos de coacutedigo deprogramacioacuten a partir de los cuales puede generar funciones similares adaptadas a sus propiasnecesidades
IBM proporciona todo el coacutedigo de ejemplo solo a efectos ilustrativos Estos ejemplos no se hancomprobado de forma exhaustiva en todas las condiciones IBM por lo tanto no puede garantizarni dar por sentada la fiabilidad la utilidad ni el funcionamiento de estos programas
Todos los programas contenidos aquiacute se proporcionan TAL CUAL sin garantiacuteas de ninguacuten tipoLas garantiacuteas impliacutecitas de no incumplimiento comerciabilidad y adecuacioacuten para un findeterminado se especifican expliacutecitamente como declaraciones de limitacioacuten de responsabilidad
Informacioacuten relacionadaJavadoc ResourceListRowData
Clase QLResultSetRowData
La clase SQLResultSetRowData representa un conjunto de resultados de SQL en forma de lista de datosEstos datos los genera una sentencia SQL mediante JDBC Con los meacutetodos proporcionados puedeobtener y establecer los metadatos del conjunto de resultados
Este ejemplo muestra coacutemo funcionan las clases ListRowData y HTMLTableConverter Muestra el coacutedigoJava el coacutedigo HTML y el aspecto HTMLReferencia relacionadaldquoClases JDBCrdquo en la paacutegina 62JDBC es una interfaz de programas de aplicacioacuten (API) incluida en la plataforma Java que permite a losprogramas Java conectar con una gran variedad de bases de datosInformacioacuten relacionadaJavadoc SQLResultSetRowData
Clases RowMetaDataLa clase RowMetaData define una interfaz que se utiliza para obtener informacioacuten acerca de las columnasde un objeto RowData
Con las clases RowMetaData puede hacer estas tareasv Obtener el nuacutemero de columnasv Obtener el nombre tipo o tamantildeo de la columnav Obtener o establecer la etiqueta de columnav Obtener la precisioacuten o la escala de los datos de columnav Determinar si los datos de una columna son datos de textoInformacioacuten relacionadaJavadoc RowMetaData
Clase ListMetaData
La clase ListMetaData de IBM Toolbox para Java permite obtener informacioacuten acerca de las columnas deuna clase ListRowData y cambiar sus valores Utiliza el meacutetodo setColumns() para establecer el nuacutemerode columnas borrando la informacioacuten de columna que pudiera haber antes Alternativamente tambieacutenpuede usted pasar el nuacutemero de columnas cuando establezca los paraacutemetros del constructor
Ejemplo
El ejemplo siguiente muestra coacutemo funcionan las clases ListMetaData ListRowData yHTMLTableConverter Muestra el coacutedigo Java el coacutedigo HTML y el aspecto HTML
242 IBM Toolbox para Java IBM Toolbox para Java
ldquoEjemplo coacutemo se utiliza ListRowDatardquo en la paacutegina 533Javadoc ListMetaDataldquoClase ListRowDatardquo en la paacutegina 240La clase ListRowData de IBM Toolbox para Java representa una lista de datos en formato de tabla Enla tabla cada fila contiene un nuacutemero finito de columnas determinado por el objeto ListMetaData ycada columna dentro de una fila contiene un elemento de datos individual Los datos puedencorresponder a un directorio del sistema de archivos integrado a una lista de trabajos a una lista deimpresoras o a otros diversos datos
Clase RecordFormatMetaData
La clase RecordFormatMetaData utiliza la clase RecordFormat de IBM Toolbox para Java Le permiteproporcionar el formato de registro cuando establezca los paraacutemetros del constructor o bien utilizar losmeacutetodos get y set para acceder al formato de registro
El ejemplo siguiente muestra coacutemo se crea un objeto RecordFormatMetaData Cree un objeto RecordFormatMetaData a partir de un formato de registro de un archivo secuencialRecordFormat recordFormat = sequentialFilegetRecordFormat()RecordFormatMetaData metadata = new RecordFormatMetaData(recordFormat)
Visualice los nombres de las columnas del archivoint numberOfColumns = metadatagetColumnCount()for (int column=0 column lt numberOfColumns column++)
Systemoutprintln(metadatagetColumnName(column))
Informacioacuten relacionadaJavadoc RecordFormatMetaDataJavadoc RecordFormat
Clase SQLResultSetMetaData
La clase SQLResultSetMetaData devuelve informacioacuten acerca de las columnas de un objetoSQLResultSetRowData Puede proporcionar el conjunto de resultados cuando establezca los paraacutemetrosdel constructor o bien utilizar los meacutetodos get y set para acceder a los metadatos del conjunto deresultados
El ejemplo de coacutedigo siguiente muestra coacutemo se crea un objeto SQLResultSetMetaData Cree un objeto SQLResultSetMetaData a partir de los metadatos del conjunto de resultadosSQLResultSetRowData rowdata = new SQLResultSetRowData(resultSet)SQLResultSetMetaData sqlMetadata = rowdatagetMetaData()
Visualice la precisioacuten de las columnas que no sean de textoString name = nullint numberOfColumns = sqlMetadatagetColumnCount()for (int column=0 column lt numberOfColumns column++)
name = sqlMetadatagetColumnName(column)if (sqlMetadataisTextData(column))
Systemoutprintln(La columna + name + contiene datos de texto)else
Systemoutprintln(La columna + name + tiene una precisioacuten igual a +sqlMetadatagetPrecision(column))
Javadoc SQLResultSetMetaData
IBM Toolbox para Java 243