Anropa AEM Forms med Java API invoking-aem-forms-using-the-javaapi
Exempel och exempel i det här dokumentet är bara för AEM Forms i JEE-miljö.
AEM Forms kan anropas med AEM Forms Java API. När du använder AEM Forms Java API kan du antingen använda anrops-API eller Java-klientbibliotek. Java-klientbibliotek är tillgängliga för tjänster som Rights Management. Med dessa starkt typbestämda API:er kan du utveckla Java-program som anropar AEM Forms.
Anrops-API:t är klasser som finns i com.adobe.idp.dsc
paket. Med dessa klasser kan du skicka en anropsbegäran direkt till en tjänst och hantera ett anropssvar som returneras. Använd anrops-API:t för att anropa kortlivade eller långvariga processer som skapats med Workbench.
Det rekommenderade sättet att programmässigt anropa en tjänst är att använda ett Java-klientbibliotek som motsvarar tjänsten i motsats till anrops-API:t. Om du till exempel vill anropa krypteringstjänsten använder du krypteringstjänstens klientbibliotek. Om du vill utföra en krypteringstjänståtgärd anropar du en metod som tillhör krypteringstjänstens klientobjekt. Du kan kryptera ett PDF-dokument med ett lösenord genom att anropa EncryptionServiceClient
objektets encryptPDFUsingPassword
-metod.
Java API har stöd för följande funktioner:
- RMI-transportprotokoll för fjärranrop
- VM-transport för lokalt anrop
- SOAP för fjärranrop
- Annan autentisering, till exempel användarnamn och lösenord
- Synkrona och asynkrona anropsbegäranden
Inkludera AEM Forms Java-biblioteksfiler
Anropa personalcentrerade, långlivade processer
Anropa AEM Forms med Web Services
Skicka data till AEM Forms-tjänster med Java API
Anropa en tjänst med ett Java-klientbibliotek
Anropa en kort process med anrops-API
Skapa ett Java-webbprogram som anropar en mänsklig, lång process
Inkludera AEM Forms Java-biblioteksfiler including-aem-forms-java-library-files
Om du vill anropa en AEM Forms-tjänst med hjälp av Java API:t inkluderar du nödvändiga biblioteksfiler (JAR-filer) i Java-projektets klassökväg. JAR-filerna som du inkluderar i klientprogrammets klassökväg beror på flera faktorer:
- Den AEM Forms-tjänst som ska anropas. Ett klientprogram kan anropa en eller flera tjänster.
- Det läge i vilket du vill anropa en AEM Forms-tjänst. Du kan använda EJB- eller SOAP-läget. (Se Ange anslutningsegenskaper.)
standalone.bat -b <Server IP> -c lc_turnkey.xml
för att ange en server-IP för EJB- J2EE-programservern som AEM Forms är distribuerad på.
Tjänstspecifika JAR-filer service-specific-jar-files
I följande tabell visas de JAR-filer som krävs för att anropa AEM Forms-tjänster.
adobe-repository-client.jar
comons-codec-1.3.jar
<installationskatalog>/sdk/client-libs/common
<installationskatalog>/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
Krävs för att anropa tjänsten Rights Management.
Om AEM Forms distribueras på JBoss inkluderar du alla dessa filer.
<installationskatalog>/sdk/client-libs/common
JBoss-specifik bibliotekskatalog
Anslutningsläge och JAR-filer för J2EE-program connection-mode-and-j2ee-application-jar-files
I följande tabell visas de JAR-filer som är beroende av anslutningsläget och J2EE-programservern som AEM Forms distribueras på.
</thead align="left">
-
activation.jar
-
axis.jar
-
comons-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
om AEM Forms distribueras på JBoss Application Server, inkludera denna JAR-fil.
Klassinläsaren hittar inte nödvändiga klasser om jboss-client.jar och de refererade burkarna inte finns tillsammans.
JBoss-klientbibliotekskatalog
Om du distribuerar klientprogrammet på samma J2EE-programserver behöver du inte inkludera den här filen.
WebLogic-specifik bibliotekskatalog
Om du distribuerar klientprogrammet på samma J2EE-programserver behöver du inte inkludera den här filen.
-
com.ibm.ws.admin.client_6.1.0.jar
-
com.ibm.ws.webservices.thinclient_6.1.0.jar
-
om AEM Forms distribueras på WebSphere Application Server, inkludera dessa JAR-filer.
-
(com.ibm.ws.webservices.thinclient_6.1.0.jar krävs för webbtjänstanrop).
WebSphere-specifik bibliotekskatalog ([WAS_HOME]/runtimes)
Om du distribuerar klientprogrammet på samma J2EE-programserver behöver du inte inkludera de här filerna.
Anropa scenarier invoking-scenarios
I följande tabell anges vilka scenarier som anropas och vilka JAR-filer som krävs för att anropa AEM Forms.
</thead align="left"> xmp-tur
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
- jboss-client.jar
- adobe-forms-client.jar
- commons-httpclient-3.1.jar
Forms
Acrobat Reader DC-tilläggstjänst
Signaturtjänst
-
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
-
comons-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
Acrobat Reader DC-tilläggstjänst
Signaturtjänst
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
-
wlclient.jar
-
activation.jar
-
axis.jar
-
comons-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
Uppgraderar JAR-filer upgrading-jar-files
Om du uppgraderar från LiveCycle till AEM Forms bör du ta med AEM Forms JAR-filerna i Java-projektets klassökväg. Om du till exempel använder tjänster som Rights Management stöter du på ett kompatibilitetsproblem om du inte inkluderar AEM Forms JAR-filer i klassökvägen.
Anta att du uppgraderar till AEM Forms. Om du vill använda ett Java-program som anropar tjänsten Rights Management inkluderar du AEM Forms-versionerna av följande JAR-filer:
- adobe-rightsmanagement-client.jar
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
Se även
Skicka data till AEM Forms-tjänster med Java API
Anropa en tjänst med ett Java-klientbibliotek
Ange anslutningsegenskaper setting-connection-properties
Du anger anslutningsegenskaper som anropar AEM Forms när du använder Java API. När du anger anslutningsegenskaper anger du om tjänsterna ska anropas från fjärrdatorn eller lokalt, och anger även anslutnings- och autentiseringsvärden. Autentiseringsvärden krävs om tjänstsäkerhet är aktiverat. Om tjänstsäkerhet är inaktiverad behöver du inte ange autentiseringsvärden.
Anslutningsläget kan antingen vara SOAP- eller EJB-läge. I EJB-läget används RMI/IIOP-protokollet, och prestanda för EJB-läget är bättre än för SOAP-läget. SOAP-läget används för att ta bort ett J2EE-serverberoende eller när en brandvägg finns mellan AEM Forms och klientprogrammet. SOAP-läget använder https-protokollet som underliggande transport och kan kommunicera över brandväggsgränserna. Om varken ett J2EE-programserverberoende eller en brandvägg är ett problem rekommenderar vi att du använder EJB-läget.
Om du vill anropa en AEM Forms-tjänst anger du följande anslutningsegenskaper:
-
DSC_DEFAULT_EJB_ENDPOINT: Om du använder EJB-anslutningsläget representerar det här värdet URL:en för J2EE-programservern som AEM Forms distribueras på. Om du vill fjärranropa AEM Forms anger du namnet på J2EE-programservern som AEM Forms distribueras på. Om klientprogrammet finns på samma J2EE-programserver kan du ange
localhost
. Beroende på vilken J2EE-programserver AEM Forms distribueras på anger du något av följande värden:- JBoss:
https://<ServerName>:8080 (default port)
- WebSphere:
iiop://<ServerName>:2809 (default port)
- WebLogic:
t3://<ServerName>:7001 (default port)
- JBoss:
-
DSC_DEFAULT_SOAP_ENDPOINT: Om du använder SOAP-anslutningsläget representerar det här värdet slutpunkten dit en anropsbegäran skickas. Om du vill fjärranropa AEM Forms anger du namnet på J2EE-programservern som AEM Forms distribueras på. Om klientprogrammet finns på samma J2EE-programserver kan du ange
localhost
(till exempelhttp://localhost:8080
.)- Portvärdet
8080
är tillämpligt om J2EE-programmet är JBoss. Om J2EE-programservern är IBM® WebSphere® ska du använda port9080
. Om J2EE-programservern är WebLogic använder du port på samma sätt7001
. (Dessa värden är standardportvärden. Om du ändrar portvärdet använder du det tillämpliga portnumret.)
- Portvärdet
-
DSC_TRANSPORT_PROTOCOL: Om du använder EJB-anslutningsläget anger du
ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
för det här värdet. Om du använder SOAP-anslutningsläget anger duServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
. -
DSC_SERVER_TYPE: Anger J2EE-programservern som AEM Forms distribueras på. Giltiga värden är
JBoss
,WebSphere
,WebLogic
.- Om du ställer in den här anslutningsegenskapen på
WebSphere
,java.naming.factory.initial
värdet är inställt påcom.ibm.ws.naming.util.WsnInitCtxFactory
. - Om du ställer in den här anslutningsegenskapen på
WebLogic
,java.naming.factory.initial
värdet är inställt påweblogic.jndi.WLInitialContextFactory
. - Om du anger den här anslutningsegenskapen som
JBoss
,java.naming.factory.initial
värdet är inställt påorg.jnp.interfaces.NamingContextFactory
. - Du kan ange
java.naming.factory.initial
till ett värde som uppfyller dina krav om du inte vill använda standardvärdena.
note note NOTE I stället för att använda en sträng för att ange DSC_SERVER_TYPE
anslutningsegenskapen kan du använda en statisk medlem iServiceClientFactoryProperties
klassen. Följande värden kan användas:ServiceClientFactoryProperties.DSC_WEBSPHERE_SERVER_TYPE
,ServiceClientFactoryProperties.DSC_WEBLOGIC_SERVER_TYPE
, ellerServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE
. - Om du ställer in den här anslutningsegenskapen på
-
DSC_CREDENTIAL_USERNAME: Anger AEM användarnamn. För att en användare ska kunna anropa en AEM Forms-tjänst måste användaren ha användarrollen Tjänster. En användare kan även ha en annan roll som inkluderar behörigheten Tjänstanrop. Annars genereras ett undantag när de försöker anropa en tjänst. Om tjänstsäkerhet är inaktiverad behöver du inte ange den här anslutningsegenskapen.
-
DSC_CREDENTIAL_PASSWORD: Anger motsvarande lösenordsvärde. Om tjänstsäkerhet är inaktiverad behöver du inte ange den här anslutningsegenskapen.
-
DSC_REQUEST_TIMEOUT: Standardtidsgränsen för SOAP-begäran är 1200000 millisekunder (20 minuter). Ibland kan en begäran ta längre tid att slutföra åtgärden. En SOAP-begäran som hämtar en stor uppsättning poster kan till exempel kräva en längre tidsgräns. Du kan använda
ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT
för att öka tidsgränsen för begärandeanrop för SOAP-begäranden.anteckning: Endast SOAP-baserade anrop stöder egenskapen DSC_REQUEST_TIMEOUT.
Utför följande åtgärder för att ange anslutningsegenskaper:
-
Skapa en
java.util.Properties
genom att använda dess konstruktor. -
Så här anger du
DSC_DEFAULT_EJB_ENDPOINT
connection, anropajava.util.Properties
objektetssetProperty
och skicka följande värden:- The
ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
uppräkningsvärde - Ett strängvärde som anger URL:en för J2EE-programservern som är värd för AEM Forms
note note NOTE Om du använder SOAP-anslutningsläget anger du ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT
uppräkningsvärde i stället förServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
uppräkningsvärde. - The
-
Så här anger du
DSC_TRANSPORT_PROTOCOL
connection, anropajava.util.Properties
objektetssetProperty
och skicka följande värden:- The
ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL
uppräkningsvärde - The
ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
uppräkningsvärde
note note NOTE Om du använder SOAP-anslutningsläget anger du ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
uppräkningsvärde i stället förServiceClientFactoryProperties.DSC_EJB_PROTOCOL
uppräkningsvärde. - The
-
Så här anger du
DSC_SERVER_TYPE
connection, anropajava.util.Properties
objektetssetProperty
och skicka följande värden:-
The
ServiceClientFactoryProperties.DSC_SERVER_TYPE
uppräkningsvärde -
Ett strängvärde som anger den J2EE-programserver som är värd för AEM Forms (om AEM Forms till exempel distribueras på JBoss, anger du
JBoss
).- Så här anger du
DSC_CREDENTIAL_USERNAME
connection, anropajava.util.Properties
objektetssetProperty
och skicka följande värden:
- Så här anger du
-
The
ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME
uppräkningsvärde -
Ett strängvärde som anger vilket användarnamn som krävs för att anropa AEM Forms
- Så här anger du
DSC_CREDENTIAL_PASSWORD
connection, anropajava.util.Properties
objektetssetProperty
och skicka följande värden:
- Så här anger du
-
The
ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD
uppräkningsvärde -
Ett strängvärde som anger motsvarande lösenordsvärde
-
Ställa in EJB-anslutningsläget för JBoss
I följande Java-kodexempel ställs anslutningsegenskaperna in så att AEM Forms anropas i JBoss och EJB-anslutningsläget används.
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");
Ställa in EJB-anslutningsläget för WebLogic
I följande Java-kodexempel ställs anslutningsegenskaperna in så att AEM Forms anropas i WebLogic och EJB-anslutningsläget används.
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");
Ställa in EJB-anslutningsläget för WebSphere
I följande Java-kodexempel ställs anslutningsegenskaperna in så att AEM Forms anropas i WebSphere och EJB-anslutningsläget används.
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");
Ställa in SOAP-anslutningsläget
I följande Java-kodexempel ställs anslutningsegenskaperna in i SOAP-läge så att AEM Forms anropas i JBoss.
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://localhost:8080");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
Ange anslutningsegenskaper när tjänstsäkerhet är inaktiverat
I följande Java-kodexempel ställs anslutningsegenskaper in som krävs för att anropa AEM Forms som distribueras på JBoss Application Server och när tjänstsäkerhet är inaktiverad.
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");
Ställa in SOAP-anslutningsläget med tidsgräns för anpassad begäran
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
Anropa AEM Forms med ett Context-objekt
Du kan använda en com.adobe.idp.Context
objekt för att anropa en AEM Forms-tjänst med en autentiserad användare ( com.adobe.idp.Context
-objektet representerar en autentiserad användare). När en com.adobe.idp.Context
-objekt, du behöver inte ange DSC_CREDENTIAL_USERNAME
eller DSC_CREDENTIAL_PASSWORD
egenskaper. Du kan få en com.adobe.idp.Context
när du autentiserar användare med AuthenticationManagerServiceClient
objektets authenticate
-metod.
The authenticate
returnerar en AuthResult
objekt som innehåller autentiseringsresultatet. Du kan skapa com.adobe.idp.Context
genom att anropa dess konstruktor. Anropa sedan com.adobe.idp.Context
objektets initPrincipal
och skicka AuthResult
-objekt, vilket visas i följande kod:
Context myCtx = new Context();
myCtx.initPrincipal(authResult);
I stället för att ange DSC_CREDENTIAL_USERNAME
eller DSC_CREDENTIAL_PASSWORD
-egenskaper kan du anropa ServiceClientFactory
objektets setContext
och skicka com.adobe.idp.Context
-objekt. När du använder en AEM formuläranvändare för att anropa en tjänst måste du se till att de har rollen namngiven Services User
som krävs för att anropa en AEM Forms-tjänst.
I följande kodexempel visas hur du använder en com.adobe.idp.Context
objekt i anslutningsinställningar som används för att skapa ett EncryptionServiceClient
-objekt.
//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);
Anropa scenarier invoking_scenarios-1
Följande scenarier beskrivs i det här avsnittet:
- Ett klientprogram som körs i en egen Java Virtual Machine (JVM) anropar en fristående AEM Forms-instans.
- Ett klientprogram som körs i en egen JVM anropar klustrade AEM Forms-instanser.
Klientprogram som anropar en fristående AEM Forms-instans client-application-invoking-a-stand-alone-aem-forms-instance
I följande diagram visas ett klientprogram som körs i en egen JVM och som anropar en fristående AEM Forms-instans.
I det här scenariot körs ett klientprogram i sin egen JVM och anropar AEM Forms tjänster.
Klientprogrammet anropar klustrade AEM Forms-instanser client-application-invoking-clustered-aem-forms-instances
I följande diagram visas ett klientprogram som körs i en egen JVM och som anropar AEM Forms-instanser i ett kluster.
Detta scenario liknar ett klientprogram som anropar en fristående AEM Forms-instans. Providerns URL är dock annorlunda. Om ett klientprogram vill ansluta till en specifik J2EE-programserver måste programmet ändra URL:en så att den refererar till den specifika J2EE-programservern.
Du bör inte referera till en specifik J2EE-programserver eftersom anslutningen mellan klientprogrammet och AEM Forms avbryts om programservern avbryts. Vi rekommenderar att provider-URL refererar till en JNDI-hanterare på cellnivå i stället för en specifik J2EE-programserver.
Klientprogram som använder SOAP-anslutningsläget kan använda HTTP-belastningsutjämnarporten för klustret. Klientprogram som använder EJB-anslutningsläget kan ansluta till EJB-porten för en viss J2EE-programserver. Den här åtgärden hanterar belastningsutjämning mellan klusternoder.
WebSphere
I följande exempel visas innehållet i en jndi.properties-fil som används för att ansluta till AEM Forms som distribueras på WebSphere.
java.naming.factory.initial=com.ibm.websphere.naming.
WsnInitialContextFactory
java.naming.provider.url=corbaloc::appserver1:9810,:appserver2:9810
WebLogic (på engelska)
I följande exempel visas innehållet i en jndi.properties-fil som används för att ansluta till AEM Forms som distribueras på WebLogic.
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://appserver1:8001, appserver2:8001
JBoss
I följande exempel visas innehållet i en jndi.properties-fil som används för att ansluta till AEM Forms som distribueras på JBoss.
java.naming.factory.initial= org.jnp.interfaces.NamingContextFactory
java.naming.provider.url= jnp://appserver1:1099, appserver2:1099,
appserver3:1099
Se även
Inklusive AEM Forms Java-biblioteksfiler
Skicka data till AEM Forms-tjänster med Java API
Anropa en tjänst med hjälp av ett Java-klientbibliotek
Skicka data till AEM Forms-tjänster med Java API passing-data-to-aem-forms-services-using-the-java-api
AEM Forms serviceverksamhet använder eller producerar vanligtvis PDF-dokument. När du anropar en tjänst kan det ibland vara nödvändigt att skicka ett PDF-dokument (eller andra dokumenttyper som XML-data) till tjänsten. Ibland är det också nödvändigt att hantera ett PDF-dokument som returneras från tjänsten. Java-klassen som gör att du kan skicka data till och från AEM Forms tjänster är com.adobe.idp.Document
.
AEM Forms tjänster accepterar inte ett PDF-dokument som andra datatyper, som java.io.InputStream
objekt eller en bytearray. A com.adobe.idp.Document
kan också användas för att skicka andra typer av data, som XML-data, till tjänster.
A com.adobe.idp.Document
objektet är en Java-serialiserbar typ, så det kan skickas över ett RMI-anrop. Mottagande sida kan sorteras (samma värd, samma klassinläsare), lokal (samma värd, annan klassinläsare) eller fjärransluten (en annan värd). Dokumentinnehållet är optimerat för varje enskilt fall. Om till exempel avsändaren och mottagaren finns på samma värd, överförs innehållet via ett lokalt filsystem. (I vissa fall kan dokument skickas i minnet.)
Beroende på com.adobe.idp.Document
objektstorlek, data finns i com.adobe.idp.Document
eller lagras på serverns filsystem. Alla tillfälliga lagringsresurser som används av com.adobe.idp.Document
-objektet tas bort automatiskt när com.adobe.idp.Document
bortskaffande. (Se Disponera dokumentobjekt.)
Ibland är det nödvändigt att känna till innehållstypen för en com.adobe.idp.Document
innan du skickar det till en tjänst. Om en åtgärd till exempel kräver en viss innehållstyp, som application/pdf
rekommenderar vi att du bestämmer innehållstypen. (Se Bestämma innehållstypen för ett dokument.)
The com.adobe.idp.Document
-objektet försöker att bestämma innehållstypen med hjälp av angivna data. Om innehållstypen inte kan hämtas från de data som anges (till exempel när data har angetts som en bytearray), anger du innehållstypen. Ange innehållstypen genom att anropa com.adobe.idp.Document
objektets setContentType
-metod. (Se Bestämma innehållstypen för ett dokument)
Om det finns flera filer i samma filsystem skapar du en com.adobe.idp.Document
objektet är snabbare. Om det finns filer som kan användas i fjärranslutna filsystem måste en kopieringsåtgärd utföras, vilket påverkar prestandan.
Ett program kan innehålla båda com.adobe.idp.Document
och org.w3c.dom.Document
datatyper. Se dock till att du är fullständigt berättigad till org.w3c.dom.Document
datatyp. Mer information om hur du konverterar en org.w3c.dom.Document
objekt till com.adobe.idp.Document
objekt, se Snabbstart (EJB-läge): Fylla i Forms i förväg med flödeslayouter med Java API.
com.adobe.idp.Document
kan du läsa dokumentinformationen i segment om högst 2 048 byte. Följande kod läser dokumentinformationen i segment om 2 048 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();
Se även
Skapa dokument creating-documents
Skapa en com.adobe.idp.Document
innan du anropar en tjänståtgärd som kräver ett PDF-dokument (eller andra dokumenttyper) som indatavärde. The com.adobe.idp.Document
-klassen innehåller konstruktorer som gör att du kan skapa ett dokument av följande innehållstyper:
- En bytearray
- En befintlig
com.adobe.idp.Document
object - A
java.io.File
object - A
java.io.InputStream
object - A
java.net.URL
object
Skapa ett dokument baserat på en bytearray creating-a-document-based-on-a-byte-array
I följande kodexempel skapas en com.adobe.idp.Document
objekt som baseras på en bytearray.
Skapa ett Document-objekt som baseras på en bytearray
Document myPDFDocument = new Document(myByteArray);
Skapa ett dokument baserat på ett annat dokument creating-a-document-based-on-another-document
I följande kodexempel skapas en com.adobe.idp.Document
objekt som baseras på ett annat com.adobe.idp.Document
-objekt.
Skapa ett Document-objekt som baseras på ett annat 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);
Skapa ett dokument baserat på en fil creating-a-document-based-on-a-file
I följande kodexempel skapas en com.adobe.idp.Document
objekt som baseras på en PDF-fil med namnet map.pdf. Den här filen finns i roten på hårddisken C. Den här konstruktorn försöker ange MIME-innehållstypen för com.adobe.idp.Document
objekt med filnamnstillägget.
The com.adobe.idp.Document
konstruktor som accepterar java.io.File
-objektet accepterar också en Boolean-parameter. Genom att ställa in den här parametern på true
, com.adobe.idp.Document
-objektet tar bort filen. Den här åtgärden innebär att du inte behöver ta bort filen efter att du har skickat den till com.adobe.idp.Document
konstruktor.
Anger den här parametern till false
innebär att du behåller äganderätten till den här filen. Anger den här parametern till true
är mer effektivt. Orsaken är att com.adobe.idp.Document
kan flytta filen direkt till det lokala hanterade området i stället för att kopiera den (vilket är långsammare).
Skapa ett Document-objekt som baseras på en PDF-fil
//Create a Document object based on the map.pdf source file
File mySourceMap = new File("C:\\map.pdf");
Document myPDFDocument = new Document(mySourceMap,true);
Skapa ett dokument baserat på ett InputStream-objekt creating-a-document-based-on-an-inputstream-object
I följande Java-kodexempel skapas en com.adobe.idp.Document
objekt som baseras på java.io.InputStream
-objekt.
Skapa ett dokument baserat på ett InputStream-objekt
//Create a Document object based on an InputStream object
InputStream is = new FileInputStream("C:\\Map.pdf");
Document myPDFDocument = new Document(is);
Skapa ett dokument baserat på innehåll som är tillgängligt från en URL creating-a-document-based-on-content-accessible-from-an-url
I följande Java-kodexempel skapas en com.adobe.idp.Document
objekt som baseras på en PDF-fil med namnet map.pdf. Den här filen finns i ett webbprogram med namnet WebApp
som körs på localhost
. Den här konstruktorn försöker ange com.adobe.idp.Document
objektets MIME-innehållstyp som använder innehållstypen som returneras med URL-protokollet.
Den URL som anges för com.adobe.idp.Document
objektet läses alltid på den sida där originalet finns com.adobe.idp.Document
objektet skapas, vilket visas i det här exemplet:
Document doc = new Document(new java.net.URL("file:c:/temp/input.pdf"));
Filen c:/temp/input.pdf måste finnas på klientdatorn (inte på serverdatorn). Klientdatorn är den plats där URL:en läses och där com.adobe.idp.Document
objektet skapades.
Skapa ett dokument baserat på innehåll som är tillgängligt från en URL
//Create a Document object based on a java.net.URL object
URL myURL = new URL("http", "localhost", 8080,"/WebApp/map.pdf");
//Create another Document object
Document myPDFDocument = new Document(myURL);
Se även
Ställa in förbindningsegenskaper
Hantering av returnerade dokument handling-returned-documents
Tjänståtgärder som returnerar ett PDF-dokument (eller andra datatyper, till exempel XML-data) som ett utdatavärde returnerar ett com.adobe.idp.Document
objekt. När du har fått ett com.adobe.idp.Document
objekt kan du konvertera det till följande format:
- Ett
java.io.File
objekt - Ett
java.io.InputStream
objekt - En bytearray
Följande kodrad konverterar en com.adobe.idp.Document
objekt till java.io.InputStream
-objekt. Anta att myPDFDocument
representerar en com.adobe.idp.Document
objekt:
java.io.InputStream resultStream = myDocument.getInputStream();
På samma sätt kan du kopiera innehållet i en com.adobe.idp.Document
till en lokal fil genom att utföra följande uppgifter:
- Skapa en
java.io.File
-objekt. - Anropa
com.adobe.idp.Document
objektetscopyToFile
och skickajava.io.File
-objekt.
I följande kodexempel kopieras innehållet i en com.adobe.idp.Document
objekt till en fil med namnet anotherMap.pdf.
Kopiera innehållet i ett dokumentobjekt till en fil
File outFile = new File("C:\\AnotherMap.pdf");
myDocument.copyToFile (outFile);
Se även
Bestämma innehållstypen för ett dokument determining-the-content-type-of-a-document
Bestämma MIME-typen för en com.adobe.idp.Document
genom att anropa com.adobe.idp.Document
objektets getContentType
-metod. Den här metoden returnerar ett strängvärde som anger innehållstypen för com.adobe.idp.Document
-objekt. I följande tabell beskrivs de olika innehållstyper som AEM Forms returnerar.
application/pdf
application/vnd.adobe.xdp+xml
text/xml
application/vnd.fdf
application/vnd.adobe.xfdf
application/rdf+xml
application/octet-stream
NULL
I följande kodexempel avgörs innehållstypen för en com.adobe.idp.Document
-objekt.
Bestämma innehållstypen för ett Document-objekt
//Determine the content type of the Document object
String ct = myDocument.getContentType();
System.out.println("The content type of the Document object is " +ct);
Se även
Disponera dokumentobjekt disposing-document-objects
När du inte längre behöver en Document
, bör du ta bort det genom att anropa dess dispose
-metod. Varje Document
-objektet använder en filbeskrivning och så mycket som 75 MB RAM-utrymme på programmets värdplattform. Om en Document
objektet inte tas bort, tas det bort av Java Garage-samlingsprocessen. Genom att kassera den tidigare genom att använda dispose
kan du frigöra minne som upptas av Document
-objekt.
Se även
Inkludera AEM Forms Java-biblioteksfiler
Anropa en tjänst med ett Java-klientbibliotek
Anropa en tjänst med ett Java-klientbibliotek invoking-a-service-using-a-java-client-library
AEM Forms tjänståtgärder kan anropas med hjälp av en tjänsts starkt typbestämda API, som kallas Java-klientbibliotek. A Java-klientbibliotek är en uppsättning konkreta klasser som ger tillgång till tjänster som distribueras i tjänstbehållaren. Du instansierar ett Java-objekt som representerar tjänsten som ska anropas i stället för att skapa ett InvocationRequest
genom att använda anrops-API:t. Anrops-API:t används för att anropa processer, till exempel långvariga processer, som skapats i Workbench. (Se Anropa personalcentrerade, långlivade processer.)
Om du vill utföra en tjänståtgärd anropar du en metod som tillhör Java-objektet. Ett Java-klientbibliotek innehåller metoder som vanligtvis mappar en-till-en med serviceåtgärder. Ange nödvändiga anslutningsegenskaper när du använder ett Java-klientbibliotek. (Se Ange anslutningsegenskaper.)
Skapa en ServiceClientFactory
-objekt som används för att instansiera ett Java-objekt som gör att du kan anropa en tjänst. Varje tjänst som har ett Java-klientbibliotek har ett motsvarande klientobjekt. Om du till exempel vill anropa tjänsten Databas skapar du en ResourceRepositoryClient
genom att använda konstruktorn och skicka ServiceClientFactory
-objekt. Objektet ServiceClientFactory
ansvarar för att underhålla de anslutningsinställningar som krävs för att anropa AEM Forms-tjänster.
Trots att du får en ServiceClientFactory
är vanligtvis snabb, en del overheadkostnader uppstår när fabriken används för första gången. Det här objektet är optimerat för återanvändning och därför, när det är möjligt, ska du använda samma ServiceClientFactory
när du skapar flera Java-klientobjekt. Det vill säga, skapa inte en separat ServiceClientFactory
-objekt för varje klientbiblioteksobjekt som du skapar.
Det finns en inställning för användarhantering som styr livslängden för SAML-försäkran som finns i com.adobe.idp.Context
objekt som påverkar ServiceClientFactory
-objekt. Den här inställningen styr alla livstider för autentiseringskontext i hela AEM Forms, inklusive alla anrop som utförs med Java API. Som standard den tidsperiod under vilken ServiceCleintFactory
-objektet kan användas i två timmar.
writeResource
åtgärden anropas. Den här åtgärden placerar en ny resurs i databasen.Du kan anropa databastjänsten med hjälp av ett Java-klientbibliotek och genom att utföra följande steg:
-
Inkludera JAR-klientfiler, till exempel adobe-repository-client.jar, i Java-projektets klassökväg. Information om platsen för dessa filer finns i Inkludera AEM Forms Java-biblioteksfiler.
-
Ange anslutningsegenskaper som krävs för att anropa en tjänst.
-
Skapa en
ServiceClientFactory
genom att anropaServiceClientFactory
objektets statiskacreateInstance
metoden och skickajava.util.Properties
objekt som innehåller anslutningsegenskaper. -
Skapa ett
ResourceRepositoryClient
objekt med hjälp av dess konstruktor och skickaServiceClientFactory
objektet. Använd objektetResourceRepositoryClient
för att anropa åtgärder för databastjänsten. -
Skapa ett
RepositoryInfomodelFactoryBean
objekt med hjälp av dess konstruktor och skickanull
. Med det här objektet kan du skapa ettResource
objekt som representerar det innehåll som läggs till i databasen. -
Skapa ett
Resource
objekt genom att anropaRepositoryInfomodelFactoryBean
objektetsnewImage
metod och skicka följande värden:- Ett unikt ID-värde genom att ange
new Id()
. - Ett unikt UUID-värde genom att ange
new Lid()
. - Resursens namn. Du kan ange filnamnet för XDP-filen.
Skicka returvärdet till
Resource
. - Ett unikt ID-värde genom att ange
-
Skapa en
ResourceContent
genom att anropaRepositoryInfomodelFactoryBean
objektetsnewImage
metod och datatypsbyte av returvärdet tillResourceContent
. Det här objektet representerar innehållet som läggs till i databasen. -
Skapa en
com.adobe.idp.Document
objekt genom att skicka ettjava.io.FileInputStream
objekt som lagrar XDP-filen som ska läggas till i databasen. (Se Skapa ett dokument baserat på ett InputStream-objekt.) -
Lägg till innehållet i
com.adobe.idp.Document
objekt tillResourceContent
genom att anropaResourceContent
objektetssetDataDocument
-metod. Skickacom.adobe.idp.Document
-objekt. -
Ange MIME-typen för XDP-filen som ska läggas till i databasen genom att anropa
ResourceContent
objektetssetMimeType
metod och att skickaapplication/vnd.adobe.xdp+xml
. -
Lägg till innehållet i
ResourceContent
objekt tillResource
genom att anropaResource
objektsetContent
metoden och skickaResourceContent
-objekt. -
Lägg till en beskrivning av resursen genom att anropa
Resource
objektsetDescription
och skickar ett strängvärde som representerar en beskrivning av resursen. -
Lägg till formulärdesignen i databasen genom att anropa
ResourceRepositoryClient
objektetswriteResource
och skicka följande värden:- Ett strängvärde som anger sökvägen till resurssamlingen som innehåller den nya resursen
- The
Resource
objekt som skapades
Se även
Snabbstart (EJB-läge): Skriva en resurs med Java API
Inkludera AEM Forms Java-biblioteksfiler
Anropa en kort process med anrops-API invoking-a-short-lived-process-using-the-invocation-api
Du kan anropa en kort process med Java Anvocation API. När du anropar en kort process med anrops-API:t skickar du obligatoriska parametervärden med hjälp av en java.util.HashMap
-objekt. För varje parameter som ska skickas till en tjänst anropar du java.util.HashMap
objektets put
och ange det namn/värde-par som krävs för att tjänsten ska kunna utföra den angivna åtgärden. Ange det exakta namnet på parametrarna som tillhör den kortvariga processen.
Här handlar det om hur du använder anrops-API för att anropa följande kortlivade AEM Forms-process med namnet MyApplication/EncryptDocument
.
MyApplication/EncryptDocument
med Workbench. (Se Använda Workbench.)När processen anropas utför den följande åtgärder:
- Hämtar det oskyddade PDF-dokumentet som skickas till processen. Den här åtgärden baseras på
SetValue
operation. Indataparametern för den här processen ärdocument
processvariabel namngiveninDoc
. - Krypterar PDF-dokumentet med ett lösenord. Den här åtgärden baseras på
PasswordEncryptPDF
operation. Lösenordskrypterade PDF-dokument returneras i en processvariabel med namnetoutDoc
.
Anropa den kortvariga processen MyApplication/EncryptDocument med hjälp av Java-anrops-API invoke-the-myapplication-encryptdocument-short-lived-process-using-the-java-invocation-api
Anropa MyApplication/EncryptDocument
en kort process med Java-anrops-API:
-
Inkludera JAR-klientfiler, t.ex. adobe-livecycle-client.jar, i Java-projektets klassökväg. (Se Inkludera AEM Forms Java-biblioteksfiler.)
-
Skapa en
ServiceClientFactory
objekt som innehåller anslutningsegenskaper. (Se Ange anslutningsegenskaper.) -
Skapa en
ServiceClient
genom att använda konstruktorn och skickaServiceClientFactory
-objekt. AServiceClient
kan du anropa en tjänståtgärd. Det hanterar uppgifter som att hitta, skicka och dirigera anropsbegäranden. -
Skapa en
java.util.HashMap
genom att använda dess konstruktor. -
Anropa
java.util.HashMap
objektetsput
metod för varje indataparameter som ska skickas till den långvariga processen. På grund avMyApplication/EncryptDocument
för en kort process krävs en indataparameter av typenDocument
behöver du bara anropaput
-metoden en gång, som i följande exempel.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);
-
Skapa en
InvocationRequest
genom att anropaServiceClientFactory
objektetscreateInvocationRequest
och skicka följande värden:- Ett strängvärde som anger namnet på den långvariga process som ska anropas. Anropa
MyApplication/EncryptDocument
process, angeMyApplication/EncryptDocument
. - Ett strängvärde som representerar processåtgärdens namn. Vanligtvis är namnet på en kortvarig processåtgärd
invoke
. - The
java.util.HashMap
objekt som innehåller de parametervärden som tjänståtgärden kräver. - Ett booleskt värde som anger
true
, som skapar en synkron begäran (det här värdet kan användas för att anropa en kortlivad process).
- Ett strängvärde som anger namnet på den långvariga process som ska anropas. Anropa
-
Skicka anropsbegäran till tjänsten genom att anropa
ServiceClient
objektetsinvoke
metoden och skickaInvocationRequest
-objekt. Theinvoke
returnerar enInvocationReponse
-objekt.note note NOTE En långvarig process kan anropas genom att värdet skickas false
som den fjärde parametern icreateInvocationRequest
-metod. Skickar värdetfalse
skapar en asynkron begäran. -
Hämta processens returvärde genom att anropa
InvocationReponse
objektetsgetOutputParameter
och skickar ett strängvärde som anger utdataparameterns namn. I den här situationen bör du specificeraoutDoc
(outDoc
är namnet på utdataparametern förMyApplication/EncryptDocument
-processen). Skicka returvärdet tillDocument
, vilket visas i följande exempel.code language-java InvocationResponse response = myServiceClient.invoke(request); Document encryptDoc = (Document) response.getOutputParameter("outDoc");
-
Skapa en
java.io.File
och se till att filtillägget är .pdf. -
Anropa
com.adobe.idp.Document
objektetscopyToFile
metod för att kopiera innehållet icom.adobe.idp.Document
till filen. Se till att du användercom.adobe.idp.Document
objekt som returneras avgetOutputParameter
-metod.
Se även
Snabbstart: Anropa en kort process med anrops-API
Anropa personalcentrerade, långlivade processer
Inkludera AEM Forms Java-biblioteksfiler