AEM Forms può essere invocato utilizzando l'API Java AEM Forms. Quando utilizzate l'API Java di AEM Forms , potete utilizzare l'API di vocazione o le librerie client Java. Le librerie client Java sono disponibili per servizi come il servizio di Rights Management. Queste API fortemente tipizzate consentono di sviluppare applicazioni Java che richiamano AEM Forms.
L'API Invocation è una classe che si trova nel pacchetto com.adobe.idp.dsc
. Utilizzando queste classi, potete inviare una richiesta di chiamata direttamente a un servizio e gestire una risposta di chiamata restituita. Utilizzare l'API Invocation per richiamare i processi di breve durata o di lunga durata creati utilizzando Workbench.
Il metodo consigliato per richiamare un servizio a livello di programmazione consiste nell'utilizzare una libreria client Java corrispondente al servizio anziché l'API di vocazione. Ad esempio, per richiamare il servizio di cifratura, utilizzate la libreria client del servizio di cifratura. Per eseguire un'operazione del servizio di cifratura, richiamare un metodo che appartiene all'oggetto client del servizio di cifratura. È possibile cifrare un documento PDF con una password richiamando il metodo EncryptionServiceClient
dell'oggetto encryptPDFUsingPassword
.
L'API Java supporta le seguenti funzionalità:
Sito Web Adobe per sviluppatori
Il sito Web Adobe Developer contiene i seguenti articoli che discutono della chiamata servizi AEM Forms mediante l'API Java:
Utilizzo di servlet Java per richiamare processi AEM Forms
Richiamo dell'API Distiller di da Java
Consulta anche
Inclusione file libreria Java AEM Forms
Richiamo di processi a lunga durata basati sull'uomo
Chiamata AEM Forms tramite servizi Web
Impostazione delle proprietà di connessione
Trasmissione di dati a servizi AEM Forms tramite Java API
Chiamata di un servizio tramite una libreria client Java
Richiamo di un processo di breve durata tramite l'API di incitamento
Creazione di un'applicazione Web Java che richiama un processo longevo incentrato sull'uomo
Per richiamare un servizio AEM Forms a livello di programmazione utilizzando l'API Java, includete i file libreria richiesti (file JAR) nel percorso di classe del progetto Java. I file JAR inclusi nel percorso di classe dell'applicazione client dipendono da diversi fattori:
(Solo chiavi in mano) Avviare il server AEM Forms con il comando standalone.bat -b <Server IP> -c lc_turnkey.xml
per specificare un IP server per EJB.
Nella tabella seguente sono elencati i file JAR necessari per richiamare servizi AEM Forms.
File |
Descrizione |
Dove si trova |
---|---|---|
adobe-livecycle-client.jar |
Deve essere sempre incluso nel percorso di classe di un'applicazione client Java. |
<>install directory>/sdk/client-libs/common |
adobe-usermanager-client.jar |
Deve essere sempre incluso nel percorso di classe di un'applicazione client Java. |
<>install directory>/sdk/client-libs/common |
adobe-utilities.jar |
Deve essere sempre incluso nel percorso di classe di un'applicazione client Java. |
<>install directory>/sdk//client-libs/<app server=""> |
adobe-applicationmanager-client-sdk.jar |
Obbligatorio per richiamare il servizio Application Manager. |
<>install directory>/sdk/client-libs/common |
adobe-assembler-client.jar |
Obbligatorio per richiamare il servizio Assembler. |
<>install directory>/sdk/client-libs/common |
adobe-backup-restore-client-sdk.jar |
Richiesto per richiamare l'API del servizio Backup e ripristino. |
<>install directory>/sdk/client-libs/common |
adobe-barcodedforms-client.jar |
Obbligatorio per richiamare il servizio moduli con codice a barre. |
<>install directory>/sdk/client-libs/common |
adobe-convertpdf-client.jar |
Obbligatorio per richiamare il servizio Converti PDF. |
<>install directory>/sdk/client-libs/common |
adobe-distiller-client.jar |
Obbligatorio per richiamare il servizio Distiller. |
<>install directory>/sdk/client-libs/common |
adobe-docconverter-client.jar |
Obbligatorio per richiamare il servizio DocConverter. |
<>install directory>/sdk/client-libs/common |
adobe-contentservices-client.jar |
Obbligatorio per richiamare il servizio Document Management. |
<>install directory>/sdk/client-libs/common |
adobe-encryption-client.jar |
Richiesto per richiamare il servizio di cifratura. |
<>install directory>/sdk/client-libs/common |
adobe-forms-client.jar |
Obbligatorio per richiamare il servizio Forms. |
<>install directory>/sdk/client-libs/common |
adobe-formdataintegration-client.jar |
Richiesto per richiamare il servizio di integrazione dei dati del modulo. |
<>install directory>/sdk/client-libs/common |
adobe-generatepdf-client.jar |
Richiesto per richiamare il servizio Generate PDF. |
<>install directory>/sdk/client-libs/common |
adobe-generate3dpdf-client.jar |
Richiesto per richiamare il servizio Genera PDF 3D. |
<>install directory>/sdk/client-libs/common |
adobe-jobmanager-client-sdk.jar |
Obbligatorio per richiamare il servizio Job Manager. |
<>install directory>/sdk/client-libs/common |
adobe-output-client.jar |
Obbligatorio per richiamare il servizio Output. |
<>install directory>/sdk/client-libs/common |
adobe-pdfutility-client.jar |
Obbligatorio per richiamare il servizio Utilità PDF o Utilità XMP. |
<>install directory>/sdk/client-libs/common |
adobe-reader-extensions-client.jar |
Obbligatorio per richiamare il servizio di estensione Acrobat Reader DC. |
<>install directory>/sdk/client-libs/common |
adobe-repository-client.jar commons-codec-1.3.jar |
Obbligatorio per richiamare il servizio Repository. |
<>install directory>/sdk/client-libs/common <>install directory>/sdk/client-libs\thirdparty |
|
Obbligatorio per richiamare il servizio Rights Management. Se AEM Forms è distribuito su JBoss, includete tutti questi file. |
<>install directory>/sdk/client-libs/common Directory lib specifica per JBoss |
adobe-signatures-client.jar |
Obbligatorio per richiamare il servizio Signature. |
<>install directory>/sdk/client-libs/common |
adobe-taskmanager-client-sdk.jar |
Richiesto per richiamare il servizio Task Manager. |
<>install directory>/sdk/client-libs/common |
adobe-truststore-client.jar |
Obbligatorio per richiamare il servizio Archivio attendibili. |
<>install directory>/sdk/client-libs/common |
Nella tabella seguente sono elencati i file JAR che dipendono dalla modalità di connessione e dal server applicazione J2EE su cui AEM Forms è distribuito.
File |
Descrizione |
Dove si trova |
---|---|---|
|
se AEM Forms viene richiamato utilizzando la modalità SOAP, includete questi file JAR. |
<>install directory>/sdk/client-libs/third-party |
jboss-client.jar |
se AEM Forms è distribuito su JBoss Application Server, includete questo file JAR. Le classi obbligatorie non vengono trovate dal caricatore di classe se jboss-client.jar e le barre di riferimento non sono co-posizionate. |
Directory lib client JBoss Se distribuite l’applicazione client sullo stesso server applicazione J2EE, non è necessario includere questo file. |
wlclient.jar |
se AEM Forms è distribuito su BEA WebLogic Server®, includete questo file JAR. |
Directory lib specifica per WebLogic Se distribuite l’applicazione client sullo stesso server applicazione J2EE, non è necessario includere questo file. |
|
|
Directory lib specifica per WebSphere ([WAS_HOME]/runtime) Se distribuite l’applicazione client sullo stesso server applicazione J2EE, non è necessario includere tali file. |
La tabella seguente specifica gli scenari di chiamata ed elenca i file JAR richiesti per richiamare AEM Forms.
Servizi |
Modalità di incitamento |
Server applicazioni J2EE |
File JAR richiesti |
---|---|---|---|
servizio Forms |
EJB |
JBoss |
|
servizio Forms Servizio estensioni Acrobat Reader DC Servizio Firma |
EJB |
JBoss |
|
servizio Forms |
SOAP |
WebLogic |
|
servizio Forms Servizio estensioni Acrobat Reader DC Servizio Firma |
SOAP |
WebLogic |
|
Se state effettuando l'aggiornamento da LiveCycle a AEM Forms, si consiglia di includere i file AEM Forms JAR nel percorso di classe del progetto Java. Ad esempio, se utilizzate servizi come il servizio di Rights Management, si verificherà un problema di compatibilità se non includete file AEM Forms JAR nel percorso di classe.
Presupponendo che si stia effettuando l'aggiornamento a AEM Forms. Per utilizzare un'applicazione Java che richiama il servizio di Rights Management, includete le versioni AEM Forms dei seguenti file JAR:
Consulta anche
Chiamata AEM Forms tramite l'API Java
Impostazione delle proprietà di connessione
Trasmissione di dati a servizi AEM Forms tramite Java API
Chiamata di un servizio tramite una libreria client Java
Le proprietà di connessione vengono impostate per richiamare AEM Forms quando si utilizza l'API Java. Quando si impostano le proprietà di connessione, specificare se richiamare i servizi in remoto o in locale, nonché la modalità di connessione e i valori di autenticazione. I valori di autenticazione sono obbligatori se è abilitata la protezione del servizio. Tuttavia, se la protezione del servizio è disabilitata, non è necessario specificare i valori di autenticazione.
La modalità di connessione può essere SOAP o EJB. La modalità EJB utilizza il protocollo RMI/IIOP e le prestazioni della modalità EJB sono migliori delle prestazioni della modalità SOAP. La modalità SOAP viene utilizzata per eliminare una dipendenza del server applicazione J2EE o quando si trova un firewall tra AEM Forms e l'applicazione client. La modalità SOAP utilizza il protocollo https come trasporto sottostante e può comunicare attraverso i confini del firewall. Se non esiste una dipendenza da un server applicazione J2EE o un firewall, si consiglia di utilizzare la modalità EJB.
Per richiamare un servizio AEM Forms , impostate le seguenti proprietà di connessione:
DSC_DEFAULT_EJB_ENDPOINT: Se utilizzate la modalità di connessione EJB, questo valore rappresenta l'URL del server applicazione J2EE su cui AEM Forms è distribuito. Per richiamare AEM Forms in remoto, specificate il nome del server applicazione J2EE sul quale 'AEM Forms è distribuito. Se l'applicazione client si trova sullo stesso server applicazione J2EE, è possibile specificare localhost
. A seconda del server applicazioni J2EE AEM Forms è distribuito, specificate uno dei seguenti valori:
https://<ServerName>:8080 (default port)
iiop://<ServerName>:2809 (default port)
t3://<ServerName>:7001 (default port)
DSC_DEFAULT_SOAP_ENDPOINT: Se si utilizza la modalità di connessione SOAP, questo valore rappresenta l'endpoint a cui viene inviata una richiesta di chiamata. Per richiamare AEM Forms in remoto, specificate il nome del server applicazione J2EE sul quale 'AEM Forms è distribuito. Se l'applicazione client si trova sullo stesso server applicazione J2EE, è possibile specificare localhost
(ad esempio, http://localhost:8080
).
8080
è applicabile se l'applicazione J2EE è JBoss. Se il server applicazioni J2EE è IBM® WebSphere®, utilizzare la porta 9080
. Analogamente, se il server applicazione J2EE è WebLogic, utilizzare la porta 7001
. (Questi valori sono valori di porta predefiniti. Se modificate il valore della porta, utilizzate il numero di porta applicabile.DSC_TRANSPORT_PROTOCOL: Se si utilizza la modalità di connessione EJB, specificare ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
per questo valore. Se si utilizza la modalità di connessione SOAP, specificare ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
.
DSC_SERVER_TYPE: Specifica il server applicazioni J2EE su cui AEM Forms è distribuito. I valori validi sono JBoss
, WebSphere
, WebLogic
.
WebSphere
, il valore java.naming.factory.initial
è impostato su com.ibm.ws.naming.util.WsnInitCtxFactory
.WebLogic
, il valore java.naming.factory.initial
è impostato su weblogic.jndi.WLInitialContextFactory
.JBoss
, il valore java.naming.factory.initial
viene impostato su org.jnp.interfaces.NamingContextFactory
.java.naming.factory.initial
su un valore che soddisfa i requisiti dell'utente.Invece di utilizzare una stringa per impostare la proprietà di connessione DSC_SERVER_TYPE
, è possibile utilizzare un membro statico della classe ServiceClientFactoryProperties
. È possibile utilizzare i seguenti valori: ServiceClientFactoryProperties.DSC_WEBSPHERE_SERVER_TYPE
, ServiceClientFactoryProperties.DSC_WEBLOGIC_SERVER_TYPE
o ServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE
.
DSC_CREDENTIAL_USERNAME: specifica il nome utente del modulo AEM. Affinché un utente possa richiamare correttamente un servizio AEM Forms , deve avere il ruolo Utente servizi. Un utente può anche avere un altro ruolo che include l'autorizzazione Richiamo assistenza. In caso contrario, viene generata un'eccezione quando tentano di richiamare un servizio. Se la protezione del servizio è disabilitata, non è necessario specificare questa proprietà di connessione.
DSC_CREDENTIAL_PASSWORD: specifica il valore della password corrispondente. Se la protezione del servizio è disabilitata, non è necessario specificare questa proprietà di connessione.
DSC_REQUEST_TIMEOUT: il limite di timeout della richiesta predefinita per la richiesta SOAP è di 1200000 millisecondi (20 minuti). A volte, una richiesta può richiedere più tempo per completare l'operazione. Ad esempio, una richiesta SOAP che recupera un insieme di record di grandi dimensioni può richiedere un limite di timeout più lungo. È possibile utilizzare ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT
per aumentare il limite di timeout delle chiamate per le richieste SOAP.
Solo le chiamate basate su SOAP supportano la proprietà DSC_REQUEST_TIMEOUT.
Per impostare le proprietà di connessione, eseguire le operazioni seguenti:
Creare un oggetto java.util.Properties
utilizzando il relativo costruttore.
Per impostare la proprietà di connessione DSC_DEFAULT_EJB_ENDPOINT
, richiamare il metodo java.util.Properties
dell'oggetto setProperty
e passare i seguenti valori:
ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
Se si utilizza la modalità di connessione SOAP, specificare il valore di enumerazione ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT
invece del valore di enumerazione ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
.
Per impostare la proprietà di connessione DSC_TRANSPORT_PROTOCOL
, richiamare il metodo java.util.Properties
dell'oggetto setProperty
e passare i seguenti valori:
ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL
ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
Se si utilizza la modalità di connessione SOAP, specificare il valore di enumerazione ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
invece del valore di enumerazione ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
.
Per impostare la proprietà di connessione DSC_SERVER_TYPE
, richiamare il metodo java.util.Properties
dell'oggetto setProperty
e passare i seguenti valori:
Il valore di enumerazione ServiceClientFactoryProperties.DSC_SERVER_TYPE
Un valore di stringa che specifica il server applicazione J2EE che ospita AEM Forms (ad esempio, se AEM Forms è distribuito su JBoss, specificare JBoss
).
DSC_CREDENTIAL_USERNAME
, richiamare il metodo java.util.Properties
dell'oggetto setProperty
e passare i seguenti valori:Il valore di enumerazione ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME
Una stringa che specifica il nome utente richiesto per richiamare AEM Forms
DSC_CREDENTIAL_PASSWORD
, richiamare il metodo java.util.Properties
dell'oggetto setProperty
e passare i seguenti valori:Il valore di enumerazione ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD
Valore stringa che specifica il valore della password corrispondente
Impostazione della modalità di connessione EJB per JBoss
L'esempio di codice Java seguente imposta le proprietà di connessione per richiamare AEM Forms distribuito su JBoss e utilizzare la modalità di connessione 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");
Impostazione della modalità di connessione EJB per WebLogic
L'esempio di codice Java seguente imposta le proprietà di connessione per richiamare AEM Forms distribuito su WebLogic e utilizzare la modalità di connessione 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");
Impostazione della modalità di connessione EJB per WebSphere
L'esempio di codice Java seguente imposta le proprietà di connessione per richiamare AEM Forms distribuito su WebSphere e utilizzare la modalità di connessione 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");
Impostazione della modalità di connessione SOAP
L'esempio di codice Java seguente imposta le proprietà di connessione in modalità SOAP per richiamare AEM Forms distribuito su 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");
Se selezionate la modalità di connessione SOAP, accertatevi di includere ulteriori file JAR nel percorso di classe dell'applicazione client.
Impostazione delle proprietà di connessione quando la protezione del servizio è disabilitata
L'esempio di codice Java seguente imposta le proprietà di connessione necessarie per richiamare AEM Forms distribuito su JBoss Application Server e quando la protezione del servizio è disabilitata.
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");
Tutti gli avvii rapidi Java associati alla programmazione con AEM Forms mostrano le impostazioni di connessione EJB e SOAP.
Impostazione della modalità di connessione SOAP con il limite di timeout della richiesta personalizzata
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
Utilizzo di un oggetto Context per richiamare AEM Forms
È possibile utilizzare un oggetto com.adobe.idp.Context
per richiamare un servizio AEM Forms con un utente autenticato (l'oggetto com.adobe.idp.Context
rappresenta un utente autenticato). Quando si utilizza un oggetto com.adobe.idp.Context
, non è necessario impostare le proprietà DSC_CREDENTIAL_USERNAME
o DSC_CREDENTIAL_PASSWORD
. È possibile ottenere un oggetto com.adobe.idp.Context
durante l'autenticazione degli utenti utilizzando il metodo AuthenticationManagerServiceClient
dell'oggetto authenticate
.
Il metodo authenticate
restituisce un oggetto AuthResult
che contiene i risultati dell'autenticazione. È possibile creare un oggetto com.adobe.idp.Context
richiamandone il costruttore. Quindi, richiamare il metodo com.adobe.idp.Context
dell'oggetto initPrincipal
e passare l'oggetto AuthResult
, come illustrato nel codice seguente:
Context myCtx = new Context();
myCtx.initPrincipal(authResult);
Anziché impostare le proprietà DSC_CREDENTIAL_USERNAME
o DSC_CREDENTIAL_PASSWORD
, è possibile richiamare il metodo ServiceClientFactory
dell'oggetto setContext
e passare l'oggetto com.adobe.idp.Context
. Quando si utilizza un utente di moduli AEM per richiamare un servizio, assicurarsi di avere il ruolo Services User
richiesto per richiamare un servizio AEM Forms .
L'esempio di codice seguente mostra come utilizzare un oggetto com.adobe.idp.Context
all'interno delle impostazioni di connessione, utilizzato per creare un oggetto EncryptionServiceClient
.
//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);
Per informazioni complete sull'autenticazione di un utente, vedere Autenticazione di utenti.
In questa sezione vengono descritti i seguenti scenari di richiamo:
Il diagramma seguente mostra un'applicazione client in esecuzione nella propria JVM e che richiama un'istanza autonoma AEM Forms.
In questo scenario, un'applicazione client è in esecuzione in una propria JVM e richiama servizi AEM Forms.
Questo scenario è lo scenario di richiamo su cui si basano tutti gli avvii rapidi.
Il diagramma seguente mostra un'applicazione client in esecuzione nella propria JVM e che richiama istanze AEM Forms presenti in un cluster.
Questo scenario è simile a quello di un'applicazione client che richiama un'istanza autonoma AEM Forms. Tuttavia, l'URL del fornitore è diverso. Se un'applicazione client desidera connettersi a un server applicazione J2EE specifico, l'applicazione deve modificare l'URL per fare riferimento al server applicazione J2EE specifico.
Non è consigliabile fare riferimento a uno specifico server applicazione J2EE perché la connessione tra l'applicazione client e AEM Forms viene terminata se il server applicazioni si arresta. È consigliabile che l'URL del provider faccia riferimento a un gestore JNDI a livello di cella, invece di un server applicazione J2EE specifico.
Le applicazioni client che utilizzano la modalità di connessione SOAP possono utilizzare la porta di bilanciamento del carico HTTP per il cluster. Le applicazioni client che utilizzano la modalità di connessione EJB possono connettersi alla porta EJB di un server applicazione J2EE specifico. Questa azione gestisce il bilanciamento del carico tra i nodi del cluster.
WebSphere
L'esempio seguente mostra il contenuto di un file jndi.properties utilizzato per connettersi a AEM Forms distribuito su WebSphere.
java.naming.factory.initial=com.ibm.websphere.naming.
WsnInitialContextFactory
java.naming.provider.url=corbaloc::appserver1:9810,:appserver2:9810
WebLogic
L'esempio seguente mostra il contenuto di un file jndi.properties utilizzato per connettersi a AEM Forms distribuito su WebLogic.
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://appserver1:8001, appserver2:8001
JBoss
L'esempio seguente mostra il contenuto di un file jndi.properties utilizzato per connettersi a AEM Forms distribuito su JBoss.
java.naming.factory.initial= org.jnp.interfaces.NamingContextFactory
java.naming.provider.url= jnp://appserver1:1099, appserver2:1099,
appserver3:1099
Consultate l’amministratore per determinare il nome del server applicazione J2EE e il numero di porta.
Consulta anche
Inclusione file libreria Java AEM Forms
Trasmissione di dati a servizi AEM Forms tramite Java API
Chiamata di un servizio tramite una libreria client Java
le operazioni del servizio AEM Forms in genere consumano o producono documenti PDF. Quando si richiama un servizio, talvolta è necessario trasmettere al servizio un documento PDF (o altri tipi di documento, come i dati XML). Analogamente, talvolta è necessario gestire un documento PDF restituito dal servizio. La classe Java che consente di trasmettere dati a e da servizi AEM Forms è com.adobe.idp.Document
.
servizi AEM Forms non accettano un documento PDF come altri tipi di dati, ad esempio un oggetto java.io.InputStream
o un array di byte. Un oggetto com.adobe.idp.Document
può essere utilizzato anche per trasmettere ai servizi altri tipi di dati, come i dati XML.
Un oggetto com.adobe.idp.Document
è un tipo serializzabile Java e può quindi essere trasmesso su una chiamata RMI. Il lato ricevente può essere collocato (stesso host, stesso loader di classe), locale (stesso host, diverso loader di classe) o remoto (host diverso). La trasmissione del contenuto del documento è ottimizzata per ogni caso. Ad esempio, se il mittente e il destinatario si trovano sullo stesso host, il contenuto viene trasmesso su un file system locale. In alcuni casi, i documenti possono essere passati in memoria.
A seconda delle dimensioni dell'oggetto com.adobe.idp.Document
, i dati vengono memorizzati all'interno dell'oggetto com.adobe.idp.Document
o nel file system del server. Tutte le risorse di memorizzazione temporanea occupate dall'oggetto com.adobe.idp.Document
vengono rimosse automaticamente al momento dello smaltimento com.adobe.idp.Document
. (Vedere Eliminazione di oggetti documento.)
A volte è necessario conoscere il tipo di contenuto di un oggetto com.adobe.idp.Document
prima di trasmetterlo a un servizio. Ad esempio, se un'operazione richiede un tipo di contenuto specifico, come application/pdf
, è consigliabile determinare il tipo di contenuto. (Vedere Definizione del tipo di contenuto di un documento.)
L'oggetto com.adobe.idp.Document
tenta di determinare il tipo di contenuto utilizzando i dati forniti. Se il tipo di contenuto non può essere recuperato dai dati forniti (ad esempio, quando i dati sono stati forniti come array di byte), impostare il tipo di contenuto. Per impostare il tipo di contenuto, richiamare il metodo com.adobe.idp.Document
dell'oggetto setContentType
. (Vedere Definizione del tipo di contenuto di un documento)
Se i file collaterali risiedono sullo stesso file system, la creazione di un oggetto com.adobe.idp.Document
è più rapida. Se i file collaterali risiedono su file system remoti, è necessario eseguire un'operazione di copia, che influisce sulle prestazioni.
Un'applicazione può contenere sia tipi di dati com.adobe.idp.Document
che org.w3c.dom.Document
. Tuttavia, accertati di qualificare completamente il tipo di dati org.w3c.dom.Document
. Per informazioni sulla conversione di un oggetto org.w3c.dom.Document
in un oggetto com.adobe.idp.Document
, vedere Avvio rapido (modalità EJB): Precompilazione di Forms con layout scorrevoli mediante l'API Java.
Per evitare una perdita di memoria in WebLogic durante l'utilizzo di un oggetto com.adobe.idp.Document
, leggere le informazioni del documento in blocchi di almeno 2048 byte. Ad esempio, il codice seguente legge le informazioni del documento in blocchi di 2048 byte:
// 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();
Consulta anche
Chiamata AEM Forms tramite l'API Java
Impostazione delle proprietà di connessione
Creare un oggetto com.adobe.idp.Document
prima di richiamare un'operazione di servizio che richiede un documento PDF (o altri tipi di documento) come valore di input. La classe com.adobe.idp.Document
fornisce costruttori che consentono di creare un documento dai seguenti tipi di contenuto:
com.adobe.idp.Document
esistentejava.io.File
java.io.InputStream
java.net.URL
Nell'esempio di codice seguente viene creato un oggetto com.adobe.idp.Document
basato su un array di byte.
Creazione di un oggetto Document basato su un array di byte
Document myPDFDocument = new Document(myByteArray);
Nell'esempio di codice seguente viene creato un oggetto com.adobe.idp.Document
basato su un altro oggetto com.adobe.idp.Document
.
Creazione di un oggetto Document basato su un altro 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);
Nell'esempio di codice seguente viene creato un oggetto com.adobe.idp.Document
basato su un file PDF denominato map.pdf. Questo file si trova nella radice del disco rigido C. Questo costruttore tenta di impostare il tipo di contenuto MIME dell'oggetto com.adobe.idp.Document
utilizzando l'estensione del nome file.
Il costruttore com.adobe.idp.Document
che accetta un oggetto java.io.File
accetta anche un parametro booleano. Impostando questo parametro su true
, l'oggetto com.adobe.idp.Document
elimina il file. Questo significa che non è necessario rimuovere il file dopo averlo passato al costruttore com.adobe.idp.Document
.
Impostando questo parametro su false
si mantiene la proprietà del file. L'impostazione di questo parametro su true
è più efficiente. Il motivo è che l'oggetto com.adobe.idp.Document
può spostare il file direttamente nell'area gestita locale invece di copiarlo (il che è più lento).
Creazione di un oggetto Document basato su un file 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);
Nell'esempio di codice Java riportato di seguito viene creato un oggetto com.adobe.idp.Document
basato su un oggetto java.io.InputStream
.
Creazione di un documento basato su un oggetto InputStream
//Create a Document object based on an InputStream object
InputStream is = new FileInputStream("C:\\Map.pdf");
Document myPDFDocument = new Document(is);
Nell'esempio di codice Java riportato di seguito viene creato un oggetto com.adobe.idp.Document
basato su un file PDF denominato map.pdf. Questo file si trova all'interno di un'applicazione Web denominata WebApp
in esecuzione su localhost
. Questo costruttore tenta di impostare il tipo di contenuto MIME dell'oggetto com.adobe.idp.Document
utilizzando il tipo di contenuto restituito con il protocollo URL.
L'URL fornito all'oggetto com.adobe.idp.Document
viene sempre letto sul lato in cui viene creato l'oggetto com.adobe.idp.Document
originale, come illustrato nell'esempio seguente:
Document doc = new Document(new java.net.URL("file:c:/temp/input.pdf"));
Il file c:/temp/input.pdf deve trovarsi sul computer client (non sul computer server). Nel computer client viene letto l'URL e viene creato l'oggetto com.adobe.idp.Document
.
Creazione di un documento basato su contenuto accessibile da un 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);
Consulta anche
Chiamata AEM Forms tramite l'API Java
Impostazione delle proprietà di connessione
Le operazioni di servizio che restituiscono un documento PDF (o altri tipi di dati come i dati XML) come valore di output restituiscono un oggetto com.adobe.idp.Document
. Dopo aver ricevuto un oggetto com.adobe.idp.Document
, è possibile convertirlo nei seguenti formati:
java.io.File
java.io.InputStream
La riga di codice seguente converte un oggetto com.adobe.idp.Document
in un oggetto java.io.InputStream
. Si supponga che myPDFDocument
rappresenti un oggetto com.adobe.idp.Document
:
java.io.InputStream resultStream = myDocument.getInputStream();
Allo stesso modo, potete copiare il contenuto di un com.adobe.idp.Document
in un file locale eseguendo le seguenti operazioni:
java.io.File
.com.adobe.idp.Document
dell'oggetto copyToFile
e passare l'oggetto java.io.File
.Nell'esempio di codice seguente il contenuto di un oggetto com.adobe.idp.Document
viene copiato in un file denominato OtherMap.pdf.
Copia del contenuto di un oggetto documento in un file
File outFile = new File("C:\\AnotherMap.pdf");
myDocument.copyToFile (outFile);
Consulta anche
Chiamata AEM Forms tramite l'API Java
Impostazione delle proprietà di connessione
Determinare il tipo MIME di un oggetto com.adobe.idp.Document
richiamando il metodo com.adobe.idp.Document
dell'oggetto getContentType
. Questo metodo restituisce un valore di stringa che specifica il tipo di contenuto dell'oggetto com.adobe.idp.Document
. La tabella seguente descrive i diversi tipi di contenuto restituiti da AEM Forms .
Tipo MIME |
Descrizione |
---|---|
|
documento PDF |
|
XML Data Packaging (XDP), utilizzato per i moduli XFA (XML Forms Architecture) esportati |
|
Segnalibri, allegati o altri documenti XML |
|
Forms Data Format (FDF), utilizzato per i moduli Acrobat esportati |
|
XML Forms Data Format (XFDF), utilizzato per i moduli Acrobat esportati |
|
Formato dati RTF e XML |
|
Formato dati generico |
|
Tipo MIME non specificato |
L'esempio di codice seguente determina il tipo di contenuto di un oggetto com.adobe.idp.Document
.
Determinazione del tipo di contenuto di un oggetto Document
//Determine the content type of the Document object
String ct = myDocument.getContentType();
System.out.println("The content type of the Document object is " +ct);
Consulta anche
Chiamata AEM Forms tramite l'API Java
Impostazione delle proprietà di connessione
Se non è più necessario un oggetto Document
, è consigliabile eliminarlo richiamandone il metodo dispose
. Ogni oggetto Document
utilizza un descrittore di file e fino a 75 MB di spazio RAM sulla piattaforma host dell'applicazione. Se un oggetto Document
non viene eliminato, il processo di raccolta Java Garage lo dispone. Tuttavia, prima di procedere con lo smaltimento utilizzando il metodo dispose
, è possibile liberare la memoria occupata dall'oggetto Document
.
Consulta anche
Chiamata AEM Forms tramite l'API Java
Inclusione file libreria Java AEM Forms
Chiamata di un servizio tramite una libreria client Java
le operazioni del servizio AEM Forms possono essere invocate utilizzando l'API fortemente tipizzata di un servizio, nota come libreria client Java. Una libreria client Java è un insieme di classi concrete che forniscono l'accesso ai servizi distribuiti nel contenitore di servizi. È possibile creare un'istanza di un oggetto Java che rappresenta il servizio da richiamare invece di creare un oggetto InvocationRequest
utilizzando l'API Invocation. L'API Invocation viene utilizzata per richiamare i processi, ad esempio quelli di lunga durata, creati in Workbench. (Vedere Richiamo di processi a lunga durata basati sull'uomo.)
Per eseguire un'operazione di servizio, richiamare un metodo che appartiene all'oggetto Java. Una libreria client Java contiene metodi che in genere associano uno a uno con le operazioni del servizio. Quando utilizzate una libreria client Java, impostate le proprietà di connessione richieste. (Vedere Impostazione delle proprietà di connessione.)
Dopo aver impostato le proprietà di connessione, creare un oggetto ServiceClientFactory
utilizzato per creare un'istanza di un oggetto Java che consente di richiamare un servizio. Ogni servizio con una libreria client Java ha un oggetto client corrispondente. Ad esempio, per richiamare il servizio Repository, creare un oggetto ResourceRepositoryClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
. L'oggetto ServiceClientFactory
è responsabile della gestione delle impostazioni di connessione necessarie per richiamare servizi AEM Forms.
Anche se ottenere un ServiceClientFactory
è in genere veloce, alcuni sovraccarichi sono coinvolti quando la fabbrica viene utilizzata per la prima volta. Questo oggetto è ottimizzato per il riutilizzo e quindi, quando possibile, utilizza lo stesso oggetto ServiceClientFactory
quando si creano più oggetti client Java. Ovvero, non creare un oggetto ServiceClientFactory
separato per ciascun oggetto libreria client creato.
È presente un'impostazione di User Manager che controlla la durata dell'asserzione SAML all'interno dell'oggetto com.adobe.idp.Context
che interessa l'oggetto ServiceClientFactory
. Questa impostazione controlla tutti i tempi di vita del contesto di autenticazione in AEM Forms, incluse tutte le chiamate eseguite utilizzando l'API Java. Per impostazione predefinita, il periodo di tempo in cui è possibile utilizzare un oggetto ServiceCleintFactory
è di due ore.
Per spiegare come richiamare un servizio utilizzando l'API Java, viene richiamata l'operazione writeResource
del servizio Repository. Questa operazione consente di inserire una nuova risorsa nella directory archivio.
È possibile richiamare il servizio Repository utilizzando una libreria client Java ed eseguendo i seguenti passaggi:
Includete file JAR client, ad esempio adobe-repository-client.jar, nel percorso di classe del progetto Java. Per informazioni sulla posizione di questi file, vedere Inclusione file libreria Java AEM Forms.
Impostare le proprietà di connessione necessarie per richiamare un servizio.
Creare un oggetto ServiceClientFactory
richiamando il metodo ServiceClientFactory
statico dell'oggetto createInstance
e passando l'oggetto java.util.Properties
che contiene le proprietà di connessione.
Creare un oggetto ResourceRepositoryClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
. Utilizzare l'oggetto ResourceRepositoryClient
per richiamare le operazioni del servizio Repository.
Creare un oggetto RepositoryInfomodelFactoryBean
utilizzando il relativo costruttore e passare null
. Questo oggetto consente di creare un oggetto Resource
che rappresenta il contenuto aggiunto alla directory archivio.
Creare un oggetto Resource
richiamando il metodo RepositoryInfomodelFactoryBean
dell'oggetto newImage
e passando i seguenti valori:
new Id()
.new Lid()
.Inserite il valore restituito in Resource
.
Creare un oggetto ResourceContent
richiamando il metodo RepositoryInfomodelFactoryBean
dell'oggetto newImage
e collocando il valore restituito su ResourceContent
. Questo oggetto rappresenta il contenuto aggiunto alla directory archivio.
Creare un oggetto com.adobe.idp.Document
passando un oggetto java.io.FileInputStream
che memorizza il file XDP da aggiungere alla directory archivio. Vedere Creazione di un documento basato su un oggetto InputStream.
Aggiungete il contenuto dell'oggetto com.adobe.idp.Document
all'oggetto ResourceContent
richiamando il metodo ResourceContent
dell'oggetto setDataDocument
. Passa l'oggetto com.adobe.idp.Document
.
Impostare il tipo MIME del file XDP da aggiungere all'archivio richiamando il metodo ResourceContent
dell'oggetto setMimeType
e passando application/vnd.adobe.xdp+xml
.
Aggiungete il contenuto dell'oggetto ResourceContent
all'oggetto Resource
richiamando il metodo Resource
object ‘s setContent
e passando l'oggetto ResourceContent
.
Aggiungete una descrizione della risorsa richiamando l'oggetto Resource
‘s setDescription
e passando un valore di stringa che rappresenta una descrizione della risorsa.
Aggiungere la struttura del modulo all'archivio richiamando il metodo writeResource
dell'oggetto ResourceRepositoryClient
e passando i valori seguenti:
Resource
creatoConsulta anche
Avvio rapido (modalità EJB): Creazione di una risorsa tramite l'API Java
Chiamata AEM Forms tramite l'API Java
Inclusione file libreria Java AEM Forms
Potete richiamare un processo di breve durata utilizzando l'API Java Invocation. Quando si richiama un processo di breve durata utilizzando l'API di vocazione, i valori dei parametri richiesti vengono passati utilizzando un oggetto java.util.HashMap
. Per ogni parametro da passare a un servizio, richiamare il metodo put
dell'oggetto java.util.HashMap
e specificare la coppia nome-valore richiesta dal servizio per eseguire l'operazione specificata. Specificate il nome esatto dei parametri che appartengono al processo di breve durata.
Per informazioni su come richiamare un processo di lunga durata, vedere Richiamo di processi longevi incentrati sull'uomo.
La discussione qui riguarda l'utilizzo di Invocation API per invocare il seguente processo di breve durata AEM Forms denominato MyApplication/EncryptDocument
.
Questo processo non è basato su un processo AEM Forms esistente. Per seguire l'esempio di codice, creare un processo denominato MyApplication/EncryptDocument
utilizzando Workbench. (Vedere Uso di Workbench.)
Quando viene richiamato, questo processo esegue le azioni seguenti:
SetValue
. Il parametro di input per questo processo è una variabile di processo document
denominata inDoc
.PasswordEncryptPDF
. Il documento PDF crittografato con password viene restituito in una variabile di processo denominata outDoc
.Richiamate il processo di breve durata MyApplication/EncryptDocument
utilizzando l'API di chiamata Java:
Includete file JAR client, ad esempio adobe-livecycle-client.jar, nel percorso di classe del progetto Java. (Vedere Inclusione file libreria Java AEM Forms.)
Creare un oggetto ServiceClientFactory
che contiene le proprietà di connessione. (Vedere Impostazione delle proprietà di connessione.)
Creare un oggetto ServiceClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
. Un oggetto ServiceClient
consente di richiamare un'operazione di servizio. Gestisce attività quali l'individuazione, l'invio e il routing delle richieste di chiamata.
Creare un oggetto java.util.HashMap
utilizzando il relativo costruttore.
Richiamare il metodo java.util.HashMap
dell'oggetto put
affinché ogni parametro di input passi al processo longevo. Poiché il processo MyApplication/EncryptDocument
di breve durata richiede un parametro di input di tipo Document
, è necessario richiamare il metodo put
solo una volta, come illustrato nell'esempio seguente.
//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);
Creare un oggetto InvocationRequest
richiamando il metodo ServiceClientFactory
dell'oggetto createInvocationRequest
e passando i seguenti valori:
MyApplication/EncryptDocument
, specificare MyApplication/EncryptDocument
.invoke
.java.util.HashMap
che contiene i valori dei parametri richiesti dall'operazione del servizio.true
, che crea una richiesta sincrona (questo valore è applicabile per richiamare un processo di breve durata).Inviare la richiesta di chiamata al servizio richiamando il metodo invoke
dell'oggetto InvocationRequest
e passando l'oggetto ServiceClient
. Il metodo invoke
restituisce un oggetto InvocationReponse
.
Un processo di lunga durata può essere invocato trasmettendo il valore false
come quarto parametro del metodo createInvocationRequest
. Passando il valore false
viene creata una richiesta asincrona.
Recuperare il valore restituito dal processo richiamando il metodo getOutputParameter
dell'oggetto InvocationReponse
e passando un valore di stringa che specifica il nome del parametro di output. In questa situazione, specificare outDoc
( outDoc
è il nome del parametro di output per il processo MyApplication/EncryptDocument
). Inserite il valore restituito in Document
, come illustrato nell'esempio seguente.
InvocationResponse response = myServiceClient.invoke(request);
Document encryptDoc = (Document) response.getOutputParameter("outDoc");
Create un oggetto java.io.File
e accertatevi che l'estensione del file sia .pdf.
Richiamare il metodo com.adobe.idp.Document
dell'oggetto copyToFile
per copiare nel file il contenuto dell'oggetto com.adobe.idp.Document
. Assicurarsi di utilizzare l'oggetto com.adobe.idp.Document
restituito dal metodo getOutputParameter
.
Consulta anche
Avvio rapido: Richiamo di un processo di breve durata tramite l'API di incitamento