AEM Forms mit der JavaAPI aufrufen invoking-aem-forms-using-the-javaapi
AEM Forms kann mithilfe der AEM Forms Java-API aufgerufen werden. Bei Verwendung der AEM Forms Java-API können Sie entweder die Aufruf-API oder die Java-Client-Bibliotheken verwenden. Java-Client-Bibliotheken sind für Dienste wie den Rights Management-Dienst verfügbar. Mit diesen stark typisierten APIs können Sie Java-Anwendungen entwickeln, die AEM Forms aufrufen.
Die Aufruf-API sind Klassen, die sich im Paket com.adobe.idp.dsc
befinden. Mithilfe dieser Klassen können Sie eine Aufrufanforderung direkt an einen Dienst senden und eine zurückgegebene Aufrufantwort verarbeiten. Verwenden Sie die Aufruf-API, um kurzlebige oder langlebige Prozesse aufzurufen, die mithilfe von Workbench erstellt wurden.
Die empfohlene Methode zum programmgesteuerten Aufrufen eines Dienstes besteht darin, eine Java-Client-Bibliothek zu verwenden, die dem Dienst und nicht der Aufruf-API entspricht. Um beispielsweise den Encryption-Dienst aufzurufen, verwenden Sie die Client-Bibliothek des Encryption-Dienstes. Rufen Sie eine Methode auf, die zum Client-Objekt des Encryption-Dienstes gehört, um einen Vorgang des Encryption-Dienstes durchzuführen. Sie können ein PDF-Dokument mit einem Kennwort verschlüsseln, indem Sie die Methode EncryptionServiceClient
des Objekts encryptPDFUsingPassword
aufrufen.
Die Java-API unterstützt die folgenden Funktionen:
- RMI-Transportprotokoll für Remote-Aufruf
- VM-Transport für lokalen Aufruf
- SOAP für Remote-Aufruf
- Andere Authentifizierung, z. B. Benutzername und Kennwort
- Synchrone und asynchrone Aufrufanforderungen
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
An Menschen orientierte langlebige Prozesse aufrufen
AEM Forms mit Web Services aufrufen
Verbindungseigenschaften festlegen
Übergeben von Daten an AEM Forms-Dienste mithilfe der Java-API
Aufrufen eines Dienstes mithilfe einer Java-Client-Bibliothek
Aufruf eines kurzlebigen Prozesses mithilfe der Aufruf-API
Erstellen einer Java-Web-Anwendung, die einen langlebigen, an Menschen orientierten Prozess aufruft
Einbeziehen von AEM Forms Java-Bibliotheksdateien including-aem-forms-java-library-files
Um mithilfe der Java-API einen AEM Forms-Dienst programmgesteuert aufzurufen, fügen Sie die erforderlichen Bibliotheksdateien (JAR-Dateien) in den Klassenpfad Ihres Java-Projekts ein. Die JAR-Dateien, die Sie in den Klassenpfad Ihrer Clientanwendung einbeziehen, hängen von mehreren Faktoren ab:
- Der aufzurufende AEM Forms-Dienst. Eine Clientanwendung kann einen oder mehrere Dienste aufrufen.
- Der Modus, in dem Sie einen AEM Forms-Dienst aufrufen möchten. Sie können den EJB- oder SOAP-Modus verwenden. (Siehe Einstellen von Verbindungseigenschaften.)
standalone.bat -b <Server IP> -c lc_turnkey.xml
zum Angeben einer Server-IP für EJB.- Der J2EE-Anwendungsserver, auf dem AEM Forms bereitgestellt wird.
Dienstspezifische JAR-Dateien service-specific-jar-files
In der folgenden Tabelle sind die JAR-Dateien aufgeführt, die zum Aufrufen der AEM Forms-Dienste erforderlich sind.
adobe-repository-client.jar
commons-codec-1.3.jar
<Installationsordner>/sdk/client-libs/common
<Installationsordner>/sdk/client-libs\thirdparty
-
adobe-rightsmanagement-client.jar
-
namespace.jar
-
jaxb-api.jar
-
jaxb-impl.jar
-
jaxb-libs.jar
-
jaxb-xjc.jar
-
relaxngDatatype.jar
-
xsdlib.jar
Erforderlich, um den Rights Management-Dienst aufzurufen.
Wenn AEM Forms auf JBoss bereitgestellt wird, schließen Sie alle diese Dateien ein.
<Installationsordner>/sdk/client-libs/common
JBoss-spezifischer Bibliotheksordner
Verbindungsmodus und JAR-Dateien der J2EE-Anwendung connection-mode-and-j2ee-application-jar-files
In der folgenden Tabelle sind die JAR-Dateien aufgeführt, die vom Verbindungsmodus und dem J2EE-Anwendungsserver abhängen, auf dem AEM Forms bereitgestellt wird.
</thead align="left">
-
activation.jar
-
axis.jar
-
commons-codec-1.3.jar
-
commons-collections-3.1.jar
-
commons-discovery.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
wenn AEM Forms auf JBoss-Anwendungsserver bereitgestellt wird, schließen Sie diese JAR-Datei ein.
Erforderliche Klassen werden vom Classloader nicht gefunden, wenn sich jboss-client.jar und die referenzierten Jars nicht an derselben Stelle befinden.
JBoss-Client-Bibliotheksordner
Wenn Sie Ihre Clientanwendung auf demselben J2EE-Anwendungsserver bereitstellen, müssen Sie diese Datei nicht einschließen.
WebLogic-spezifischer Bibliotheksordner
Wenn Sie Ihre Clientanwendung auf demselben J2EE-Anwendungsserver bereitstellen, müssen Sie diese Datei nicht einschließen.
-
com.ibm.ws.admin.client_6.1.0.jar
-
com.ibm.ws.webservices.thinclient_6.1.0.jar
-
Wenn AEM Forms auf WebSphere Application Server bereitgestellt wird, schließen Sie diese JAR-Dateien ein.
-
(com.ibm.ws.webservices.thinclient_6.1.0.jar ist für den Webdienstaufruf erforderlich).
WebSphere-spezifischer Lib-Ordner ([WAS_HOME]/runtimes)
Wenn Sie Ihre Clientanwendung auf demselben J2EE-Anwendungsserver bereitstellen, müssen Sie diese Dateien nicht einschließen.
Aufrufen von Szenarien invoking-scenarios
In der folgenden Tabelle werden die Aufrufszenarien aufgeführt und die erforderlichen JAR-Dateien aufgelistet, um AEM Forms erfolgreich aufzurufen.
</thead align="left"> xmp-uti
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
- jboss-client.jar
- adobe-forms-client.jar
- commons-httpclient-3.1.jar
Forms-Dienst
Acrobat Reader DC Extensions-Dienst
Signature-Dienst
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
- jboss-client.jar
- commons-httpclient-3.1.jar
-
adobe-forms-client.jar
-
adobe-reader-extensions-client.jar
-
adobe-signatures-client.jar
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
-
wlclient.jar
-
activation.jar
-
axis.jar
-
commons-codec-1.3.jar
-
commons-collections-3.1.jar
-
commons-discovery.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
Forms-Dienst
Acrobat Reader DC Extensions-Dienst
Signature-Dienst
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
-
wlclient.jar
-
activation.jar
-
axis.jar
-
commons-codec-1.3.jar
-
commons-collections-3.1.jar
-
commons-discovery.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
JAR-Dateien aktualisieren upgrading-jar-files
Wenn Sie von LiveCycle auf AEM Forms aktualisieren, wird empfohlen, die AEM Forms-JAR-Dateien in den Klassenpfad Ihres Java-Projekts einzuschließen. Wenn Sie beispielsweise Dienste wie den Rights Management-Dienst verwenden, tritt ein Kompatibilitätsproblem auf, wenn Sie keine AEM Forms-JAR-Dateien in Ihren Klassenpfad einbeziehen.
Angenommen, Sie aktualisieren auf AEM Forms. Um eine Java-Anwendung zu verwenden, die den Rights Management-Dienst aufruft, schließen Sie die AEM Forms-Versionen der folgenden JAR-Dateien ein:
- adobe-rightsmanagement-client.jar
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
Siehe auch
AEM Forms mit der JavaAPI aufrufen
Verbindungseigenschaften festlegen
Übergeben von Daten an AEM Forms-Dienste mithilfe der Java-API
Aufrufen eines Dienstes mithilfe einer Java-Client-Bibliothek
Festlegen von Verbindungseigenschaften setting-connection-properties
Sie legen Verbindungseigenschaften fest, um AEM Forms bei Verwendung der Java-API aufzurufen. Geben Sie beim Festlegen der Verbindungseigenschaften an, ob Dienste remote oder lokal aufgerufen werden sollen, und geben Sie außerdem den Verbindungsmodus und Authentifizierungswerte an. Authentifizierungswerte sind erforderlich, wenn die Dienstsicherheit aktiviert ist. Wenn die Servicesicherheit jedoch deaktiviert ist, müssen keine Authentifizierungswerte angegeben werden.
Der Verbindungsmodus kann entweder SOAP- oder EJB-Modus sein. Der EJB-Modus verwendet das RMI/IIOP-Protokoll und die Leistung des EJB-Modus ist besser als die Leistung des SOAP-Modus. Der SOAP-Modus wird verwendet, um eine Abhängigkeit vom J2EE-Anwendungsserver zu beseitigen oder wenn sich eine Firewall zwischen AEM Forms und der Clientanwendung befindet. Der SOAP-Modus verwendet das HTTPS-Protokoll als zugrunde liegenden Transport und kann über Firewall-Grenzen hinweg kommunizieren. Wenn weder eine Abhängigkeit vom J2EE-Anwendungsserver noch eine Firewall ein Problem darstellt, wird empfohlen, den EJB-Modus zu verwenden.
Um einen AEM Forms-Dienst erfolgreich aufzurufen, legen Sie die folgenden Verbindungseigenschaften fest:
-
DSC_DEFAULT_EJB_ENDPOINT: Wenn Sie den EJB-Verbindungsmodus verwenden, stellt dieser Wert die URL des J2EE-Anwendungsservers dar, auf dem AEM Forms bereitgestellt wird. Um AEM Forms remote aufzurufen, geben Sie den Namen des J2EE-Anwendungsservers an, auf dem AEM Forms bereitgestellt wird. Wenn sich Ihre Client-Anwendung auf demselben J2EE-Anwendungsserver befindet, können Sie
localhost
angeben. Geben Sie abhängig davon, auf welchem J2EE-Anwendungsserver AEM Forms implementiert ist, einen der folgenden Werte an:- JBoss:
https://<ServerName>:8080 (default port)
- WebSphere:
iiop://<ServerName>:2809 (default port)
- WebLogic:
t3://<ServerName>:7001 (default port)
- JBoss:
-
DSC_DEFAULT_SOAP_ENDPOINT: Wenn Sie den SOAP-Verbindungsmodus verwenden, stellt dieser Wert den Endpunkt dar, an den eine Aufrufanforderung gesendet wird. Um AEM Forms remote aufzurufen, geben Sie den Namen des J2EE-Anwendungsservers an, auf dem AEM Forms bereitgestellt wird. Wenn sich Ihre Client-Anwendung auf demselben J2EE-Anwendungsserver befindet, können Sie
localhost
angeben (z. B.http://localhost:8080
.)- Der Portwert
8080
gilt, wenn die J2EE-Anwendung JBoss ist. Wenn der J2EE-Anwendungsserver IBM WebSphere ist, verwenden Sie Port9080
. Wenn der J2EE-Anwendungsserver WebLogic ist, verwenden Sie Port7001
. (Diese Werte sind standardmäßige Anschlusswerte. Wenn Sie den Anschlusswert ändern, verwenden Sie die entsprechende Anschlussnummer.)
- Der Portwert
-
DSC_TRANSPORT_PROTOCOL: Wenn Sie den EJB-Verbindungsmodus verwenden, geben Sie
ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
für diesen Wert an. Wenn Sie den SOAP-Verbindungsmodus verwenden, geben SieServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
an. -
DSC_SERVER_TYPE: Der J2EE-Anwendungsserver, auf dem AEM Forms bereitgestellt wird. Gültige Werte sind
JBoss
,WebSphere
,WebLogic
.- Wenn Sie diese Verbindungseigenschaft auf
WebSphere
setzen, wird der Wertjava.naming.factory.initial
aufcom.ibm.ws.naming.util.WsnInitCtxFactory
gesetzt. - Wenn Sie diese Verbindungseigenschaft auf
WebLogic
setzen, wird der Wertjava.naming.factory.initial
aufweblogic.jndi.WLInitialContextFactory
gesetzt. - Wenn Sie diese Verbindungseigenschaft auf
JBoss
setzen, wird der Wertjava.naming.factory.initial
ebenfalls auforg.jnp.interfaces.NamingContextFactory
gesetzt. - Sie können die Eigenschaft
java.naming.factory.initial
auf einen Wert setzen, der Ihren Anforderungen entspricht, wenn Sie die Standardwerte nicht verwenden möchten.
note note NOTE Anstatt eine Zeichenfolge zu verwenden, um die DSC_SERVER_TYPE
Verbindungseigenschaft zu setzen, können Sie ein statisches Mitglied derServiceClientFactoryProperties
Klasse verwenden. Die folgenden Werte können verwendet werden:ServiceClientFactoryProperties.DSC_WEBSPHERE_SERVER_TYPE
,ServiceClientFactoryProperties.DSC_WEBLOGIC_SERVER_TYPE
, oderServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE
. - Wenn Sie diese Verbindungseigenschaft auf
-
DSC_CREDENTIAL_USERNAME: Gibt den Benutzernamen der AEM Formulare an. Damit ein Benutzer erfolgreich einen AEM Forms-Dienst aufrufen kann, benötigt er die Rolle "Dienstbenutzer". Ein Benutzer kann auch über eine andere Rolle verfügen, die die Berechtigung Dienst aufrufen enthält. Andernfalls wird eine Ausnahme ausgelöst, wenn versucht wird, einen Dienst aufzurufen. Wenn die Servicesicherheit jedoch deaktiviert ist, müssen keine Authentifizierungswerte angegeben werden.
-
DSC_CREDENTIAL_PASSWORD: Gibt den entsprechenden Kennwortwert an. Wenn die Service-Sicherheit jedoch deaktiviert ist, müssen keine Authentifizierungswerte angegeben werden.
-
DSC_REQUEST_TIMEOUT: Das Standardlimit für Anforderungszeitlimits für die SOAP-Anforderung beträgt 1200000 Millisekunden (20 Minuten). Manchmal kann es länger dauern, bis eine Anfrage abgeschlossen ist. Beispielsweise kann eine SOAP-Anforderung, die eine große Menge von Datensätzen abruft, eine längere Zeitüberschreitungsbegrenzung erfordern. Mit
ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT
können Sie das Zeitlimit für Anforderungsaufrufe für die SOAP-Anforderungen erhöhen.note note NOTE Nur SOAP-basierte Aufrufe unterstützen die DSC_REQUEST_TIMEOUT-Eigenschaft.
Führen Sie die folgenden Aufgaben aus, um Verbindungseigenschaften festzulegen:
-
Erstellen Sie ein Objekt
java.util.Properties
, indem Sie den Konstruktor verwenden. -
Um die
DSC_DEFAULT_EJB_ENDPOINT
Verbindungseigenschaft einzustellen, rufen Sie diesetProperty
Methode desjava.util.Properties
Objekts auf und übergeben die folgenden Werte:- Der
ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
-Enumerationswert - Ein string-Wert, der die URL des J2EE-Anwendungsservers angibt, der AEM Forms hostet
note note NOTE Wenn Sie den SOAP-Verbindungsmodus verwenden, geben Sie den Aufzählungswert ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT
anstelle des AufzählungswertsServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
an. - Der
-
Um die
DSC_TRANSPORT_PROTOCOL
Verbindungseigenschaft zu setzen, rufen Sie diesetProperty
Methode desjava.util.Properties
Objekts auf und übergeben die folgenden Werte:- Der Aufzählungswert
ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL
- Der Aufzählungswert
ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
note note NOTE Wenn Sie den SOAP-Verbindungsmodus verwenden, geben Sie den Aufzählungswert ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
anstelle des AufzählungswertsServiceClientFactoryProperties.DSC_EJB_PROTOCOL
an. - Der Aufzählungswert
-
Um die
DSC_SERVER_TYPE
Verbindungseigenschaft zu setzen, rufen Sie diejava.util.Properties
Methode des ObjektssetProperty
auf und übergeben die folgenden Werte:-
Der Aufzählungswert
ServiceClientFactoryProperties.DSC_SERVER_TYPE
-
Ein string-Wert, der den J2EE-Anwendungsserver angibt, auf dem AEM Forms gehostet wird. (wenn beispielsweise AEM Forms auf implementiert wird, geben Sie
JBoss
JBoss an.)- Um die
DSC_CREDENTIAL_USERNAME
Verbindungseigenschaft einzustellen, rufen Sie diejava.util.Properties
Methode des ObjektssetProperty
auf und übergeben die folgenden Werte:
- Um die
-
Der Aufzählungswert
ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME
-
Ein Zeichenfolgenwert, der den Benutzernamen angibt, der zum Aufrufen von AEM Forms erforderlich ist
- Um die
DSC_CREDENTIAL_PASSWORD
Verbindungseigenschaft einzustellen, rufen Sie diejava.util.Properties
Methode des ObjektssetProperty
auf und übergeben die folgenden Werte:
- Um die
-
Der Aufzählungswert
ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD
-
Ein Zeichenfolgenwert, der den entsprechenden Kennwortwert angibt.
-
Einstellen des EJB-Verbindungsmodus für JBoss
Im folgenden Java-Codebeispiel werden Verbindungseigenschaften festgelegt, um AEM Forms aufzurufen, das auf JBoss bereitgestellt wird und den EJB-Verbindungsmodus verwendet.
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");
Einrichten des EJB-Verbindungsmodus für WebLogic
Im folgenden Java-Codebeispiel werden Verbindungseigenschaften festgelegt, um AEM Forms aufzurufen, das auf WebLogic bereitgestellt wird und den EJB-Verbindungsmodus verwendet.
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");
EJB-Verbindungsmodus für WebSphere festlegen
Im folgenden Java-Codebeispiel werden Verbindungseigenschaften festgelegt, um AEM Forms aufzurufen, das auf WebSphere bereitgestellt wird und den EJB-Verbindungsmodus verwendet.
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");
SOAP-Verbindungsmodus festlegen
Im folgenden Java-Codebeispiel werden Verbindungseigenschaften im SOAP-Modus festgelegt, um AEM Forms aufzurufen, der auf JBoss bereitgestellt wird.
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");
Verbindungseigenschaften festlegen, wenn die Dienstsicherheit deaktiviert ist
Im folgenden Java-Codebeispiel werden die Verbindungseigenschaften festgelegt, die zum Aufrufen von AEM Forms, das auf dem JBoss-Anwendungsserver bereitgestellt wird, und bei deaktivierter Dienstsicherheit erforderlich sind.
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");
SOAP-Verbindungsmodus mit benutzerdefiniertem Zeitlimit für Anfragen festlegen
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
Verwenden eines Context-Objekts zum Aufrufen von AEM Forms
Sie können ein Objekt. com.adobe.idp.Context
verwenden, um einen AEM Forms-Dienst mit einem authentifizierten Benutzer aufzurufen (das Objekt com.adobe.idp.Context
steht für einen authentifizierten Benutzer). Wenn Sie ein com.adobe.idp.Context
-Objekt verwenden, müssen Sie die Eigenschaften DSC_CREDENTIAL_USERNAME
oder DSC_CREDENTIAL_PASSWORD
nicht einstellen. Sie können ein com.adobe.idp.Context
-Objekt bei der Benutzerauthentifizierung erhalten, indem Sie die authenticate
-Methode des AuthenticationManagerServiceClient
-Objekts verwenden.
Die authenticate
-Methode gibt ein Objekt AuthResult
zurück, das das Ergebnis der Authentifizierung enthält. Sie können ein com.adobe.idp.Context
-Objekt erstellen, indem Sie seinen Konstruktor aufrufen. Rufen Sie dann die Methode com.adobe.idp.Context
des Objekts initPrincipal
auf, und übergeben Sie das Objekt AuthResult
wie im folgenden Code gezeigt:
Context myCtx = new Context();
myCtx.initPrincipal(authResult);
Anstatt die DSC_CREDENTIAL_USERNAME
oder DSC_CREDENTIAL_PASSWORD
Eigenschaften zu setzen, können Sie die setContext
Methode des ServiceClientFactory
Objekts aufrufen und das com.adobe.idp.Context
Objekt übergeben. Wenn Sie einen AEM Forms-Benutzer verwenden, um einen Dienst aufzurufen, stellen Sie sicher, dass er über die Rolle Services User
verfügt, die zum Aufrufen eines AEM Forms-Dienstes erforderlich ist.
Das folgende Codebeispiel zeigt, wie ein com.adobe.idp.Context
-Objekt in Verbindungseinstellungen verwendet wird, die zum Erstellen eines EncryptionServiceClient
-Objekts verwendet werden.
//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);
Aufrufen von Szenarien invoking_scenarios-1
Die folgenden Aufrufszenarien werden in diesem Abschnitt erläutert:
- Eine Client-Anwendung, die in einer eigenen Java Virtual Machine (JVM) ausgeführt wird, ruft eine eigenständige AEM Forms-Instanz auf.
- Eine Client-Anwendung, die in ihrer eigenen JVM ausgeführt wird, ruft geclusterte AEM Forms-Instanzen auf.
Clientanwendung, die eine eigenständige AEM Forms-Instanz aufruft client-application-invoking-a-stand-alone-aem-forms-instance
Das folgende Diagramm zeigt eine Client-Anwendung, die in ihrer eigenen JVM ausgeführt wird und eine eigenständige AEM Forms-Instanz aufruft.
In diesem Szenario wird eine Client-Anwendung in ihrer eigenen JVM ausgeführt und ruft AEM Forms-Dienste auf.
Clientanwendung, die Clusterinstanzen von AEM Forms aufruft client-application-invoking-clustered-aem-forms-instances
Das folgende Diagramm zeigt eine Client-Anwendung, die in einer eigenen JVM ausgeführt wird und AEM Forms-Instanzen aufruft, die sich in einem Cluster befinden.
Dieses Szenario ähnelt einer Client-Anwendung, die eine eigenständige AEM Forms-Instanz aufruft. Die Anbieter-URL ist jedoch anders. Wenn eine Client-Anwendung eine Verbindung zu einem bestimmten J2EE-Anwendungsserver herstellen möchte, muss die Anwendung die URL ändern, um auf den spezifischen J2EE-Anwendungsserver zu verweisen.
Die Referenzierung eines bestimmten J2EE-Anwendungsservers wird nicht empfohlen, da die Verbindung zwischen der Clientanwendung und AEM Forms beendet wird, wenn der Anwendungsserver beendet wird. Es wird empfohlen, dass die Anbieter-URL auf einen JNDI-Manager auf Zellenebene verweist und nicht auf einen bestimmten J2EE-Anwendungsserver.
Client-Anwendungen, die den SOAP-Verbindungsmodus verwenden, können den HTTP-Lastenausgleichsanschluss für den Cluster verwenden. Clientanwendungen, die den EJB-Verbindungsmodus verwenden, können eine Verbindung zum EJB-Port eines bestimmten J2EE-Anwendungsservers herstellen. Diese Aktion verarbeitet den Lastenausgleich zwischen Clusterknoten.
WebSphere
Das folgende Beispiel zeigt den Inhalt einer Datei "jndi.properties", die verwendet wird, um eine Verbindung mit AEM Forms herzustellen, die auf WebSphere bereitgestellt wird.
java.naming.factory.initial=com.ibm.websphere.naming.
WsnInitialContextFactory
java.naming.provider.url=corbaloc::appserver1:9810,:appserver2:9810
WebLogic
Das folgende Beispiel zeigt den Inhalt einer Datei "jndi.properties", die verwendet wird, um eine Verbindung mit AEM Forms herzustellen, die auf WebLogic bereitgestellt wird.
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://appserver1:8001, appserver2:8001
JBoss
Das folgende Beispiel zeigt den Inhalt einer Datei "jndi.properties", die verwendet wird, um eine Verbindung mit AEM Forms herzustellen, die auf JBoss bereitgestellt wird.
java.naming.factory.initial= org.jnp.interfaces.NamingContextFactory
java.naming.provider.url= jnp://appserver1:1099, appserver2:1099,
appserver3:1099
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Übergeben von Daten an AEM Forms-Dienste mithilfe der Java-API
Aufrufen eines Dienstes mithilfe einer Java-Client-Bibliothek
Übergeben von Daten an AEM Forms-Dienste mithilfe der Java-API passing-data-to-aem-forms-services-using-the-java-api
Vorgänge des AEM Forms-Dienstes verbrauchen normalerweise PDF-Dokumente oder erstellen sie. Beim Aufrufen eines Dienstes ist es manchmal erforderlich, ein PDF-Dokument (oder andere Dokumenttypen wie XML-Daten) an den Dienst zu übergeben. Ebenso ist es manchmal erforderlich, ein vom Dienst zurückgegebenes PDF-Dokument zu verarbeiten. Die Java-Klasse, mit der Sie Daten an und von AEM Forms-Diensten übertragen können, ist com.adobe.idp.Document
.
AEM Forms-Dienste akzeptieren ein PDF-Dokument nicht als andere Datentypen, wie z. B. ein Objekt java.io.InputStream
oder ein Byte-Array. Ein com.adobe.idp.Document
-Objekt kann auch verwendet werden, um andere Datentypen, z. B. XML-Daten, an Dienste zu übergeben.
Das Objekt com.adobe.idp.Document
ist ein serialisierbarer Java-Typ, sodass es über einen RMI-Aufruf übergeben werden kann. Die empfangende Seite kann zusammengefasst werden (gleicher Host, derselbe Klassenlader), lokal (gleicher Host, unterschiedlicher Klassenlader) oder remote (anderer Host). Die Übergabe von Dokumentinhalten ist für jeden Fall optimiert. Wenn sich beispielsweise der Absender und der Empfänger auf demselben Host befinden, wird der Inhalt über ein lokales Dateisystem übergeben. (In einigen Fällen können Dokumente im Speicher übergeben werden.)
Abhängig von der Objektgröße com.adobe.idp.Document
, werden die Daten innerhalb des Objekts com.adobe.idp.Document
befördert oder im Dateisystem des Servers gespeichert. Alle temporären Speicherressourcen, die vom Objekt com.adobe.idp.Document
belegt sind, werden nach der Entsorgung von com.adobe.idp.Document
automatisch entfernt. (Siehe Dokumentobjekte entsorgen.)
Manchmal ist es erforderlich, den Inhaltstyp eines com.adobe.idp.Document
-Objekts zu kennen, bevor Sie es an einen Dienst übergeben können. Wenn für einen Vorgang beispielsweise ein bestimmter Inhaltstyp erforderlich ist, z. B. application/pdf
, wird empfohlen, den Inhaltstyp zu bestimmen. (Siehe Festlegen des Inhaltstyps eines Dokuments.)
Das Objekt com.adobe.idp.Document
versucht, den Inhaltstyp anhand der bereitgestellten Daten zu ermitteln. Wenn der Inhaltstyp nicht aus den bereitgestellten Daten abgerufen werden kann (z. B. wenn die Daten als Byte-Array bereitgestellt wurden), legen Sie den Inhaltstyp fest. Um den Inhaltstyp festzulegen, rufen Sie die Methode com.adobe.idp.Document
des Objekts setContentType
auf. (Siehe Festlegen des Inhaltstyps eines Dokuments)
Wenn Begleitdateien sich im selben Dateisystem befinden, ist das Erstellen eines com.adobe.idp.Document
schneller. Wenn sich Begleitdateien auf Remote-Dateisystemen befinden, muss ein Kopiervorgang ausgeführt werden, der die Leistung beeinträchtigt.
Eine Anwendung kann sowohl com.adobe.idp.Document
als auch org.w3c.dom.Document
Datentypen enthalten. Stellen Sie jedoch sicher, dass Sie den Datentyp org.w3c.dom.Document
vollständig qualifizieren. Informationen zum Konvertieren eines org.w3c.dom.Document
-Objekts in ein com.adobe.idp.Document
-Objekt finden Sie unter Schnellstart (EJB-Modus): Formulare mit flexiblen Layouts mithilfe der Java-API vorbefüllen.
com.adobe.idp.Document
-Objekts zu vermeiden, lesen Sie die Dokumentinformationen in Schritten von 2048 Byte oder weniger. Beispielsweise liest der folgende Code die Dokumentinformationen in Blöcken von 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();
Siehe auch
AEM Forms mit der JavaAPI aufrufen
Verbindungseigenschaften festlegen
Dokumente erstellen creating-documents
Erstellen Sie ein com.adobe.idp.Document
-Objekt, bevor Sie einen Dienstvorgang aufrufen, für den ein PDF-Dokument (oder andere Dokumenttypen) als Eingabewert erforderlich sind. Die Klasse com.adobe.idp.Document
stellt Konstruktoren bereit, mit denen Sie ein Dokument aus den folgenden Inhaltstypen erstellen können:
- Ein Byte-Array
- Ein vorhandenes
com.adobe.idp.Document
-Objekt - Ein
java.io.File
-Objekt - Ein
java.io.InputStream
-Objekt - Ein
java.net.URL
-Objekt
Erstellen eines Dokuments basierend auf einem Byte-Array creating-a-document-based-on-a-byte-array
Im folgenden Codebeispiel wird ein com.adobe.idp.Document
-Objekt erstellt, das auf einem Byte-Array basiert.
Erstellen eines Dokumentobjekts basierend auf einem Byte-Array
Document myPDFDocument = new Document(myByteArray);
Erstellen eines Dokuments basierend auf einem anderen Dokument creating-a-document-based-on-another-document
Im folgenden Codebeispiel wird ein com.adobe.idp.Document
-Objekt erstellt, das auf einem anderen com.adobe.idp.Document
-Objekt basiert.
Erstellen eines Dokumentobjekts, das auf einem anderen Dokument basiert
//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);
Auf einer Datei basierendes Dokument erstellen creating-a-document-based-on-a-file
Im folgenden Codebeispiel wird ein com.adobe.idp.Document
-Objekt erstellt, das auf eine PDF-Datei map.pdf basiert. Diese Datei befindet sich im Stammverzeichnis der C-Festplatte. Dieser Konstruktor versucht, den MIME-Inhaltstyp des com.adobe.idp.Document
-Objekts mithilfe der Dateinamenerweiterung festzulegen.
Der com.adobe.idp.Document
Konstruktor, der ein java.io.File
-Objekt akzeptiert, akzeptiert auch einen Booleschen Parameter. Wenn Sie diese Parameter auf true
setzen, löscht das com.adobe.idp.Document
-Objekt die Datei. Diese Aktion bedeutet, dass Sie die Datei nicht entfernen müssen, nachdem Sie sie an den com.adobe.idp.Document
-Konstruktor übergeben haben.
Wenn Sie diesen Parameter auf false
setzen, behalten Sie den Besitz dieser Datei bei. Das Einstellen dieses Parameters auf true
ist effizienter. Der Grund ist, dass das com.adobe.idp.Document
-Objekt die Datei direkt in den lokalen verwalteten Bereich verschieben kann, anstatt sie zu kopieren (was langsamer ist).
Erstellen eines Dokumentobjekts basierend auf einer PDF-Datei
//Create a Document object based on the map.pdf source file
File mySourceMap = new File("C:\\map.pdf");
Document myPDFDocument = new Document(mySourceMap,true);
Erstellen eines Dokuments basierend auf einem InputStream-Objekt creating-a-document-based-on-an-inputstream-object
Im folgenden Codebeispiel wird ein com.adobe.idp.Document
-Objekt erstellt, das auf einemjava.io.InputStream
-Objekt basiert.
Erstellen eines Dokuments basierend auf einem InputStream-Objekt
//Create a Document object based on an InputStream object
InputStream is = new FileInputStream("C:\\Map.pdf");
Document myPDFDocument = new Document(is);
Erstellen eines Dokuments basierend auf Inhalten, auf die über eine URL zugegriffen werden kann creating-a-document-based-on-content-accessible-from-an-url
Im folgenden Codebeispiel wird ein com.adobe.idp.Document
-Objekt erstellt, das auf einer PDF-Datei map.pdf basiert. Diese Datei befindet sich in einer Web-Anwendung namens WebApp
, die auf localhost
läuft. Dieser Konstruktor versucht, den MIME-Inhaltstyp des com.adobe.idp.Document
-Objekts mithilfe des mit dem URL-Protokoll zurückgegebenen Inhaltstyps festzulegen.
Die URL des com.adobe.idp.Document
-Objekts wird immer an der Seite gelesen, an der das ursprüngliche com.adobe.idp.Document
-Objekt erstellt wird, wie in diesem Beispiel gezeigt:
Document doc = new Document(new java.net.URL("file:c:/temp/input.pdf"));
Die Datei c:/temp/input.pdf muss sich auf dem Client-Computer (nicht auf dem Servercomputer) befinden. Auf dem Client-Computer wird die URL gelesen und das com.adobe.idp.Document
-Objekt wurde erstellt.
Erstellen eines Dokuments basierend auf Inhalten, auf die über eine URL zugegriffen werden kann
//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);
Siehe auch
AEM Forms mit der JavaAPI aufrufen
Verbindungseigenschaften festlegen
Umgang mit zurückgegebenen Dokumenten handling-returned-documents
Dienstvorgänge, die ein PDF-Dokument (oder andere Datentypen wie XML-Daten) als Ausgabewert zurückgeben, geben ein com.adobe.idp.Document
-Objekt zurück. Nachdem Sie ein com.adobe.idp.Document
-Objekt erhalten haben, können Sie es in die folgenden Formate konvertieren:
- Ein
java.io.File
-Objekt - Ein
java.io.InputStream
-Objekt - Ein Byte-Array
Die folgende Codezeile konvertiert ein com.adobe.idp.Document
-Objekt in ein java.io.InputStream
-Objekt. Angenommen, dass myPDFDocument
ein com.adobe.idp.Document
-Objekt darstellt:
java.io.InputStream resultStream = myDocument.getInputStream();
Ebenso können Sie den Inhalt eines com.adobe.idp.Document
in eine lokale Datei kopieren, indem Sie die folgenden Aufgaben ausführen:
- Erstellen Sie ein
java.io.File
-Objekt. - Rufen Sie die Methode
copyToFile
des Objektscom.adobe.idp.Document
auf, und übergeben Sie dasjava.io.File
-Objekt.
Das folgende Codebeispiel kopiert den Inhalt eines com.adobe.idp.Document
-Objekts in eine Datei namens AnotherMap.pdf.
Kopieren des Inhalts eines Dokumentobjekts in eine Datei
File outFile = new File("C:\\AnotherMap.pdf");
myDocument.copyToFile (outFile);
Siehe auch
AEM Forms mit der JavaAPI aufrufen
Verbindungseigenschaften festlegen
Festlegen des Inhaltstyps eines Dokuments determining-the-content-type-of-a-document
Bestimmen Sie den MIME-Typ eines com.adobe.idp.Document
-Objekts, indem Sie die Methode getContentType
des Objekts com.adobe.idp.Document
aufrufen. Diese Methode gibt einen Zeichenfolgenwert zurück, der den Inhaltstyp des Objekts com.adobe.idp.Document
angibt. In der folgenden Tabelle werden die verschiedenen Inhaltstypen beschrieben, die AEM Forms zurückgibt.
application/pdf
application/vnd.adobe.xdp+xml
text/xml
application/vnd.fdf
application/vnd.adobe.xfdf
application/rdf+xml
application/octet-stream
NULL
Das folgende Codebeispiel bestimmt den Inhaltstyp eines com.adobe.idp.Document
-Objekts.
Festlegen des Inhaltstyps eines Dokumentobjekts
//Determine the content type of the Document object
String ct = myDocument.getContentType();
System.out.println("The content type of the Document object is " +ct);
Siehe auch
AEM Forms mit der JavaAPI aufrufen
Verbindungseigenschaften festlegen
Abschaffung von Dokumentobjekten disposing-document-objects
Wenn Sie ein Document
-Objekt nicht mehr benötigen, wird empfohlen, dass Sie es durch Aufrufen der dispose
-Methode entsorgen. Jedes Document
-Objekt benötigt einen Dateideskriptor und bis zu 75 MB RAM-Speicherplatz auf der Hostplattform Ihrer Anwendung. Wenn ein Document
-Objekt nicht bereitgestellt wird, wird es vom Java Garage-Erfassungsprozess bereitgestellt. Durch eine frühere Entsorgung mit der dispose
-Methode können Sie jedoch den Speicherplatz freigeben, der vom Document
-Objekt belegt wird.
Siehe auch
AEM Forms mit der JavaAPI aufrufen
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Aufrufen eines Dienstes mithilfe einer Java-Client-Bibliothek
Aufrufen eines Dienstes mithilfe einer Java-Client-Bibliothek invoking-a-service-using-a-java-client-library
AEM Forms-Dienstvorgänge können über die stark typisierte API eines Dienstes, die als Java-Client-Bibliothek bezeichnet wird, aufgerufen werden. A Java-Client-Bibliothek ist eine Reihe konkreter Klassen, die Zugriff auf Dienste bieten, die im Dienstcontainer bereitgestellt werden. Sie instanziieren ein Java-Objekt, das den Dienst zum Aufrufen darstellt, anstelle dass ein InvocationRequest
-Objekt durch die Verwendung der Aufruf-API erstellt wird. Die Aufruf-API wird zum Aufrufen von Prozessen wie langlebigen Prozessen verwendet, die in Workbench erstellt wurden. (Siehe An Menschen orientierte langlebige Prozesse aufrufen.)
Um einen Dienstvorgang auszuführen, rufen Sie eine Methode auf, die zum Java-Objekt gehört. Eine Java-Client-Bibliothek enthält Methoden, die normalerweise Eins-zu-Eins-Dienstvorgänge zuordnen. Legen Sie bei Verwendung einer Java-Client-Bibliothek die erforderlichen Verbindungseigenschaften fest. (Siehe Festlegen von Verbindungseigenschaften.)
Nachdem Sie die Verbindungseigenschaften festgelegt haben, erstellen Sie ein ServiceClientFactory
-Objekt, mit dem ein Java-Objekt instanziiert wird, mit dem Sie einen Service aufrufen können. Jeder Dienst, der über eine Java-Client-Bibliothek verfügt, verfügt über ein entsprechendes Client-Objekt. Um zum Beispiel den Repository-Dienst aufzurufen, erstellen Sie ein ResourceRepositoryClient
-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory
-Objekt übergeben. Das ServiceClientFactory
-Objekt ist für die Verwaltung der Verbindungseinstellungen verantwortlich, die zum Aufrufen von AEM Forms-Diensten erforderlich sind.
Obwohl das Beziehen eines ServiceClientFactory
normalerweise schnell ist, ist ein gewisser Aufwand erforderlich, wenn die Factory zum ersten Mal verwendet wird. Dieses Objekt ist für die Wiederverwendung optimiert. Wenn Sie mehrere Java-Client-Objekte erstellen, verwenden Sie dasselbe ServiceClientFactory
-Objekt. Das heißt, erstellen Sie kein separates ServiceClientFactory
-Objekt für jedes Client-Bibliothekobjekt, das Sie erstellen.
Es gibt eine Benutzer-Manager-Einstellung, die die Lebensdauer der SAML-Assertion steuert, die innerhalb des com.adobe.idp.Context
-Objekt ist, das das ServiceClientFactory
-Objekt beeinflusst. Diese Einstellung steuert die Gültigkeitsdauer des Authentifizierungskontexts in AEM Forms, einschließlich aller Aufrufe, die mit der Java-API ausgeführt werden. Standardmäßig beträgt der Zeitraum, in dem ein ServiceCleintFactory
-Objekt verwendet werden kann, zwei Stunden.
writeResource
aufgerufen. Durch diesen Vorgang wird eine neue Ressource in das Repository eingefügt.Sie können den Repository-Dienst mithilfe einer Java-Client-Bibliothek aufrufen, indem Sie die folgenden Schritte ausführen:
-
Schließen Sie Client-JAR-Dateien wie adobe-repository-client.jar in den Klassenpfad Ihres Java-Projekts ein. Weitere Informationen über den Speicherort dieser Dateien finden Sie unter Einbeziehen von AEM Forms Java-Bibliotheksdateien.
-
Legen Sie Verbindungseigenschaften fest, die zum Aufrufen eines Dienstes erforderlich sind.
-
Erstellen Sie ein
ServiceClientFactory
-Objekt, indem Sie die statischecreateInstance
-Methode desServiceClientFactory
-Objekts aufrufen und dasjava.util.Properties
-Objekt übergeben, das die Verbindungseigenschaften enthält. -
Erstellen Sie ein
ResourceRepositoryClient
-Objekt, indem Sie seinen Konstruktor verwenden und dasServiceClientFactory
-Objekt übergeben. Verwenden Sie dasResourceRepositoryClient
-Objekt, um Repository-Dienstvorgänge aufzurufen. -
Erstellen Sie ein
RepositoryInfomodelFactoryBean
-Objekt, indem Sie seinen Konstruktor verwenden, und übergeben Sienull
. Mit diesem Objekt können Sie einResource
-Objekt erstellen, das den Inhalt darstellt, der dem Repository hinzugefügt wird. -
Erstellen Sie ein
Resource
Objekt, indem Sie dienewImage
Methode desRepositoryInfomodelFactoryBean
Objekts aufrufen und die folgenden Werte übergeben:- Ein eindeutiger ID-Wert durch Angabe von
new Id()
. - Ein eindeutiger UUID-Wert durch Angabe von
new Lid()
. - Der Name der Ressource. Sie können den Dateinamen der XDP-Datei angeben.
Wandeln Sie den Rückgabewert in
Resource
um. - Ein eindeutiger ID-Wert durch Angabe von
-
Erstellen Sie ein
ResourceContent
-Objekt, indem Sie dienewImage
-Methode desRepositoryInfomodelFactoryBean
-Objekts aufrufen und den Rückgabewert aufResourceContent
zurückführen. Dieses Objekt stellt den Inhalt dar, der dem Repository hinzugefügt wird. -
Erstellen Sie ein
com.adobe.idp.Document
-Objekt indem Sie einjava.io.FileInputStream
Objekt übergeben, das die XDP-Datei speichert, die dem Repository hinzugefügt werden soll. (Siehe Erstellen eines Dokuments basierend auf einem InputStream-Objekt.) -
Fügen Sie den Inhalt des
com.adobe.idp.Document
-Objekts demResourceContent
-Objekt hinzu, indem Sie diesetDataDocument
-Methode desResourceContent
-Objekts aufrufen. Übergeben Sie dascom.adobe.idp.Document
-Objekt. -
Legen Sie den MIME-Typ der XDP-Datei fest, die dem Repository hinzugefügt werden soll, indem Sie die
ResourceContent
-Methode des ObjektssetMimeType
aufrufen undapplication/vnd.adobe.xdp+xml
übergeben. -
Fügen Sie den Inhalt des
ResourceContent
-Objekts demResource
-Objekt hinzu, indem Sie diesetContent
-Methode desResource
-Objekts aufrufen und dasResourceContent
-Objekt übergeben. -
Fügen Sie eine Beschreibung der Ressource hinzu, indem Sie die Methode
Resource
des ObjektssetDescription
aufrufen und einen string-Wert übergeben, der eine Beschreibung der Ressource darstellt. -
Fügen Sie den Formularentwurf in das Repository, indem Sie die Methode
ResourceRepositoryClient
des ObjektswriteResource
aufrufen und die folgenden Werte übergeben:- Ein string-Wert, der den Pfad zur Ressourcensammlung angibt, die die neue Ressource enthält
- Das erstellte
Resource
-Objekt
Siehe auch
Schnellstart (EJB-Modus): Schreiben einer Ressource mithilfe der Java-API
AEM Forms mit der JavaAPI aufrufen
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Aufrufen eines kurzlebigen Prozesses mithilfe der Aufruf-API invoking-a-short-lived-process-using-the-invocation-api
Sie können einen kurzlebigen Prozess mithilfe der Java-Aufruf-API aufrufen. Wenn Sie einen kurzlebigen Prozess mit der Aufruf-API aufrufen, übergeben Sie die erforderlichen Parameterwerte mithilfe eines java.util.HashMap
-Objekts. Für jeden Parameter, der an einen Dienst übergeben werden soll, rufen Sie die Methode java.util.HashMap
des Objekts put
auf und geben Sie das Namen-Wertpaar an, das durch den Dienst erforderlich ist, um den angegebenen Vorgang durchzuführen. Geben Sie den genauen Namen der Parameter an, die zum kurzlebigen Prozess gehören.
In der folgenden Diskussion geht es um die Verwendung der Aufruf-API, um den folgenden kurzlebigen AEM Forms-Prozess namens MyApplication/EncryptDocument
aufzurufen.
MyApplication/EncryptDocument
in Workbench. (Siehe Verwenden von Workbench.)Wenn dieser Prozess aufgerufen wird, führt er die folgenden Aktionen aus:
- Ruft das ungesicherte PDF-Dokument ab, das an den Prozess übergeben wird. Diese Aktion basiert auf dem Vorgang
SetValue
. Der Eingangsparameter für diesen Prozess ist einedocument
-Prozessvariable mit dem NameninDoc
. - Sie verschlüsselt das PDF-Dokument mit einem Kennwort. Diese Aktion basiert auf dem Vorgang
PasswordEncryptPDF
. Das kennwortverschlüsselte PDF-Dokument wird in einer Prozessvariablen namensoutDoc
zurückgegeben.
Rufen Sie den kurzlebigen Prozess „MyApplication/EncryptDocument“ mithilfe der Java-Aufruf-API auf invoke-the-myapplication-encryptdocument-short-lived-process-using-the-java-invocation-api
Rufen Sie den kurzlebigen Prozess MyApplication/EncryptDocument
mithilfe der Java-Aufruf-API auf:
-
Schließen Sie Client-JAR-Dateien wie die Datei "adobe-livecycle-client.jar"in den Klassenpfad Ihres Java-Projekts ein. (Siehe Einbeziehen von AEM Forms Java-Bibliotheksdateien.)
-
Erstellen Sie ein
ServiceClientFactory
-Objekt, das Verbindungseigenschaften enthält. (Siehe Einstellung von Verbindungseigenschaften.) -
Erstellen Sie ein
ServiceClient
-Objekt, indem Sie seinen Konstruktor verwenden und dasServiceClientFactory
-Objekt übergeben. Mit einemServiceClient
-Objekt können Sie einen Dienstvorgang aufrufen. Es erledigt Aufgaben wie das Auffinden, Versenden und Weiterleiten von Aufrufanforderungen. -
Erstellen Sie ein Objekt
java.util.HashMap
, indem Sie den Konstruktor verwenden. -
Rufen Sie die Methode
java.util.HashMap
desput
-Objekts für jeden Eingabeparameter auf, der an den langlebigen Prozess übergeben erden soll. Da der kurzlebige ProzessMyApplication/EncryptDocument
einen Eingabeparameter des TypsDocument
erfordert, müssen Sie nur dieput
-Methode einmal aufrufen, wie im folgenden Beispiel gezeigt.code language-as3 //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);
-
Erstellen Sie ein
InvocationRequest
-Objekt, indem Sie die MethodecreateInvocationRequest
desServiceClientFactory
-Objekts aufrufen und die folgenden Werte übergeben:- Ein string-Wert, der den Namen des langlebigen aufzurufenden Prozesses angibt. Geben Sie
MyApplication/EncryptDocument
an, um denMyApplication/EncryptDocument
-Prozess aufzurufen. - Ein string-Wert, der den Prozessvorgangsnamen darstellt. Typischerweise ist der Name eines kurzlebigen Prozessvorgangs
invoke
. - Das
java.util.HashMap
-Objekt, das die Parameterwerte enthält, die für den Dienstvorgang erforderlich sind. - Ein boolescher Wert, der
true
angibt, wodurch eine synchrone Anforderung erstellt wird (dieser Wert kann für den Aufruf eines kurzlebigen Prozesses verwendet werden).
- Ein string-Wert, der den Namen des langlebigen aufzurufenden Prozesses angibt. Geben Sie
-
Senden Sie die Aufrufanforderung an den Dienst, indem Sie die Methode
ServiceClient
des Objektsinvoke
aufrufen und dasInvocationRequest
-Objekt übergeben. Die Methodeinvoke
gibt einInvocationReponse
-Objekt zurück.note note NOTE Ein langlebiger Prozess kann aufgerufen werden, indem der Wert false
als vierter Parameter dercreateInvocationRequest
-Methode übergeben wird. Wenn Sie den Wertfalse
übergeben, wird eine asynchrone Anforderung erstellt. -
Rufen Sie den der Rückgabewert des Verfahrens ab, indem Sie die Methode
InvocationReponse
des ObjektsgetOutputParameter
aufrufen und übergeben Sie einen string-Wert, der den Namen des Ausgangsparameters angibt. Geben Sie in dieser SituationoutDoc
an (outDoc
ist der Name des Ausgabeparameters für den ProzessMyApplication/EncryptDocument
). Wandeln Sie den Rückgabewert inDocument
um, wie im folgenden Beispiel gezeigt.code language-as3 InvocationResponse response = myServiceClient.invoke(request); Document encryptDoc = (Document) response.getOutputParameter("outDoc");
-
Erstellen Sie ein
java.io.File
-Objekt und stellen Sie sicher, dass die Dateierweiterung .pdf ist. -
Rufen Sie die Methode
copyToFile
descom.adobe.idp.Document
-Objekts auf, um den Inhalt descom.adobe.idp.Document
-Objekts in die Datei zu kopieren. Stellen Sie sicher, dass Sie dascom.adobe.idp.Document
-Objekt verwenden, das von dergetOutputParameter
-Methode zurückgegeben wurde.
Siehe auch
Schnellstart: Hervorrufen eines kurzlebigen Prozesses mit der Aufruf-API
An Menschen orientierte langlebige Prozesse aufrufen
Einbeziehung von AEM Forms Java-Bibliotheksdateien