Invoking a service using a Java client library

LiveCycle service operations can be invoked by using a service’s strongly typed API, which is known as a Java client library. A Java client library is a set of concrete classes that provide access to services deployed in the service container. You instantiate a Java object that represents the service to invoke instead of creating an InvocationRequest object by using the Invocation API. The Invocation API is used to invoke processes, such as long-lived processes, created in Workbench. (See Invoking Human-Centric Long-Lived Processes.)

To perform a service operation, invoke a method that belongs to the Java object. A Java client library contains methods that typically map one-to-one with service operations. When using a Java client library, set required connection properties. (See Setting connection properties.)

After you set connection properties, create a ServiceClientFactory object that is used to instantiate a Java object that lets you invoke a service. Each service that has a Java client library has a corresponding client object. For example, to invoke the Repository service, create a ResourceRepositoryClient object by using its constructor and passing the ServiceClientFactory object. The ServiceClientFactory object is responsible for maintaining connection settings that are required to invoke LiveCycle services.

Although obtaining a ServiceClientFactory is typically fast, some overhead is involved when the factory is first used. This object is optimized for reuse and therefore, when possible, use the same ServiceClientFactory object when you are creating multiple Java client objects. That is, do not create a separate ServiceClientFactory object for each client library object that you create.

There is a User Manager setting that controls the lifetime of the SAML assertion that is inside the com.adobe.idp.Context object that affects the ServiceClientFactory object. This setting controls all authentication context lifetimes throughout LiveCycle, including all invocations performed by using the Java API. By default, the time period in which a ServiceCleintFactory object can be used is two hours.

注意: To explain how to invoke a service by using the Java API, the Repository service’s writeResource operation is invoked. This operation places a new resource into the repository.

You can invoke the Repository service by using a Java client library and by performing the following steps:

  1. Include client JAR files, such as the adobe-repository-client.jar, in your Java project’s class path. For information about the location of these files, see Including LiveCycle Java library files.

  2. Set connection properties that are required to invoke a service.

  3. Create a ServiceClientFactory object by invoking the ServiceClientFactory object’s static createInstance method and passing the java.util.Properties object that contains connection properties.

  4. Create a ResourceRepositoryClient object by using its constructor and passing the ServiceClientFactory object. Use the ResourceRepositoryClient object to invoke Repository service operations.

  5. Create a RepositoryInfomodelFactoryBean object by using its constructor and pass null. This object lets you create a Resource object that represents the content that is added to the repository.

  6. Create a Resource object by invoking the RepositoryInfomodelFactoryBean object’s newImage method and passing the following values:

    • A unique ID value by specifying new Id().

    • A unique UUID value by specifying new Lid().

    • The name of the resource. You can specify the file name of the XDP file.

    Cast the return value to Resource.

  7. Create a ResourceContent object by invoking the RepositoryInfomodelFactoryBean object’s newImage method and casting the return value to ResourceContent. This object represents the content that is added to the repository.

  8. Create a com.adobe.idp.Document object by passing a java.io.FileInputStream object that stores the XDP file to add to the repository. (See Creating a document based on an InputStream object.)

  9. Add the content of the com.adobe.idp.Document object to the ResourceContent object by invoking the ResourceContent object’s setDataDocument method. Pass the com.adobe.idp.Document object.

  10. Set the MIME type of the XDP file to add to the repository by invoking the ResourceContent object’s setMimeType method and passing application/vnd.adobe.xdp+xml.

  11. Add the content of the ResourceContent object to the Resource object by invoking the Resource object ‘s setContent method and passing the ResourceContent object.

  12. Add a description of the resource by invoking the Resource object ‘s setDescription method and passing a string value that represents a description of the resource.

  13. Add the form design to the repository by invoking the ResourceRepositoryClient object’s writeResource method and passing the following values:

    • A string value that specifies the path to the resource collection that contains the new resource

    • The Resource object that was created