Servicio OSGi

Un servicio OSGi es una clase Java o interfaz de servicio, junto con una serie de propiedades de servicio como pares nombre/valor. Las propiedades del servicio diferencian entre diferentes proveedores de servicios que proporcionan servicios con la misma interfaz de servicio.

Un servicio OSGi se define semánticamente mediante su interfaz de servicio y se implementa como un objeto de servicio. La funcionalidad de un servicio se define mediante las interfaces que implementa. Por lo tanto, diferentes aplicaciones pueden implementar el mismo servicio. Las interfaces de servicio permiten que los paquetes interactúen enlazando interfaces, no implementaciones. Se debe especificar una interfaz de servicio con el menor número posible de detalles de implementación.

Definición de la interfaz

Una interfaz sencilla con un método para combinar datos con la plantilla XDP.

package com.mysite.samples;

import com.adobe.aemfd.docmanager.Document;

public interface MyfirstInterface
{
    public Document mergeDataWithXDPTemplate(Document xdpTemplate, Document xmlDocument);
}

Implementación de la interfaz

Cree un nuevo paquete llamado com.mysite.samples.impl para hospedar la implementación de la interfaz.

package com.mysite.samples.impl;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.adobe.aemfd.docmanager.Document;
import com.adobe.fd.output.api.OutputService;
import com.adobe.fd.output.api.OutputServiceException;
import com.mysite.samples.MyfirstInterface;
@Component(service = MyfirstInterface.class)
public class MyfirstInterfaceImpl implements MyfirstInterface {
  @Reference
  OutputService outputService;

  private static final Logger log = LoggerFactory.getLogger(MyfirstInterfaceImpl.class);

  @Override
  public Document mergeDataWithXDPTemplate(Document xdpTemplate, Document xmlDocument) {
    com.adobe.fd.output.api.PDFOutputOptions pdfOptions = new com.adobe.fd.output.api.PDFOutputOptions();
    pdfOptions.setAcrobatVersion(com.adobe.fd.output.api.AcrobatVersion.Acrobat_11);
    try {
      return outputService.generatePDFOutput(xdpTemplate, xmlDocument, pdfOptions);

    } catch (OutputServiceException e) {

      log.error("Failed to merge data with XDP Template", e);

    }

    return null;
  }

}

La anotación @Component(...) en la línea 10 marca esta clase Java como un componente OSGi y la registra como un servicio OSGi.

La anotación @Reference forma parte de los servicios declarativos de OSGi y se usa para insertar una referencia de Outputservice en la variable outputService.

Creación e implementación del paquete

  • Abrir ventana del símbolo del sistema
  • Navegue hasta c:\aemformsbundles\mysite\core
  • Ejecutar el comando mvn clean install -PautoInstallBundle
  • AEM El comando anterior generará e implementará automáticamente el paquete en la instancia de que se ejecuta en localhost:4502

El paquete también estará disponible en la siguiente ubicación C:\AEMFormsBundles\mysite\core\target. AEM El paquete también se puede implementar en los entornos de trabajo mediante la consola web Felix.

Usar el servicio

Ahora puede utilizar el servicio en la página JSP. El siguiente fragmento de código muestra cómo obtener acceso al servicio y utilizar los métodos implementados por el servicio

MyFirstAEMFormsService myFirstAEMFormsService = sling.getService(com.mysite.samples.MyFirstAEMFormsService.class);
com.adobe.aemfd.docmanager.Document generatedDocument = myFirstAEMFormsService.mergeDataWithXDPTemplate(xdp_or_pdf_template,xmlDocument);

El paquete de muestra que contiene la página JSP se puede descargar desde aquí

El paquete completo está disponible para descargar

Prueba del paquete

AEM Importe e instale el paquete en el servidor de correo electrónico con el administrador de paquetes en el servidor de correo electrónico

Utilice postman para realizar una llamada al POST y proporcionar los parámetros de entrada como se muestra en la captura de pantalla siguiente
cartero

Siguientes pasos

Crear servlet de Sling

recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e