Quick Start: Invoking a short-lived process using the Invocation API

The following Java code example invokes a short-lived process named MyApplication/EncryptDocument. Notice that this process is invoked synchronously. The input parameter for this process is named inDoc. The output parameter for this process is named outDoc. The password encrypted PDF document is saved as a PDF file named EncryptLoan.pdf. (See Invoking a short-lived process using the Invocation API.)

/* 
    * This Java Quick Start uses the EJB mode and contains the following JAR files 
    * in the class path: 
    * 1. adobe-convertpdf-client.jar 
    * 2. adobe-livecycle-client.jar 
    * 3. adobe-usermanager-client.jar 
    * 4. adobe-utilities.jar 
    * 5. jbossall-client.jar (use a different JAR file if the LiveCycle Server is not deployed 
    * on JBoss) 
    * 6. jacorb.jar (use a different JAR file if the LiveCycle Server is not deployed on JBoss) 
    * 7. jnp-client.jar (use a different JAR file if the LiveCycle Server is not deployed on JBoss) 
    *  
    *  The JBoss files must be kept in the jboss\client folder. You can copy the client folder to  
    *  your local development environment and then include the 3 JBoss JAR files in your class path 
    *   
    *  These JAR files are located in the following path: 
    * <install directory>/sdk/client-libs/common 
    *  
    * The adobe-utilities.jar file is located in the following path: 
    * <install directory>/sdk/client-libs/jboss 
    *  
    * The jbossall-client.jar file is located in the following path: 
    * <install directory>/jboss/client 
    *  
    * If you want to invoke a remote LiveCycle Server instance and there is a 
    * firewall between the client application and the server, then it is  
    * recommended that you use the SOAP mode. When using the SOAP mode,  
    * you have to include additional JAR files located in the following  
    * path 
    * <install directory>/sdk/client-libs/thirdparty 
    *  
    * For information about the SOAP  
    * mode and the additional JAR files that need to be included,  
    * see "Setting connection properties" in Programming  
    * with LiveCycle 
    *  
    * For complete details about the location of the LiveCycle JAR files,  
    * see "Including LiveCycle Java library files" in Programming  
    * with LiveCycle 
    */ 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.Properties; 
import com.adobe.idp.Document; 
import com.adobe.idp.dsc.InvocationRequest; 
import com.adobe.idp.dsc.InvocationResponse; 
import com.adobe.idp.dsc.clientsdk.ServiceClient; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
     
 
    public class InvokeDocumentEncryptLooselyTypedAPI { 
 
        public static void main(String[] args) 
        { 
        try 
        { 
            //Set connection properties required to invoke LiveCycle                                 
            Properties connectionProps = new Properties(); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://hiro-xp:1099"); 
            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"); 
 
            // Create a ServiceClientFactory instance 
            ServiceClientFactory factory = ServiceClientFactory.createInstance(connectionProps); 
             
            //Create a ServiceClient object 
            ServiceClient myServiceClient = factory.getServiceClient(); 
 
            //Create a Map object to store the parameter value 
            Map params = new HashMap(); 
              
            InputStream inFile = new FileInputStream("C:\\Adobe\Loan.pdf"); 
            Document inDoc = new Document(inFile); 
             
            //Populate the Map object with a parameter value  
            //required to invoke the MyApplication/EncryptDocument short-lived process 
            //inDoc refers to the name of the input parameter for the process 
            params.put("inDoc", inDoc);  
 
            //Create an InvocationRequest object 
            InvocationRequest request =  factory.createInvocationRequest( 
                    "MyApplication/EncryptDocument",        //Specify the short-lived process name 
                    "invoke",           //Specify the operation name     
                    params,               //Specify input values 
                    true);               //Create a synchronous request  
 
            //Send the invocation request to the short-lived process and  
            //get back an invocation response -- outDoc refers to the output parameter for the  
            //MyApplication/EncryptDocument process 
            InvocationResponse response = myServiceClient.invoke(request); 
            Document encryptDoc = (Document) response.getOutputParameter("outDoc"); 
             
            //Save the encrypted PDF document returned by the process 
            //Save the password-encrypted PDF document 
            File outFile = new File("C:\\Adobe\EncryptLoan.pdf"); 
            encryptDoc.copyToFile (outFile); 
            }catch (Exception e) { 
                e.printStackTrace(); 
            } 
        } 
}