Show Menu
TEMAS×

Invocación de AEM Forms mediante la API de Java

Los formularios AEM se pueden invocar mediante la API Java de AEM Forms. Al utilizar la API de Java de AEM Forms, puede utilizar la API de invocación o las bibliotecas de cliente Java. Las bibliotecas de cliente Java están disponibles para servicios como el servicio Rights Management. Estas API con establecimiento inflexible de tipos permiten desarrollar aplicaciones Java que invocan AEM Forms.
La API de invocación son clases que se encuentran en el com.adobe.idp.dsc paquete. Con estas clases, puede enviar una solicitud de invocación directamente a un servicio y gestionar una respuesta de invocación que se devuelve. Utilice la API de invocación para invocar procesos de corta duración o de larga duración creados mediante Workbench.
La forma recomendada de invocar mediante programación un servicio es utilizar una biblioteca de cliente Java que corresponda al servicio en lugar de la API de invocación. Por ejemplo, para invocar el servicio Cifrado, utilice la biblioteca del cliente del servicio Cifrado. Para realizar una operación de servicio de cifrado, invoque un método que pertenece al objeto cliente del servicio de cifrado. Puede cifrar un documento PDF con una contraseña invocando el EncryptionServiceClient método encryptPDFUsingPassword del objeto.
La API de Java admite las siguientes funciones:
  • Protocolo de transporte RMI para invocación remota
  • Transporte de VM para invocación local
  • SOAP para invocación remota
  • Distinta autenticación, como nombre de usuario y contraseña
  • Solicitudes de invocación sincrónicas y asincrónicas
Sitio web de Adobe Developer
El sitio web de desarrolladores de Adobe contiene los siguientes artículos en los que se explica cómo invocar los servicios de AEM Forms mediante la API de Java:
Consulte también

Inclusión de archivos de biblioteca Java de AEM Forms

Para invocar mediante programación un servicio de AEM Forms mediante la API de Java, incluya los archivos de biblioteca necesarios (archivos JAR) en la ruta de clases del proyecto Java. Los archivos JAR que se incluyen en la ruta de clases de la aplicación cliente dependen de varios factores:
  • El servicio AEM Forms que se va a invocar. Una aplicación cliente puede invocar uno o más servicios.
  • Modo en el que desea invocar un servicio de AEM Forms. Puede utilizar el modo EJB o SOAP. (Consulte Configuración de propiedades de conexión).
(Solo llave en mano) Inicio el servidor de AEM Forms con el comando standalone.bat -b <Server IP> -c lc_turnkey.xml para especificar una IP de servidor para EJB
  • Servidor de aplicaciones J2EE en el que se implementa AEM Forms.

Archivos JAR específicos del servicio

La siguiente tabla lista los archivos JAR necesarios para invocar los servicios de AEM Forms.
Archivo
Descripción
Lugar de residencia
adobe-livecycle-client.jar
Siempre debe incluirse en la ruta de clases de una aplicación cliente Java.
< install directory >/sdk/client-libs/common
adobe-usermanager-client.jar
Siempre debe incluirse en la ruta de clases de una aplicación cliente Java.
< install directory >/sdk/client-libs/common
adobe-utilities.jar
Siempre debe incluirse en la ruta de clases de una aplicación cliente Java.
<directorio de instalación>/sdk//client-libs/<servidor de aplicaciones>
adobe-application-manager-client-sdk.jar
Necesario para invocar el servicio Application Manager.
< install directory >/sdk/client-libs/common
adobe-assembler-client.jar
Necesario para invocar el servicio Ensamblador.
< install directory >/sdk/client-libs/common
adobe-backup-restore-client-sdk.jar
Necesario para invocar la API de servicio de copia de seguridad y restauración.
< install directory >/sdk/client-libs/common
adobe-barcodedforms-client.jar
Necesario para invocar el servicio de formularios con códigos de barras.
< install directory >/sdk/client-libs/common
adobe-convertpdf-client.jar
Necesario para invocar el servicio Convertir PDF.
< install directory >/sdk/client-libs/common
adobe-distiller-client.jar
Necesario para invocar el servicio Distiller.
< install directory >/sdk/client-libs/common
adobe-docconverter-client.jar
Necesario para invocar el servicio DocConverter.
< install directory >/sdk/client-libs/common
adobe-contentservices-client.jar
Necesario para invocar el servicio de administración de Documentos.
< install directory >/sdk/client-libs/common
adobe-encoding-client.jar
Necesario para invocar el servicio de cifrado.
< install directory >/sdk/client-libs/common
adobe-forms-client.jar
Necesario para invocar el servicio Forms.
< install directory >/sdk/client-libs/common
adobe-formdataintegration-client.jar
Necesario para invocar el servicio de integración de datos de formulario.
< install directory >/sdk/client-libs/common
adobe-generatepdf-client.jar
Necesario para invocar el servicio Generar PDF.
< install directory >/sdk/client-libs/common
adobe-generate3dpdf-client.jar
Necesario para invocar el servicio Generar PDF 3D.
< install directory >/sdk/client-libs/common
adobe-jobmanager-client-sdk.jar
Necesario para invocar el servicio de Job Manager.
< install directory >/sdk/client-libs/common
adobe-output-client.jar
Necesario para invocar el servicio Output.
< install directory >/sdk/client-libs/common
adobe-pdfutility-client.jar
Necesario para invocar el servicio Utilidades de PDF o Utilidades XMP.
< install directory >/sdk/client-libs/common
adobe-reader-Extensions-client.jar
Necesario para invocar el servicio de extensiones de Acrobat Reader DC.
< install directory >/sdk/client-libs/common
adobe-repository-client.jar
commons-codec-1.3.jar
Necesario para invocar el servicio Repositorio.
< install directory >/sdk/client-libs/common
< install directory >/sdk/client-libs\thirdparty
  • adobe-rightsmanagement-client.jar
  • Área de nombres.jar
  • jaxb-api.jar
  • jaxb-impl.jar
  • jaxb-libs.jar
  • jaxb-xjc.jar
  • relajngDataType.jar
  • xsdlib.jar
Necesario para invocar el servicio Rights Management.
Si AEM Forms se implementa en JBoss, incluya todos estos archivos.
< install directory >/sdk/client-libs/common
Directorio de biblioteca específica de JBoss
adobe-signatures-client.jar
Necesario para invocar el servicio Signature.
< install directory >/sdk/client-libs/common
adobe-taskmanager-client-sdk.jar
Necesario para invocar el servicio Administrador de Tareas.
< install directory >/sdk/client-libs/common
adobe-trust-store-client.jar
Necesario para invocar el servicio de almacén de confianza.
< install directory >/sdk/client-libs/common

Modo de conexión y archivos JAR de la aplicación J2EE

La siguiente tabla lista los archivos JAR que dependen del modo de conexión y del servidor de aplicaciones J2EE en el que se implementa AEM Forms.
Archivo
Descripción
Lugar de residencia
  • activación.jar
  • axis.jar
  • commons-codec-1.3.jar
  • commons-collection-3.1.jar
  • commons-discover.jar
  • commons-logging.jar
  • dom3-xml-apis-2.5.0.jar
  • jaxen-1.1-beta-9.jar
  • jaxrpc.jar
  • log4j.jar
  • mail.jar
  • saaj.jar
  • wsdl4j.jar
  • xalan.jar
  • xbean.jar
  • xercesImpl.jar
  • commons-httpclient-3.1.jar
si se invoca AEM Forms mediante el modo SOAP, incluya estos archivos JAR.
< install directory >/sdk/client-libs/thirdparty
jpatrón-client.jar
si AEM Forms se implementa en JBoss Application Server, incluya este archivo JAR.
Las clases requeridas no serán encontradas por el cargador de clase si jpatrón-client.jar y las tarros a las que se hace referencia no están ubicadas de manera conjunta.
Directorio de biblioteca de cliente JBoss
Si implementa la aplicación cliente en el mismo servidor de aplicaciones J2EE, no es necesario incluir este archivo.
wlclient.jar
si AEM Forms se implementa en BEA WebLogic Server®, incluya este archivo JAR.
Directorio de bibliotecas específicas de WebLogic
Si implementa la aplicación cliente en el mismo servidor de aplicaciones J2EE, no es necesario incluir este archivo.
  • com.ibm.ws.admin.client_6.1.0.jar
  • com.ibm.ws.webservices.thinclient_6.1.0.jar
  • si AEM Forms se implementa en WebSphere Application Server, incluya estos archivos JAR.
  • (Se requiere com.ibm.ws.webservices.thinclient_6.1.0.jar para la invocación de servicio Web).
Directorio de biblioteca específico de WebSphere ( [WAS_HOME] /runtimes)
Si implementa la aplicación cliente en el mismo servidor de aplicaciones J2EE, no es necesario incluir estos archivos.

Invocación de escenarios

En la tabla siguiente se especifican los escenarios de invocación y se lista los archivos JAR necesarios para invocar correctamente los formularios AEM.
Servicios
Modo de invocación
Servidor de aplicaciones J2EE
Archivos JAR requeridos
Servicio de formularios
EJB
JBoss
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • jpatrón-client.jar
  • adobe-forms-client.jar
  • commons-httpclient-3.1.jar
Servicio de formularios
Servicio de extensiones de Acrobat Reader DC
Servicio de firmas
EJB
JBoss
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • jpatrón-client.jar
  • commons-httpclient-3.1.jar
  • adobe-forms-client.jar
  • adobe-reader-Extensions-client.jar
  • adobe-signatures-client.jar
Servicio de formularios
SOAP
WebLogic
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • wlclient.jar
  • activación.jar
  • axis.jar
  • commons-codec-1.3.jar
  • commons-collection-3.1.jar
  • commons-discover.jar
  • commons-logging.jar
  • dom3-xml-apis-2.5.0.jar
  • jai_imageio.jar
  • jaxen-1.1-beta-9.jar
  • jaxrpc.jar
  • log4j.jar
  • mail.jar
  • saaj.jar
  • wsdl4j.jar
  • xalan.jar
  • xbean.jar
  • xercesImpl.jar
  • adobe-forms-client.jar
Servicio de formularios
Servicio de extensiones de Acrobat Reader DC
Servicio de firmas
SOAP
WebLogic
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • wlclient.jar
  • activación.jar
  • axis.jar
  • commons-codec-1.3.jar
  • commons-collection-3.1.jar
  • commons-discover.jar
  • commons-logging.jar
  • dom3-xml-apis-2.5.0.jar
  • jai_imageio.jar
  • jaxen-1.1-beta-9.jar
  • jaxrpc.jar
  • log4j.jar
  • mail.jar
  • saaj.jar
  • wsdl4j.jar
  • xalan.jar
  • xbean.jar
  • xercesImpl.jar
  • adobe-forms-client.jar
  • adobe-reader-Extensions-client.jar
  • adobe-signatures-client.jar

Actualización de archivos JAR

Si va a actualizar de LiveCycle a AEM Forms, se recomienda incluir los archivos JAR de AEM Forms en la ruta de clases del proyecto Java. Por ejemplo, si está utilizando servicios como el servicio Rights Management, encontrará un problema de compatibilidad si no incluye archivos JAR de AEM Forms en la ruta de clases.
Suponiendo que está actualizando a AEM Forms. Para utilizar una aplicación Java que invoque el servicio Rights Management, incluya las versiones de AEM Forms de los siguientes archivos JAR:
  • adobe-rightsmanagement-client.jar
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
Consulte también

Configuración de las propiedades de conexión

Las propiedades de conexión se establecen para invocar AEM Forms al utilizar la API de Java. Al establecer las propiedades de conexión, especifique si desea invocar los servicios de forma remota o local, así como el modo de conexión y los valores de autenticación. Los valores de autenticación son obligatorios si la seguridad del servicio está habilitada. Sin embargo, si la seguridad del servicio está deshabilitada, no es necesario especificar los valores de autenticación.
El modo de conexión puede ser SOAP o EJB. El modo EJB utiliza el protocolo RMI/IIOP y el rendimiento del modo EJB es mejor que el del modo SOAP. El modo SOAP se utiliza para eliminar una dependencia del servidor de aplicaciones J2EE o cuando se encuentra un servidor de seguridad entre AEM Forms y la aplicación cliente. El modo SOAP utiliza el protocolo https como transporte subyacente y puede comunicarse a través de los límites del cortafuegos. Si no hay ningún problema con la dependencia del servidor de aplicaciones J2EE o con un servidor de seguridad, se recomienda utilizar el modo EJB.
Para invocar correctamente un servicio de AEM Forms, defina las siguientes propiedades de conexión:
  • DSC_DEFAULT_EJB_ENDPOINT: Si utiliza el modo de conexión EJB, este valor representa la URL del servidor de aplicaciones J2EE en el que se implementa AEM Forms. Para invocar AEM Forms de forma remota, especifique el nombre del servidor de aplicaciones J2EE en el que se implementa AEM Forms. Si la aplicación cliente se encuentra en el mismo servidor de aplicaciones J2EE, puede especificar localhost . En función de la implementación de AEM Forms en el servidor de aplicaciones J2EE, especifique uno de los siguientes valores:
    • JBoss: https://<ServerName>:8080 (default port)
    • WebSphere: iiop://<ServerName>:2809 (default port)
    • WebLogic: t3://<ServerName>:7001 (default port)
  • DSC_DEFAULT_SOAP_ENDPOINT : Si utiliza el modo de conexión SOAP, este valor representa el punto final al que se envía una solicitud de invocación. Para invocar AEM Forms de forma remota, especifique el nombre del servidor de aplicaciones J2EE en el que se implementa AEM Forms. Si la aplicación cliente se encuentra en el mismo servidor de aplicaciones J2EE, puede especificar localhost (por ejemplo, http://localhost:8080 .)
    • El valor del puerto 8080 es aplicable si la aplicación J2EE es JBoss. Si el servidor de aplicaciones J2EE es IBM® WebSphere®, utilice el puerto 9080 . Del mismo modo, si el servidor de aplicaciones J2EE es WebLogic, utilice el puerto 7001 . (Estos valores son valores de puerto predeterminados. Si cambia el valor del puerto, utilice el número de puerto correspondiente).
  • DSC_TRANSPORT_PROTOCOL : Si está utilizando el modo de conexión EJB, especifique ServiceClientFactoryProperties.DSC_EJB_PROTOCOL para este valor. Si está utilizando el modo de conexión SOAP, especifique ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL .
  • DSC_SERVER_TYPE : Especifica el servidor de aplicaciones J2EE en el que se implementa AEM Forms. Los valores válidos son JBoss , WebSphere , WebLogic .
    • Si establece esta propiedad de conexión en WebSphere , el java.naming.factory.initial valor se establece en com.ibm.ws.naming.util.WsnInitCtxFactory .
    • Si establece esta propiedad de conexión en WebLogic , el java.naming.factory.initial valor se establece en weblogic.jndi.WLInitialContextFactory .
    • Del mismo modo, si establece esta propiedad de conexión en JBoss , el java.naming.factory.initial valor se establece en org.jnp.interfaces.NamingContextFactory .
    • Puede establecer la java.naming.factory.initial propiedad en un valor que cumpla sus requisitos si no desea utilizar los valores predeterminados. * Nota : En lugar de utilizar una cadena para establecer la propiedad de DSC_SERVER_TYPE conexión, puede utilizar un miembro estático de la ServiceClientFactoryProperties clase. Se pueden utilizar los siguientes valores: ServiceClientFactoryProperties.DSC_WEBSPHERE_SERVER_TYPE , ServiceClientFactoryProperties.DSC_WEBLOGIC_SERVER_TYPE o ServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE .
  • DSC_CREDENTIAL_USERNAME: Especifica el nombre de usuario de los formularios AEM. Para que un usuario invoque correctamente un servicio de AEM Forms, necesita la función de usuario de servicios. Un usuario también puede tener otra función que incluya el permiso Invocar servicio. De lo contrario, se genera una excepción cuando intentan invocar un servicio. Si la seguridad del servicio está deshabilitada, no es necesario especificar esta propiedad de conexión.
  • DSC_CREDENTIAL_PASSWORD: Especifica el valor de contraseña correspondiente. Si la seguridad del servicio está deshabilitada, no es necesario especificar esta propiedad de conexión.
  • DSC_REQUEST_TIMEOUT: El límite de tiempo de espera de solicitud predeterminado para la solicitud SOAP es de 1200000 milisegundos (20 minutos). En ocasiones, una solicitud puede requerir más tiempo para completar la operación. Por ejemplo, una solicitud SOAP que recupera un gran conjunto de registros puede requerir un límite de tiempo de espera más largo. Puede usar el ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT para aumentar el límite de tiempo de espera de llamada de solicitud para las solicitudes SOAP.
    Nota : Solo las invocaciones basadas en SOAP admiten la propiedad DSC_REQUEST_TIMEOUT.
Para establecer las propiedades de conexión, realice las siguientes tareas:
  1. Cree un java.util.Properties objeto con su constructor.
  2. Para establecer la propiedad DSC_DEFAULT_EJB_ENDPOINT connection, invoque el java.util.Properties método setProperty del objeto y pase los valores siguientes:
    • El valor ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT de lista desglosada
    • Un valor de cadena que especifica la dirección URL del servidor de aplicaciones J2EE que aloja AEM Forms
    Si utiliza el modo de conexión SOAP, especifique el valor de ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT lista desglosada en lugar del valor de ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT lista desglosada.
  3. Para establecer la propiedad DSC_TRANSPORT_PROTOCOL connection, invoque el java.util.Properties método setProperty del objeto y pase los valores siguientes:
    • El valor ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL de lista desglosada
    • El valor ServiceClientFactoryProperties.DSC_EJB_PROTOCOL de lista desglosada
    Si utiliza el modo de conexión SOAP, especifique el valor de ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL lista desglosada en lugar del valor de ServiceClientFactoryProperties.DSC_EJB_PROTOCOL lista desglosada.
  4. Para establecer la propiedad DSC_SERVER_TYPE connection, invoque el java.util.Properties método setProperty del objeto y pase los valores siguientes:
    • El valor de ServiceClientFactoryProperties.DSC_SERVER_TYPE lista desglosada
    • Un valor de cadena que especifica el servidor de aplicaciones J2EE que aloja AEM Forms (por ejemplo, si AEM Forms se implementa en JBoss, especifique JBoss ).
      1. Para establecer la propiedad DSC_CREDENTIAL_USERNAME connection, invoque el java.util.Properties método setProperty del objeto y pase los valores siguientes:
    • El valor ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME de lista desglosada
    • Un valor de cadena que especifica el nombre de usuario necesario para invocar AEM Forms
      1. Para establecer la propiedad DSC_CREDENTIAL_PASSWORD connection, invoque el java.util.Properties método setProperty del objeto y pase los valores siguientes:
    • El valor ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD de lista desglosada
    • Un valor de cadena que especifica el valor de contraseña correspondiente
Configuración del modo de conexión EJB para JBoss
El siguiente ejemplo de código Java establece las propiedades de conexión para invocar los formularios AEM implementados en JBoss y mediante el modo de conexión EJB.
 Properties ConnectionProps = new Properties(); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "https://<hostname>:8080"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);           
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DOCUMENT_HTTP_ENDPOINT,"https://<hostname>:8080");

Configuración del modo de conexión EJB para WebLogic
El siguiente ejemplo de código Java establece las propiedades de conexión para invocar los formularios AEM implementados en WebLogic y mediante el modo de conexión EJB.
 Properties ConnectionProps = new Properties(); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "t3://localhost:7001"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);           
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "WebLogic"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");

Configuración del modo de conexión EJB para WebSphere
El siguiente ejemplo de código Java establece propiedades de conexión para invocar los formularios AEM implementados en WebSphere y mediante el modo de conexión EJB.
 Properties ConnectionProps = new Properties(); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "iiop://localhost:2809"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);           
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "WebSphere"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");

Configuración del modo de conexión SOAP
El siguiente ejemplo de código Java establece las propiedades de conexión en modo SOAP para invocar los formularios AEM implementados en JBoss.
 Properties ConnectionProps = new Properties(); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://localhost:8080"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");

Si selecciona el modo de conexión SOAP, asegúrese de incluir archivos JAR adicionales en la ruta de clases de la aplicación cliente.
Configuración de las propiedades de conexión cuando la seguridad del servicio está deshabilitada
El siguiente ejemplo de código Java establece las propiedades de conexión necesarias para invocar los formularios AEM implementados en el servidor de aplicaciones JBoss y cuando la seguridad del servicio está deshabilitada.
 Properties ConnectionProps = new Properties(); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://localhost:1099"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);           
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");

Todos los Inicios rápidos de Java asociados con la programación con AEM Forms muestran la configuración de conexión EJB y SOAP.
Configuración del modo de conexión SOAP con el límite de tiempo de espera de solicitud personalizado
 Properties ConnectionProps = new Properties(); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://localhost:8080"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
 ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT, "1800000"); // Request timeout limit 30 Minutes

Uso de un objeto de contexto para invocar AEM Forms
Puede utilizar un com.adobe.idp.Context objeto para invocar un servicio de AEM Forms con un usuario autenticado (el com.adobe.idp.Context objeto representa a un usuario autenticado). Al utilizar un com.adobe.idp.Context objeto, no es necesario establecer las propiedades DSC_CREDENTIAL_USERNAME o DSC_CREDENTIAL_PASSWORD . Puede obtener un com.adobe.idp.Context objeto al autenticar usuarios mediante el AuthenticationManagerServiceClient método authenticate del objeto.
El authenticate método devuelve un AuthResult objeto que contiene los resultados de la autenticación. Puede crear un com.adobe.idp.Context objeto invocando su constructor. A continuación, invoque el com.adobe.idp.Context método del initPrincipal objeto y pase el AuthResult objeto, como se muestra en el código siguiente:
 Context myCtx = new Context();  
 myCtx.initPrincipal(authResult);

En lugar de definir las propiedades DSC_CREDENTIAL_USERNAME o DSC_CREDENTIAL_PASSWORD , puede invocar el ServiceClientFactory método del setContext objeto y pasar el com.adobe.idp.Context objeto. Cuando utilice un usuario de formularios AEM para invocar un servicio, asegúrese de que tiene la función denominada Services User que se requiere para invocar un servicio de AEM Forms.
En el siguiente ejemplo de código se muestra cómo utilizar un com.adobe.idp.Context objeto dentro de la configuración de conexión que se utiliza para crear un EncryptionServiceClient objeto.
 //Authenticate a user and use the Context object within connection settings 
 // Authenticate the user 
 String username = "wblue"; 
 String password = "password"; 
 AuthResult authResult = authClient.authenticate(username, password.getBytes()); 
  
 //Set a Content object that represents the authenticated user 
 //Use the Context object to invoke the Encryption service 
 Context myCtx = new Context();  
 myCtx.initPrincipal(authResult); 
  
 //Set connection settings 
 Properties connectionProps = new Properties(); 
 connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://<server>:1099"); 
 connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL, ServiceClientFactoryProperties.DSC_EJB_PROTOCOL); 
 connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, ServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE); 
 connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DOCUMENT_HTTP_ENDPOINT,"jnp://<server>:1099");

                          
 //Create a ServiceClientFactory object 
 ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
 myFactory.setContext(myCtx); 
                          
 //Create an EncryptionServiceClient object 
 EncryptionServiceClient encryptClient  = new EncryptionServiceClient(myFactory);

Para obtener información detallada sobre la autenticación de un usuario, consulte Autenticar usuarios .

Invocación de escenarios

En esta sección se analizan los siguientes escenarios de invocación:
  • Una aplicación cliente que se ejecuta en su propia máquina virtual Java (JVM) invoca una instancia independiente de AEM Forms.
  • Una aplicación cliente que se ejecuta en su propio JVM invoca instancias de AEM Forms agrupadas.

Aplicación cliente que invoca una instancia independiente de AEM Forms

El diagrama siguiente muestra una aplicación cliente que se ejecuta en su propio JVM e invoca una instancia independiente de AEM Forms.
En este escenario, una aplicación cliente se ejecuta en su propio JVM e invoca los servicios de AEM Forms.
Este escenario es el escenario invocante en el que se basan todos los Inicios rápidos.

Aplicación cliente que invoca instancias de AEM Forms agrupadas

El diagrama siguiente muestra una aplicación cliente que se ejecuta en su propio JVM e invoca instancias de AEM Forms ubicadas en un clúster.
Este escenario es similar al de una aplicación cliente que invoca una instancia independiente de AEM Forms. Sin embargo, la dirección URL del proveedor es diferente. Si una aplicación cliente desea conectarse a un servidor de aplicaciones J2EE específico, la aplicación debe cambiar la URL para hacer referencia al servidor de aplicaciones J2EE específico.
No se recomienda hacer referencia a un servidor de aplicaciones J2EE específico porque la conexión entre la aplicación cliente y AEM Forms finaliza si se detiene el servidor de aplicaciones. Se recomienda que la dirección URL del proveedor haga referencia a un administrador JNDI de nivel de celda, en lugar de a un servidor de aplicaciones J2EE específico.
Las aplicaciones cliente que utilizan el modo de conexión SOAP pueden utilizar el puerto de equilibrador de carga HTTP para el clúster. Las aplicaciones cliente que utilizan el modo de conexión EJB pueden conectarse al puerto EJB de un servidor de aplicaciones J2EE específico. Esta acción controla el equilibrio de carga entre los nodos del clúster.
WebSphere
El siguiente ejemplo muestra el contenido de un archivo jndi.properties que se utiliza para conectarse a AEM Forms que se implementa en WebSphere.
 java.naming.factory.initial=com.ibm.websphere.naming. 
 WsnInitialContextFactory 
 java.naming.provider.url=corbaloc::appserver1:9810,:appserver2:9810

WebLogic
El siguiente ejemplo muestra el contenido de un archivo jndi.properties que se utiliza para conectarse a AEM Forms que se implementa en WebLogic.
 java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory 
 java.naming.provider.url=t3://appserver1:8001, appserver2:8001

JBoss
El siguiente ejemplo muestra el contenido de un archivo jndi.properties que se utiliza para conectarse a AEM Forms que se implementa en JBoss.
 java.naming.factory.initial= org.jnp.interfaces.NamingContextFactory 
 java.naming.provider.url= jnp://appserver1:1099, appserver2:1099, 
 appserver3:1099

Consulte con el administrador para determinar el nombre y el número de puerto del servidor de aplicaciones J2EE.
Consulte también

Pasar datos a los servicios de AEM Forms mediante la API de Java

Las operaciones de servicio de AEM Forms suelen consumir o producir documentos PDF. Al invocar un servicio, a veces es necesario pasar un documento PDF (u otros tipos de documentos como datos XML) al servicio. De igual modo, a veces es necesario gestionar un documento PDF que se devuelve desde el servicio. La clase Java que le permite pasar datos desde y hacia los servicios de AEM Forms es com.adobe.idp.Document .
Los servicios de AEM Forms no aceptan un documento PDF como otros tipos de datos, como un java.io.InputStream objeto o una matriz de bytes. Un com.adobe.idp.Document objeto también se puede utilizar para pasar otros tipos de datos, como datos XML, a servicios.
Un com.adobe.idp.Document objeto es un tipo serializable Java, por lo que se puede pasar a través de una llamada RMI. El lado receptor puede estar ubicado en el mismo lugar (el mismo host, el mismo cargador de clase), local (el mismo host, un cargador de clase diferente) o remoto (un host diferente). El paso del contenido de documento se optimiza para cada caso. Por ejemplo, si el remitente y el receptor están ubicados en el mismo host, el contenido se pasa a través de un sistema de archivos local. (En algunos casos, los documentos se pueden pasar en la memoria).
Según el tamaño del com.adobe.idp.Document objeto, los datos se transportan dentro del com.adobe.idp.Document objeto o se almacenan en el sistema de archivos del servidor. Cualquier recurso de almacenamiento temporal ocupado por el com.adobe.idp.Document objeto se elimina automáticamente al eliminarlo com.adobe.idp.Document . (Consulte Eliminación de objetos Documento).
A veces es necesario conocer el tipo de contenido de un com.adobe.idp.Document objeto para poder pasarlo a un servicio. Por ejemplo, si una operación requiere un tipo de contenido específico, como application/pdf , se recomienda que determine el tipo de contenido. (Consulte Determinación del tipo de contenido de un documento ).
El com.adobe.idp.Document objeto intenta determinar el tipo de contenido utilizando los datos suministrados. Si no se puede recuperar el tipo de contenido de los datos suministrados (por ejemplo, cuando los datos se suministraron como una matriz de bytes), defina el tipo de contenido. Para definir el tipo de contenido, invoque el com.adobe.idp.Document método setContentType del objeto. (Consulte Determinación del tipo de contenido de un documento )
Si los archivos colaterales residen en el mismo sistema de archivos, la creación de un com.adobe.idp.Document objeto es más rápida. Si los archivos colaterales residen en sistemas de archivos remotos, se debe realizar una operación de copia, lo que afecta al rendimiento.
Una aplicación puede contener tanto com.adobe.idp.Document como org.w3c.dom.Document tipos de datos. Sin embargo, asegúrese de que califica completamente el tipo de org.w3c.dom.Document datos. Para obtener información sobre la conversión de un org.w3c.dom.Document objeto a un com.adobe.idp.Document objeto, consulte Inicio rápido (modo EJB): Rellenado previo de formularios con diseños de posición variable mediante la API de Java.
Para evitar una pérdida de memoria en WebLogic mientras se utiliza un com.adobe.idp.Document objeto, lea la información de documento en fragmentos de 2048 bytes o menos. Por ejemplo, el siguiente código lee la información del documento en fragmentos de 2048 bytes:
        // Set up the chunk size to prevent a potential memory leak 
        int buffSize = 2048; 
  
        // Determine the total number of bytes to read 
        int docLength = (int) inDoc.length(); 
        byte [] byteDoc = new byte[docLength]; 
  
        // Set up the reading position 
        int pos = 0; 
  
        // Loop through the document information, 2048 bytes at a time 
        while (docLength > 0) { 
      // Read the next chunk of information 
            int toRead = Math.min(buffSize, docLength); 
            int bytesRead = inDoc.read(pos, byteDoc, pos, toRead); 
  
            // Handle the exception in case data retrieval failed 
            if (bytesRead == -1) { 
  
                inDoc.doneReading(); 
                inDoc.dispose(); 
                throw new RuntimeException("Data retrieval failed!"); 
  
            } 
  
             // Update the reading position and number of bytes remaining 
             pos += bytesRead; 
             docLength -= bytesRead; 
  
        } 
  
        // The document information has been successfully read 
        inDoc.doneReading(); 
        inDoc.dispose();

Consulte también

Creación de documentos

Cree un com.adobe.idp.Document objeto antes de invocar una operación de servicio que requiera un documento PDF (u otros tipos de documentos) como valor de entrada. La com.adobe.idp.Document clase proporciona constructores que permiten crear un documento a partir de los siguientes tipos de contenido:
  • Una matriz de bytes
  • Un objeto com.adobe.idp.Document existente
  • Un java.io.File objeto
  • Un java.io.InputStream objeto
  • Un java.net.URL objeto

Creación de un documento basado en una matriz de bytes

El siguiente ejemplo de código crea un com.adobe.idp.Document objeto basado en una matriz de bytes.
Creación de un objeto Documento basado en una matriz de bytes
 Document myPDFDocument = new Document(myByteArray);

Creación de un documento basado en otro documento

El siguiente ejemplo de código crea un com.adobe.idp.Document objeto basado en otro com.adobe.idp.Document objeto.
Creación de un objeto Documento basado en otro documento
 //Create a Document object based on a byte array 
 InputStream is = new FileInputStream("C:\\Map.pdf"); 
 int len = is.available(); 
 byte [] myByteArray = new byte[len]; 
 int i = 0; 
 while (i < len) { 
       i += is.read(myByteArray, i, len); 
 } 
 Document myPDFDocument = new Document(myByteArray); 
  
 //Create another Document object 
 Document anotherDocument = new Document(myPDFDocument);

Creación de un documento basado en un archivo

El siguiente ejemplo de código crea un com.adobe.idp.Document objeto basado en un archivo PDF denominado map.pdf . Este archivo se encuentra en la raíz del disco duro C. Este constructor intenta establecer el tipo de contenido MIME del com.adobe.idp.Document objeto mediante la extensión de nombre de archivo.
El com.adobe.idp.Document constructor que acepta un java.io.File objeto también acepta un parámetro booleano. Al establecer este parámetro en true , el com.adobe.idp.Document objeto elimina el archivo. Esta acción significa que no es necesario quitar el archivo después de pasarlo al constructor com.adobe.idp.Document .
Definir este parámetro como false significa que se mantiene la propiedad de este archivo. Definir este parámetro como true es más eficaz. El motivo es que el com.adobe.idp.Document objeto puede mover el archivo directamente al área administrada local en lugar de copiarlo (que es más lento).
Creación de un objeto Documento basado en un archivo PDF
 //Create a Document object based on the map.pdf source file 
 File mySourceMap = new File("C:\\map.pdf"); 
 Document myPDFDocument = new Document(mySourceMap,true);

Creación de un documento basado en un objeto InputStream

El siguiente ejemplo de código Java crea un com.adobe.idp.Document objeto basado en un java.io.InputStream objeto.
Creación de un documento basado en un objeto InputStream
 //Create a Document object based on an InputStream object 
 InputStream is = new FileInputStream("C:\\Map.pdf"); 
 Document myPDFDocument = new Document(is);

Creación de un documento basado en contenido accesible desde una dirección URL

El siguiente ejemplo de código Java crea un com.adobe.idp.Document objeto basado en un archivo PDF denominado map.pdf . Este archivo se encuentra dentro de una aplicación web denominada WebApp que se está ejecutando en localhost . Este constructor intenta establecer el tipo de contenido MIME del com.adobe.idp.Document objeto mediante el tipo de contenido devuelto con el protocolo URL.
La dirección URL proporcionada al com.adobe.idp.Document objeto siempre se lee en el lado en el que se crea el com.adobe.idp.Document objeto original, como se muestra en este ejemplo:
     Document doc = new Document(new java.net.URL("file:c:/temp/input.pdf"));

El archivo c:/temp/input.pdf debe estar ubicado en el equipo cliente (no en el equipo servidor). El equipo cliente es donde se lee la dirección URL y donde se creó el com.adobe.idp.Document objeto.
Creación de un documento basado en contenido accesible desde una dirección URL
 //Create a Document object based on a java.net.URL object 
 URL myURL = new URL("http", "localhost", 8080,"/WebApp/map.pdf");  
          
 //Create another Document object 
 Document myPDFDocument = new Document(myURL);

Consulte también

Gestión de documentos devueltos

Las operaciones de servicio que devuelven un documento PDF (u otros tipos de datos como datos XML) como valor de salida devuelven un com.adobe.idp.Document objeto. Después de recibir un com.adobe.idp.Document objeto, puede convertirlo a los siguientes formatos:
  • Un java.io.File objeto
  • Un java.io.InputStream objeto
  • Una matriz de bytes
La línea de código siguiente convierte un com.adobe.idp.Document objeto en un java.io.InputStream objeto. Supongamos que myPDFDocument representa un com.adobe.idp.Document objeto:
     java.io.InputStream resultStream = myDocument.getInputStream();

Del mismo modo, puede copiar el contenido de un archivo com.adobe.idp.Document a un archivo local realizando las siguientes tareas:
  1. Create a java.io.File object.
  2. Invoque el com.adobe.idp.Document método del copyToFile objeto y pase el java.io.File objeto.
El siguiente ejemplo de código copia el contenido de un com.adobe.idp.Document objeto en un archivo denominado AnotherMap.pdf .
Copia del contenido de un objeto de documento en un archivo
 File outFile = new File("C:\\AnotherMap.pdf"); 
 myDocument.copyToFile (outFile);

Consulte también

Determinación del tipo de contenido de un documento

Determine el tipo MIME de un com.adobe.idp.Document objeto invocando el com.adobe.idp.Document método getContentType del objeto. Este método devuelve un valor de cadena que especifica el tipo de contenido del com.adobe.idp.Document objeto. En la tabla siguiente se describen los distintos tipos de contenido que devuelve AEM Forms.
Tipo MIME
Descripción
application/pdf
documento PDF
application/vnd.adobe.xdp+xml
Paquete de datos XML (XDP), que se utiliza para los formularios exportados de la Arquitectura de formularios XML (XFA)
text/xml
Marcadores, archivos adjuntos u otros documentos XML
application/vnd.fdf
Formato de datos de formularios (FDF), que se utiliza para formularios exportados de Acrobat
application/vnd.adobe.xfdf
Formato de datos de formularios XML (XFDF), que se utiliza para los formularios exportados de Acrobat
application/rdf+xml
Formato de datos enriquecido y XML
application/octet-stream
Formato de datos genérico
NULL
Tipo MIME no especificado
El siguiente ejemplo de código determina el tipo de contenido de un com.adobe.idp.Document objeto.
Determinación del tipo de contenido de un objeto de Documento
 //Determine the content type of the Document object 
 String ct = myDocument.getContentType(); 
 System.out.println("The content type of the Document object is " +ct);

Consulte también

Eliminación de objetos de Documento

Cuando ya no necesite un Document objeto, se recomienda eliminarlo invocando su dispose método. Cada Document objeto consume un descriptor de archivo y hasta 75 MB de espacio de RAM en la plataforma host de la aplicación. Si un Document objeto no se elimina, el proceso de recopilación de Java Garage lo descarta. Sin embargo, al eliminarlo antes mediante el dispose método, puede liberar la memoria ocupada por el Document objeto.
Consulte también

Invocación de un servicio mediante una biblioteca de cliente Java

Las operaciones del servicio de AEM Forms se pueden invocar mediante la API con establecimiento inflexible de tipos de un servicio, conocida como biblioteca de clientes Java. Una biblioteca cliente Java es un conjunto de clases concretas que proporcionan acceso a los servicios implementados en el contenedor de servicios. Se crea una instancia de un objeto Java que representa el servicio que se va a invocar en lugar de crear un InvocationRequest objeto mediante la API de invocación. La API de invocación se utiliza para invocar procesos, como procesos de larga duración, creados en Workbench. (Consulte Invocación De Procesos Largos Centrados En El Hombre).
Para realizar una operación de servicio, invoque un método que pertenece al objeto Java. Una biblioteca de cliente Java contiene métodos que generalmente asignan uno a uno con las operaciones de servicio. Al utilizar una biblioteca de cliente Java, establezca las propiedades de conexión necesarias. (Consulte Configuración de propiedades de conexión).
Después de definir las propiedades de conexión, cree un ServiceClientFactory objeto que se utilice para crear una instancia de un objeto Java que le permita invocar un servicio. Cada servicio que tiene una biblioteca de cliente Java tiene un objeto de cliente correspondiente. Por ejemplo, para invocar el servicio Repositorio, cree un ResourceRepositoryClient objeto utilizando su constructor y pasando el ServiceClientFactory objeto. El ServiceClientFactory objeto es responsable de mantener la configuración de conexión necesaria para invocar los servicios de AEM Forms.
Aunque la obtención de una ServiceClientFactory es generalmente rápida, algunos gastos generales están relacionados cuando se utiliza la fábrica por primera vez. Este objeto está optimizado para su reutilización y, por lo tanto, cuando sea posible, utilice el mismo ServiceClientFactory objeto al crear varios objetos de cliente Java. Es decir, no cree un ServiceClientFactory objeto independiente para cada objeto de biblioteca de cliente que cree.
Existe una configuración del Administrador de usuarios que controla la duración de la afirmación SAML que se encuentra dentro del com.adobe.idp.Context objeto que afecta al ServiceClientFactory objeto. Esta configuración controla todas las duraciones del contexto de autenticación en todos los formularios AEM, incluidas todas las invocaciones realizadas mediante la API de Java. De forma predeterminada, el período de tiempo en el que se puede utilizar un ServiceCleintFactory objeto es de dos horas.
Para explicar cómo invocar un servicio mediante la API de Java, se invoca la writeResource operación del servicio Repositorio. Esta operación coloca un nuevo recurso en el repositorio.
Puede invocar el servicio Repositorio mediante una biblioteca de cliente Java y siguiendo los pasos siguientes:
  1. Incluya archivos JAR de cliente, como adobe-repository-client.jar, en la ruta de clases del proyecto Java. Para obtener información sobre la ubicación de estos archivos, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
  2. Establezca las propiedades de conexión necesarias para invocar un servicio.
  3. Cree un ServiceClientFactory objeto invocando el ServiceClientFactory método estático del createInstance objeto y pasando el java.util.Properties objeto que contiene propiedades de conexión.
  4. Cree un ResourceRepositoryClient objeto utilizando su constructor y pasando el ServiceClientFactory objeto. Utilice el ResourceRepositoryClient objeto para invocar operaciones del servicio Repositorio.
  5. Cree un RepositoryInfomodelFactoryBean objeto mediante su constructor y pase null . Este objeto permite crear un Resource objeto que representa el contenido que se agrega al repositorio.
  6. Cree un Resource objeto invocando el RepositoryInfomodelFactoryBean método newImage del objeto y pasando los siguientes valores:
    • Un valor de ID exclusivo especificando new Id() .
    • Un valor UUID único especificando new Lid() .
    • Nombre del recurso. Puede especificar el nombre de archivo del archivo XDP. Convierta el valor devuelto a Resource .
  7. Cree un ResourceContent objeto invocando el RepositoryInfomodelFactoryBean método newImage del objeto y convirtiendo el valor devuelto en ResourceContent . Este objeto representa el contenido que se agrega al repositorio.
  8. Cree un com.adobe.idp.Document objeto pasando un java.io.FileInputStream objeto que almacene el archivo XDP para agregarlo al repositorio. (Consulte Creación de un documento basado en un objeto InputStream).
  9. Añada el contenido del com.adobe.idp.Document objeto al ResourceContent objeto invocando el ResourceContent método setDataDocument del objeto. Pase el com.adobe.idp.Document objeto.
  10. Configure el tipo MIME del archivo XDP para agregarlo al repositorio invocando el ResourceContent método del setMimeType objeto y pasando application/vnd.adobe.xdp+xml .
  11. Añada el contenido del ResourceContent objeto al Resource objeto invocando el Resource método s setContent del objeto y pasando el ResourceContent objeto.
  12. Añada una descripción del recurso invocando el Resource método s setDescription del objeto y pasando un valor de cadena que represente una descripción del recurso.
  13. Añada el diseño de formulario en el repositorio invocando el ResourceRepositoryClient método writeResource del objeto y pasando los valores siguientes:
    • Un valor de cadena que especifica la ruta a la colección de recursos que contiene el nuevo recurso
    • El Resource objeto que se creó
Consulte también

Invocación de un proceso de corta duración mediante la API de invocación

Puede invocar un proceso de corta duración mediante la API de invocación de Java. Cuando se invoca un proceso de corta duración mediante la API de invocación, se pasan los valores de parámetro requeridos mediante un java.util.HashMap objeto. Para que cada parámetro pase a un servicio, invoque el java.util.HashMap método del put objeto y especifique el par nombre-valor que requiere el servicio para realizar la operación especificada. Especifique el nombre exacto de los parámetros que pertenecen al proceso de corta duración.
Para obtener información sobre cómo invocar un proceso de larga duración, consulte Invocación de procesos de larga duración centrados en el ser humano.
El análisis aquí trata sobre el uso de la API de invocación para invocar el siguiente proceso breve de AEM Forms denominado MyApplication/EncryptDocument .
Este proceso no se basa en un proceso de AEM Forms existente. Para seguir el ejemplo de código, cree un proceso denominado MyApplication/EncryptDocument mediante Workbench. (Consulte Uso de Workbench .)
Cuando se invoca este proceso, realiza las siguientes acciones:
  1. Obtiene el documento PDF no seguro que se pasa al proceso. Esta acción se basa en la SetValue operación. El parámetro de entrada para este proceso es una variable de document proceso denominada inDoc .
  2. Codifica el documento PDF con una contraseña. Esta acción se basa en la PasswordEncryptPDF operación. El documento PDF cifrado con contraseña se devuelve en una variable de proceso denominada outDoc .

Invocar el proceso breve de MyApplication/EncryptDocument mediante la API de invocación de Java

Invoque el MyApplication/EncryptDocument proceso de corta duración mediante la API de invocación de Java:
  1. Incluya archivos JAR de cliente, como adobe-livecycle-client.jar, en la ruta de clases del proyecto Java. (Consulte Inclusión de archivos de biblioteca Java de AEM Forms).
  2. Cree un ServiceClientFactory objeto que contenga propiedades de conexión. (Consulte Configuración de propiedades de conexión).
  3. Cree un ServiceClient objeto utilizando su constructor y pasando el ServiceClientFactory objeto. Un ServiceClient objeto permite invocar una operación de servicio. Gestiona tareas como la localización, el envío y las solicitudes de invocación de enrutamiento.
  4. Cree un java.util.HashMap objeto con su constructor.
  5. Invocar el java.util.HashMap método del put objeto para que cada parámetro de entrada pase al proceso de larga duración. Dado que el proceso de corta duración MyApplication/EncryptDocument requiere un parámetro de entrada de tipo Document , sólo tiene que invocar el put método una vez, como se muestra en el siguiente ejemplo.
     //Create a Map object to store the parameter value for inDoc 
     Map params = new HashMap(); 
     InputStream inFile = new FileInputStream("C:\\Adobe\Loan.pdf"); 
     Document inDoc = new Document(inFile); 
     params.put("inDoc", inDoc);
    
    
  6. Cree un InvocationRequest objeto invocando el método del ServiceClientFactory objeto y pasando createInvocationRequest los siguientes valores:
    • Un valor de cadena que especifica el nombre del proceso de larga duración que se va a invocar. Para invocar el MyApplication/EncryptDocument proceso, especifique MyApplication/EncryptDocument .
    • Un valor de cadena que representa el nombre de la operación de proceso. Normalmente, el nombre de una operación de proceso de corta duración es invoke .
    • El java.util.HashMap objeto que contiene los valores de parámetro que requiere la operación de servicio.
    • Un valor booleano que especifica true , que crea una solicitud sincrónica (este valor se aplica para invocar un proceso de corta duración).
  7. Envíe la solicitud de invocación al servicio invocando el ServiceClient método del invoke objeto y pasando el InvocationRequest objeto. El invoke método devuelve un InvocationReponse objeto.
    Se puede invocar un proceso de larga duración pasando el valor false como el cuarto parámetro del createInvocationRequest método. Al pasar el valor, false se crea una solicitud asincrónica.
  8. Recupere el valor devuelto por el proceso invocando el InvocationReponse método getOutputParameter del objeto y pasando un valor de cadena que especifica el nombre del parámetro de salida. En este caso, especifique outDoc ( outDoc es el nombre del parámetro de salida para el MyApplication/EncryptDocument proceso). Convierta el valor devuelto a Document , como se muestra en el siguiente ejemplo.
     InvocationResponse response = myServiceClient.invoke(request); 
     Document encryptDoc = (Document) response.getOutputParameter("outDoc");
    
    
  9. Cree un java.io.File objeto y asegúrese de que la extensión del archivo sea .pdf.
  10. Invocar el com.adobe.idp.Document método del copyToFile objeto para copiar el contenido del com.adobe.idp.Document objeto en el archivo. Asegúrese de utilizar el com.adobe.idp.Document objeto devuelto por el getOutputParameter método .
Consulte también