AEM Forms mit der JavaAPI aufrufen invoking-aem-forms-using-the-javaapi

Die Beispiele in diesem Dokument gelten nur für eine AEM Forms on JEE-Umgebung.

AEM Forms kann mit der AEM Forms-Java-API aufgerufen werden.  Bei Verwendung der AEM Forms-Java-API können Sie entweder die Aufruf-API oder 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. Mit diesen Klassen können Sie eine Aufrufanforderung direkt an einen Dienst senden und eine zurückgegebene Aufruf-Antwort verarbeiten.  Verwenden Sie die Aufruf-API, um kurzlebige oder langlebige Prozesse aufzurufen, die mit Workbench erstellt wurden.

Die empfohlene Methode zum programmgesteuerten Aufrufen eines Dienstes ist die Verwendung einer Java-Client-Bibliothek, die dem Dienst und nicht der Aufruf-API entspricht. Verwenden Sie zum Aufrufen des Verschlüsselungsdienstes beispielsweise die Client-Bibliothek des Verschlüsselungsdienstes.  Rufen Sie zum Ausführen eines Verschlüsselungsdienstvorgangs eine Methode auf, die zu dem Client-Objekt des Verschlüsselungsdienstes gehört.  Sie können ein PDF-Dokument mit einem Kennwort verschlüsseln, indem Sie die Methode encryptPDFUsingPassword des EncryptionServiceClient-Objekts aufrufen.

Die Java-API unterstützt die folgenden Funktionen:

  • RMI-Transportprotokoll für den Remote-Aufruf
  • VM-Transport für den lokalen Aufruf
  • SOAP für den Remote-Aufruf
  • Unterschiedliche Authentifizierung, wie z. B. Benutzername und Kennwort
  • Synchrone und asynchrone Aufrufanfragen

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 einen AEM Forms-Dienst programmgesteuert mithilfe der Java-API 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 Client-Anwendung aufnehmen, hängen von mehreren Faktoren ab:

  • Der aufzurufende AEM Forms-Dienst.  Eine Client-Anwendung 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.)
NOTE
(Nur Turnkey) Starten Sie den AEM Forms-Server mit dem Befehl standalone.bat -b <Server IP> -c lc_turnkey.xml zum Angeben einer Server-IP für EJB
  • Der J2EE-Anwendungs-Server, 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 von AEM Forms-Diensten erforderlich sind.

File
Beschreibung
Ort
adobe-livecycle-client.jar
Muss immer im Klassenpfad einer Java-Client-Anwendung enthalten sein.
<install directory>/sdk/client-libs/common
adobe-usermanager-client.jar
Muss immer im Klassenpfad einer Java-Client-Anwendung enthalten sein.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-utilities.jar
Muss immer im Klassenpfad einer Java-Client-Anwendung enthalten sein.
<Installationsverzeichnis>/sdk/client-libs/<App-Server>
adobe-applicationmanager-client-sdk.jar
Erforderlich, um den Application Manager-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-assembler-client.jar
Erforderlich, um den Assembler-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-backup-restore-client-sdk.jar
Erforderlich, um die API für den Sicherungs- und Wiederherstellungs-Service aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-barcodedforms-client.jar
Erforderlich, um den Dienst „Barcode-Formulare“ aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-convertpdf-client.jar
Erforderlich, um den Convert PDF-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-distiller-client.jar
Erforderlich, um den Distiller-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-docconverter-client.jar
Erforderlich, um den DocConverter-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-contentservices-client.jar
Erforderlich, um den Document Management-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-encryption-client.jar
Erforderlich, um den Verschlüsselungsdienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-forms-client.jar
Erforderlich, um den Forms-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-formdataintegration-client.jar
Erforderlich, um den Form Data Integration-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-generatepdf-client.jar
Erforderlich, um den Generate PDF-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-generate3dpdf-client.jar
Erforderlich, um den Generate 3D PDF-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-jobmanager-client-sdk.jar
Erforderlich, um den Job Manager-Dienst aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-output-client.jar
Erforderlich, um den Ausgabe-Service aufzurufen.
<Installationsverzeichnis>/sdk/client-libs/common
adobe-pdfutility-client.jar
Erforderlich, um den PDF Utilities- oder XMP Utilities-Dienst aufzurufen.
<install directory>/sdk/client-libs/common
adobe-reader-extensions-client.jar
Erforderlich, um den Acrobat Reader DC-Erweiterungen-Dienst aufzurufen.
<install directory>/sdk/client-libs/common

adobe-repository-client.jar

commons-codec-1.3.jar

Erforderlich, um den Repository-Dienst aufzurufen.

<install directory>/sdk/client-libs/common

<install directory>/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.

<install directory>/sdk/client-libs/common

JBoss-spezifisches lib-Verzeichnis

adobe-signatures-client.jar
Erforderlich, um den Signaturdienst aufzurufen.
<install directory>/sdk/client-libs/common
adobe-taskmanager-client-sdk.jar
Erforderlich, um den Task Manager-Dienst aufzurufen.
<install directory>/sdk/client-libs/common
adobe-truststore-client.jar
Erforderlich, um den Trust Store-Dienst aufzurufen.
<install directory>/sdk/client-libs/common

Verbindungsmodus und J2EE-Anwendungs-JAR-Dateien connection-mode-and-j2ee-application-jar-files

In der folgenden Tabelle sind die JAR-Dateien aufgeführt, die vom Verbindungsmodus und dem J2EE-Anwendungs-Server abhängen, auf dem AEM Forms bereitgestellt wird.

</thead align="left">

File
Beschreibung
Ort
  • 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 im SOAP-Modus aufgerufen wird, schließen Sie diese JAR-Dateien ein.
<Installationsverzeichnis>/sdk/client-libs/thirdparty
jboss-client.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-Bibliotheksverzeichnis

Wenn Sie Ihre Client-Anwendung auf demselben J2EE-Anwendungs-Server bereitstellen, müssen Sie diese Datei nicht einschließen.

wlclient.jar
Wenn AEM Forms auf BEA WebLogic Server® bereitgestellt wird, schließen Sie diese JAR-Datei ein.

WebLogic-spezifisches Bibliotheksverzeichnis

Wenn Sie Ihre Client-Anwendung auf demselben J2EE-Anwendungs-Server 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 implementiert ist, schließen Sie diese JAR-Dateien ein.

  • (com.ibm.ws.webservices.thinclient_6.1.0.jar ist für Web-Dienstaufruf erforderlich.)

WebSphere-spezifisches Bibliotheksverzeichnis ([WAS_HOME]/runtimes)

Wenn Sie Ihre Client-Anwendung auf demselben J2EE-Anwendungs-Server bereitstellen, müssen Sie diese Datei nicht einschließen.

Aufrufen von Szenarien invoking-scenarios

In der folgenden Tabelle werden die Aufrufszenarien angegeben und die zum erfolgreichen Aufrufen von AEM Forms erforderlichen JAR-Dateien aufgeführt.

</thead align="left"> xmp-uti

Dienste
Aufrufmodus
J2EE-Anwendungs-Server
Erforderliche JAR-Dateien
Forms-Dienst
EJB
JBoss
  • 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-Erweiterungen-Dienst

Signaturdienst

EJB
JBoss
  • 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

Forms-Dienst
SOAP
WebLogic
  • 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-Erweiterungen-Dienst

Signaturdienst

SOAP
WebLogic
  • 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

Aktualisieren von JAR-Dateien upgrading-jar-files

Wenn Sie ein Upgrade von LiveCycle auf AEM Forms durchführen, wird empfohlen, dass Sie die AEM Forms-JAR-Dateien in den Klassenpfad Ihres Java-Projekts aufnehmen. Bei Diensten wie dem Rights Management-Dienst tritt beispielsweise ein Kompatibilitätsproblem auf, wenn Sie keine AEM Forms-JAR-Dateien in Ihren Klassenpfad einschließen.

Angenommen, Sie führen ein Upgrade auf AEM Forms durch. Um eine Java-Anwendung zu verwenden, die den Rights Management-Dienst aufruft, müssen Sie die AEM Forms-Versionen der folgenden JAR-Dateien einschließen:

  • 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

Legen Sie Verbindungseigenschaften fest, um AEM Forms bei Verwendung der Java-API aufzurufen. Geben Sie beim Festlegen von Verbindungseigenschaften an, ob Dienste remote oder lokal aufgerufen werden sollen. Legen Sie zudem den Verbindungsmodus und die Authentifizierungswerte fest. Authentifizierungswerte sind erforderlich, wenn die Dienstsicherheit aktiviert ist. Wenn die Servicesicherheit jedoch deaktiviert ist, müssen keine Authentifizierungswerte angegeben werden.

Der Verbindungsmodus kann entweder der SOAP- oder der EJB-Modus sein. Der EJB-Modus verwendet das RMI/IIOP-Protokoll. Die Leistung des EJB-Modus ist besser als die des SOAP-Modus. Der SOAP-Modus wird verwendet, um die Abhängigkeit eines J2EE-Anwendungs-Servers zu beseitigen oder wenn sich eine Firewall zwischen AEM Forms und der Client-Anwendung befindet. Der SOAP-Modus verwendet HTTPS als zugrunde liegendes Übertragungsprotokoll und kann über Firewall-Grenzen hinweg kommunizieren. Wenn weder eine Abhängigkeit des J2EE-Anwendungs-Servers 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-Anwendungs-Servers dar, auf dem AEM Forms implementiert ist. Um AEM Forms remote aufzurufen, geben Sie den Namen des J2EE-Anwendungs-Servers an, auf dem AEM Forms implementiert ist. Wenn sich Ihre Client-Anwendung auf demselben J2EE-Anwendungsserver befindet, können Sie localhostangeben. Geben Sie abhängig davon, auf welchem J2EE-Anwendungs-Server AEM Forms bereitgestellt ist, einen der folgenden Werte an:

    • JBoss: https://<ServerName>:8080 (default port)
    • WebSphere: iiop://<ServerName>:2809 (default port)
    • WebLogic: t3://<ServerName>:7001 (default port)
  • DSC_DEFAULT_SOAP_ENDPOINT: Wenn Sie den SOAP-Verbindungsmodus verwenden, stellt dieser Wert den Endpunkt dar, an den eine Aufrufanfrage gesendet wird. Um AEM Forms remote aufzurufen, geben Sie den Namen des J2EE-Anwendungs-Servers an, auf dem AEM Forms implementiert ist. Wenn sich Ihre Client-Anwendung auf demselben J2EE-Anwendungsserver befindet, können Sie localhostangeben (z. B. http://localhost:8080.)

    • Der Portwert 8080 gilt, wenn die J2EE-Anwendung JBoss ist. Wenn der J2EE-Anwendungsserver IBM WebSphere ist, verwenden Sie Port 9080. Wenn der J2EE-Anwendungsserver WebLogic ist, verwenden Sie Port 7001. (Diese Werte sind standardmäßige Port-Werte. Wenn Sie den Port-Wert ändern, verwenden Sie die entsprechende Port-Nummer.)
  • 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 Sie ServiceClientFactoryProperties.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 Wert java.naming.factory.initial auf com.ibm.ws.naming.util.WsnInitCtxFactory gesetzt.
    • Wenn Sie diese Verbindungseigenschaft auf WebLogic setzen, wird der Wert java.naming.factory.initial auf weblogic.jndi.WLInitialContextFactory gesetzt.
    • Wenn Sie diese Verbindungseigenschaft auf JBoss setzen, wird der Wert java.naming.factory.initial ebenfalls auf org.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 der ServiceClientFactoryProperties Klasse verwenden. Die folgenden Werte können verwendet werden: ServiceClientFactoryProperties.DSC_WEBSPHERE_SERVER_TYPE, ServiceClientFactoryProperties.DSC_WEBLOGIC_SERVER_TYPE, oder ServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE.
  • DSC_CREDENTIAL_USERNAME: Gibt den AEM Forms-Benutzernamen an. Damit einen AEM Forms-Dienst aufrufen können, wird die Rolle „Dienstbenutzer“ benötigt. Es kann auch eine andere Rolle sein, die die Berechtigung zum Dienstaufruf 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 eine Anfrage länger brauchen, um den Vorgang abzuschließen.  Beispielsweise kann eine SOAP-Anfrage, die eine große Menge von Einträgen abruft, ein längeres Zeitlimit erfordern. Mit ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT können Sie das Zeitlimit für Anforderungsaufrufe für die SOAP-Anforderungen erhöhen.

    Hinweis: Nur SOAP-basierte Aufrufe unterstützen die DSC_REQUEST_TIMEOUT Eigenschaft.

Führen Sie die folgenden Aufgaben aus, um Verbindungseigenschaften festzulegen:

  1. Erstellen Sie ein Objekt java.util.Properties, indem Sie den Konstruktor verwenden.

  2. Um die Verbindungseigenschaft DSC_DEFAULT_EJB_ENDPOINT festzulegen, rufen Sie die Methode setProperty des java.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ählungswerts ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT an.
  3. Um die Verbindungseigenschaft DSC_TRANSPORT_PROTOCOL festzulegen, rufen Sie die Methode setProperty des java.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ählungswerts ServiceClientFactoryProperties.DSC_EJB_PROTOCOL an.
  4. Um die Verbindungseigenschaft DSC_SERVER_TYPE festzulegen, rufen Sie die Methode setProperty des java.util.Properties-Objekts auf und übergeben die folgenden Werte:

    • Der Aufzählungswert ServiceClientFactoryProperties.DSC_SERVER_TYPE

    • Ein string-Wert, der den J2EE-Anwendungs-Server angibt, auf dem AEM Forms gehostet wird. (wenn beispielsweise AEM Forms auf bereitgestellt wird, geben Sie JBossJBoss an.)

      1. Um die Verbindungseigenschaft DSC_CREDENTIAL_USERNAME festzulegen, rufen Sie die Methode setProperty des java.util.Properties-Objekts auf und übergeben die folgenden Werte:
    • Der Aufzählungswert ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME

    • Ein Zeichenfolgenwert, der den Benutzernamen angibt, der zum Aufrufen von AEM Forms erforderlich ist

      1. Um die Verbindungseigenschaft DSC_CREDENTIAL_PASSWORD festzulegen, rufen Sie die Methode setProperty des java.util.Properties-Objekts auf und übergeben die folgenden Werte:
    • Der Aufzählungswert ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD

    • Ein Zeichenfolgenwert, der den entsprechenden Kennwortwert angibt.

Einstellen des EJB-Verbindungsmodus für JBoss

Im folgenden Java-Code-Beispiel werden Verbindungseigenschaften festgelegt, um AEM Forms aufzurufen, das auf JBoss bereitgestellt wird, und den EJB-Verbindungsmodus zu verwenden.

 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");

Festlegen des EJB-Verbindungsmodus für WebLogic

Im folgenden Java-Code-Beispiel werden Verbindungseigenschaften festgelegt, um AEM Forms aufzurufen, das auf WebLogic bereitgestellt wird, und den EJB-Verbindungsmodus zu verwenden.

 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");

Festlegen des EJB-Verbindungsmodus für WebSphere

Im folgenden Java-Code-Beispiel werden Verbindungseigenschaften festgelegt, um AEM Forms aufzurufen, das auf WebSphere bereitgestellt wird, und den EJB-Verbindungsmodus zu verwenden.

 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");

Festlegen des SOAP-Verbindungsmodus

Im folgenden Java-Code-Beispiel werden Verbindungseigenschaften im SOAP-Modus festgelegt, um AEM Forms aufzurufen, das 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");
NOTE
Wenn Sie den SOAP-Verbindungsmodus auswählen, müssen Sie sicherstellen, dass zusätzliche JAR-Dateien in den Klassenpfad Ihrer Client-Anwendung aufgenommen werden.

Festlegen von Verbindungseigenschaften, 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");
NOTE
Alle mit dem Programmieren mit AEM Forms verbundenen Java-Schnellstarts zeigen sowohl EJB- als auch SOAP-Verbindungseinstellungen.

Festlegen des SOAP-Verbindungsmodus mit benutzerdefiniertem Timeout-Limit für Anfragen

 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 Kontextobjekts 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 Methode authenticate 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 initPrincipal des com.adobe.idp.Context-Objekts auf, und übergeben Sie das AuthResult-Objekt wie im folgenden Code gezeigt:

 Context myCtx = new Context();
 myCtx.initPrincipal(authResult);

Anstatt die Eigenschaften DSC_CREDENTIAL_USERNAME oder DSC_CREDENTIAL_PASSWORD festzulegen, können Sie die Methode setContext des ServiceClientFactory-Objekts aufrufen und das com.adobe.idp.Context-Objekt übergeben. Wenn Sie eine-Benutzerin oder einen Benutzer von AEM Forms verwenden, um einen Dienst aufzurufen, stellen Sie sicher, dass sie bzw. 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);
NOTE
Vollständige Informationen zum Authentifizieren einer Person finden Sie unter Authentifizieren von Benutzenden.

Aufrufen von Szenarien invoking_scenarios-1

In diesem Abschnitt werden die folgenden Aufrufszenarien behandelt:

  • 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 AEM Forms-Cluster-Instanzen auf.

Client-Anwendung, 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 einer eigenen JVM ausgeführt wird und eine eigenständige AEM Forms-Instanz aufruft.

In diesem Szenario wird eine Client-Anwendung in einer eigenen JVM ausgeführt und ruft AEM Forms-Dienste auf.

NOTE
Dieses Szenario ist das Aufrufszenario, auf dem alle Schnellstarts basieren.

Client-Anwendung, die AEM Forms-Cluster-Instanzen aufruft client-application-invoking-clustered-aem-forms-instances

Das folgende Diagramm zeigt eine Client-Anwendung, die in einer eigenen JVM ausgeführt wird und eigenständige AEM Forms-Instanzen in einem Cluster aufruft.

Dieses Szenario ähnelt dem einer Client-Anwendung, die eine eigenständige AEM Forms-Instanz aufruft. Die Provider-URL ist jedoch unterschiedlich.  Wenn eine Client-Anwendung eine Verbindung zu einem bestimmten J2EE-Anwendungs-Server herstellen möchte, muss die Anwendung die URL ändern, um auf den jeweiligen J2EE-Anwendungs-Server zu verweisen.

Der Verweis auf einen bestimmten J2EE-Anwendungs-Server wird nicht empfohlen, da die Verbindung zwischen der Client-Anwendung und AEM Forms beendet wird, wenn der Anwendungs-Server beendet wird. Es wird empfohlen, dass die Provider-URL anstelle eines bestimmten J2EE-Anwendungs-Servers auf einen JNDI-Manager auf Zellenebene verweist.

Client-Anwendungen, die den SOAP-Verbindungsmodus verwenden, können den HTTP-Lastausgleichs-Port für den Cluster verwenden. Client-Anwendungen, die den EJB-Verbindungsmodus verwenden, können eine Verbindung zum EJB-Port eines bestimmten J2EE-Anwendungs-Servers herstellen. Diese Aktion behandelt den Lastausgleich zwischen Cluster-Knoten.

WebSphere

Das folgende Beispiel zeigt den Inhalt einer Datei „jndi.properties“, die zum Herstellen einer Verbindung mit AEM Forms verwendet wird, das in 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 zum Herstellen einer Verbindung mit AEM Forms verwendet wird, das in 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 zum Herstellen einer Verbindung mit AEM Forms verwendet wird, das in JBoss bereitgestellt wird.

 java.naming.factory.initial= org.jnp.interfaces.NamingContextFactory
 java.naming.provider.url= jnp://appserver1:1099, appserver2:1099,
 appserver3:1099
NOTE
Wenden Sie sich an Ihre Admins, um den Namen und die Port-Nummer des J2EE-Anwendungs-Servers zu ermitteln.

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

AEM Forms-Dienstvorgänge verwenden normalerweise PDF-Dokumente oder erzeugen welche. Wenn Sie einen Dienst aufrufen, ist es manchmal erforderlich, ein PDF-Dokument (oder andere Dokumenttypen, wie XML-Daten) an den Dienst zu übergeben. Ebenso ist es manchmal notwendig, ein vom Dienst zurückgegebenes PDF-Dokument zu verwenden. 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 Empfangsseite kann zusammengestellt (gleicher Host, gleiches Klassenladeprogramm), lokal (gleicher Host, anderes Klassenladeprogramm) oder remote (anderer Host) sein. Die Weitergabe von Dokumenteninhalten wird für jeden Fall optimiert. Befinden sich Sender und Empfänger beispielsweise auf demselben Host, 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 setContentType des com.adobe.idp.Document-Objekts 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.

NOTE
Um einen Speicherverlust in WebLogic bei der Verwendung eines com.adobe.idp.Document-Objekts zu vermeiden, lesen Sie die Dokumentinformationen in Schritten von 2048 Byte oder weniger. Mit dem folgenden Code werden beispielsweise die Dokumentinformationen in 2048-Byte-Blöcken gelesen:
        // 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 basierend auf einem anderen Dokument

 //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);

Erstellen eines Dokuments basierend auf einer Datei 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 des Festplattenlaufwerks „C:“. Dieser Konstruktor versucht, den MIME-Inhaltstyp des com.adobe.idp.Document-Objekts mithilfe der Dateinamenerweiterung festzulegen.

Der com.adobe.idp.DocumentKonstruktor, 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:

  1. Erstellen Sie ein java.io.File-Objekt.
  2. Rufen Sie die Methode copyToFile des com.adobe.idp.Document-Objekts auf und übergeben Sie das java.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 com.adobe.idp.Document-Objekts 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.

MIME-Typ
Beschreibung
application/pdf
PDF-Dokument
application/vnd.adobe.xdp+xml
XML Data Packaging (XDP), das für exportierte XFA-Formulare (XML Forms Architecture) verwendet wird
text/xml
Lesezeichen, Anhänge oder andere XML-Dokumente
application/vnd.fdf
Forms Data Format (FDF), das für exportierte Acrobat-Formulare verwendet wird
application/vnd.adobe.xfdf
Forms Data Format (XFDF), das für exportierte Acrobat-Formulare verwendet wird
application/rdf+xml
Aussagekräftiges Datenformat und XML
application/octet-stream
Generisches Datenformat
NULL
Nicht angegebener MIME-Typ

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 Host-Plattform 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 mithilfe einer stark typisierten Dienst-API aufgerufen werden, die als Java-Client-Bibliothek bekannt ist. Eine Java-Client-Bibliothek ist eine Reihe konkreter Klassen, die den Zugriff auf die im Dienst-Container bereitgestellten Dienste ermöglichen. 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.)

Rufen Sie zum Ausführen eines Dienstvorgangs eine Methode auf, die zu dem Java-Objekt gehört. Eine Java-Client-Bibliothek enthält Methoden, die in der Regel Dienstvorgängen eins-zu-eins zugeordnet sind. 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.

NOTE
Um zu erläutern, wie ein Dienst mithilfe der Java-API aufgerufen wird, wird der Vorgang writeResource des Repository-Dienstes aufgerufen. Durch diesen Vorgang wird eine neue Ressource in das Repository eingefügt.

Sie können den Repository-Dienst mit einer Java-Client-Bibliothek und den folgenden Schritten aufrufen:

  1. Schließen Sie Client-JAR-Dateien wie „adobe-output-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.

  2. Legen Sie die Verbindungseigenschaften fest, die zum Aufrufen eines Dienstes erforderlich sind.

  3. Erstellen Sie ein Objekt vom Typ ServiceClientFactory, indem Sie die statische Methode createInstance des ServiceClientFactory-Objekts aufrufen und das java.util.Properties-Objekt übergeben, das die Verbindungseigenschaften enthält.

  4. Erstellen Sie ein ResourceRepositoryClient-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory-Objekt übergeben. Verwenden Sie das ResourceRepositoryClient-Objekt, um Repository-Dienstvorgänge aufzurufen.

  5. Erstellen Sie ein RepositoryInfomodelFactoryBean-Objekt, indem Sie seinen Konstruktor verwenden, und übergeben Sie null. Mit diesem Objekt können Sie ein Resource-Objekt erstellen, das den Inhalt darstellt, der dem Repository hinzugefügt wird.

  6. Erstellen Sie ein Objekt vom Typ Resource, indem Sie die Methode newImage des RepositoryInfomodelFactoryBean-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().
    • Den Namen der Ressource. Sie können den Dateinamen der XDP-Datei angeben.

    Wandeln Sie den Rückgabewert in Resource um.

  7. Erstellen Sie ein Objekt vom Typ ResourceContent, indem Sie die MethodenewImage des RepositoryInfomodelFactoryBean-Objekts aufrufen und den Rückgabewert auf ResourceContent übertragen. Dieses Objekt stellt den Inhalt dar, der dem Repository hinzugefügt wird.

  8. Erstellen Sie ein com.adobe.idp.Document-Objekt indem Sie ein java.io.FileInputStreamObjekt übergeben, das die XDP-Datei speichert, die dem Repository hinzugefügt werden soll. (Siehe Erstellen eines Dokuments basierend auf einem InputStream-Objekt.)

  9. Fügen Sie den Inhalt des com.adobe.idp.Document-Objekts zum ResourceContent-Objekt hinzu, indem Sie die Methode setDataDocument des ResourceContent-Objekts aufrufen. Übergeben Sie das com.adobe.idp.Document-Objekt.

  10. Legen Sie den MIME-Typ der XDP-Datei fest, die dem Repository hinzugefügt werden soll, indem Sie die Methode setMimeType des ResourceContent-Objekts aufrufen und application/vnd.adobe.xdp+xml übergeben.

  11. Fügen Sie den Inhalt des ResourceContent-Objekts zum Resource-Objekt hinzu, indem Sie die Methode setContent des Resource-Objekts aufrufen und das ResourceContent-Objekt übergeben.

  12. Fügen Sie eine Beschreibung der Ressource hinzu, indem Sie die Methode setDescription des Resource-Objekts aufrufen und einen Zeichenfolgenwert übergeben, der eine Beschreibung der Ressource darstellt.

  13. Fügen Sie den Formularentwurf dem Repository hinzu, indem Sie die Methode writeResource des ResourceRepositoryClient-Objekts 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. Rufen Sie für jeden Parameter, der an einen Dienst übergeben werden soll, die Methode put des java.util.HashMap-Objekts auf und geben Sie das Namen-Wert-Paar an, das durch den Dienst erforderlich ist, um den angegebenen Vorgang durchzuführen. Geben Sie den genauen Namen der Parameter an, die zu dem kurzlebigen Prozess gehören.

NOTE
Informationen zum Aufrufen eines langlebigen Prozesses finden Sie unter Aufrufen von an Menschen orientierten langlebigen Prozessen.

In der folgenden Diskussion geht es um die Verwendung der Aufruf-API, um den folgenden kurzlebigen AEM Forms-Prozess namens MyApplication/EncryptDocument aufzurufen.

NOTE
Dieser Prozess basiert nicht auf einem vorhandenen AEM Forms-Prozess. Um dem Codebeispiel zu folgen, erstellen Sie einen Prozess mit dem Namen MyApplication/EncryptDocument in Workbench. (Siehe Verwenden von Workbench.)

Wenn dieser Prozess aufgerufen wird, führt er die folgenden Aktionen aus:

  1. 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 eine document-Prozessvariable mit dem Namen inDoc.
  2. 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 namens outDoc 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:

  1. Schließen Sie JAR-Dateien, beispielsweise „adobe-livecycle-client.jar“, in den Klassenpfad Ihres Java-Projekts ein.  (Siehe Einbeziehen von AEM Forms Java-Bibliotheksdateien.)

  2. Erstellen Sie ein ServiceClientFactory-Objekt, das Verbindungseigenschaften enthält. (Siehe Einstellung von Verbindungseigenschaften.)

  3. Erstellen Sie ein ServiceClient-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory-Objekt übergeben. Mit einem ServiceClient -Objekt können Sie einen Dienstvorgang aufrufen. Es erledigt Aufgaben wie das Auffinden, Versenden und Weiterleiten von Aufrufanforderungen.

  4. Erstellen Sie ein Objekt java.util.HashMap, indem Sie den Konstruktor verwenden.

  5. Rufen Sie die Methode put des java.util.HashMap-Objekts für jeden Eingabeparameter auf, der an den langlebigen Prozess übergeben werden soll. Da der kurzlebige Prozess MyApplication/EncryptDocument einen Eingabeparameter des Typs Document erfordert, müssen Sie nur die put-Methode einmal aufrufen, wie im folgenden Beispiel gezeigt.

    code language-java
     //Create a Map object to store the parameter value for inDoc
     Map params = new HashMap();
     InputStream inFile = new FileInputStream("C:\\Adobe\Loan.pdf");
     Document inDoc = new Document(inFile);
     params.put("inDoc", inDoc);
    
  6. Erstellen Sie ein Objekt vom Typ InvocationRequest, indem Sie die Methode createInvocationRequest des ServiceClientFactory-Objekts aufrufen und die folgenden Werte übergeben:

    • Ein string-Wert, der den Namen des langlebigen aufzurufenden Prozesses angibt. Geben Sie MyApplication/EncryptDocument an, um den MyApplication/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 trueangibt, wodurch eine synchrone Anforderung erstellt wird (dieser Wert kann für den Aufruf eines kurzlebigen Prozesses verwendet werden).
  7. Senden Sie die Aufrufanforderung an den Dienst, indem Sie die Methode invoke des ServiceClient-Objekts aufrufen und das InvocationRequest-Objekt übergeben. Die Methode invoke gibt ein InvocationReponse-Objekt zurück.

    note note
    NOTE
    Ein langlebiger Prozess kann aufgerufen werden, indem der Wert false als vierter Parameter der createInvocationRequest-Methode übergeben wird. Wenn Sie den Wert falseübergeben, wird eine asynchrone Anforderung erstellt.
  8. Rufen Sie den der Rückgabewert des Verfahrens ab, indem Sie die Methode getOutputParameter des InvocationReponse-Objekts aufrufen und einen Zeichenfolgenwert übergeben, der den Namen des Ausgangsparameters angibt. Geben Sie in dieser Situation outDoc an (outDoc ist der Name des Ausgabeparameters für den Prozess MyApplication/EncryptDocument ). Wandeln Sie den Rückgabewert in Document um, wie im folgenden Beispiel gezeigt.

    code language-java
     InvocationResponse response = myServiceClient.invoke(request);
     Document encryptDoc = (Document) response.getOutputParameter("outDoc");
    
  9. Erstellen Sie ein java.io.File-Objekt und stellen Sie sicher, dass die Dateierweiterung .pdf ist.

  10. Rufen Sie die Methode copyToFile des com.adobe.idp.Document-Objekts auf, um den Inhalt des com.adobe.idp.Document-Objekts in die Datei zu kopieren. Stellen Sie sicher, dass Sie das com.adobe.idp.Document-Objekt verwenden, das von der getOutputParameter-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

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2