Servlet Sling
Un servlet è una classe utilizzata per estendere le funzionalità dei server che ospitano le applicazioni a cui si accede tramite un modello di programmazione richiesta-risposta. Per tali applicazioni, la tecnologia Servlet definisce classi servlet specifiche per HTTP.
Tutti i servlet devono implementare l'interfaccia Servlet, che definisce i metodi del ciclo di vita.
Un servlet in AEM può essere registrato come servizio OSGi: è possibile estendere SlingSafeMethodsServlet per l’implementazione in sola lettura o SlingAllMethodsServlet per implementare tutte le operazioni RESTful.
Codice servlet
package com.mysite.core.servlets;
import javax.servlet.Servlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import java.io.File;
import com.adobe.aemfd.docmanager.Document;
import com.adobe.fd.forms.api.FormsService;
@Component(service={Servlet.class}, property={"sling.servlet.methods=post", "sling.servlet.paths=/bin/mergedataWithAcroform"})
public class MyFirstAEMFormsServlet extends SlingAllMethodsServlet
{
private static final long serialVersionUID = 1L;
@Reference
FormsService formsService;
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response)
{
String file_path = request.getParameter("save_location");
java.io.InputStream pdf_document_is = null;
java.io.InputStream xml_is = null;
javax.servlet.http.Part pdf_document_part = null;
javax.servlet.http.Part xml_data_part = null;
try
{
pdf_document_part = request.getPart("pdf_file");
xml_data_part = request.getPart("xml_data_file");
pdf_document_is = pdf_document_part.getInputStream();
xml_is = xml_data_part.getInputStream();
Document data_merged_document = formsService.importData(new Document(pdf_document_is), new Document(xml_is));
data_merged_document.copyToFile(new File(file_path));
}
catch(Exception e)
{
response.sendError(400,e.getMessage());
}
}
}
Creare e distribuire
Per creare il progetto, effettua le seguenti operazioni:
- Apri finestra del prompt dei comandi
- Passa a
c:\aemformsbundles\mysite\core
- Esegui il comando
mvn clean install -PautoInstallBundle
- Il comando precedente crea e distribuisce automaticamente il bundle nell’istanza AEM in esecuzione su localhost:4502
Il bundle è disponibile anche nel seguente percorso C:\AEMFormsBundles\mysite\core\target
. Il bundle può anche essere distribuito in AEM utilizzando la console Web Felix.
Test del servlet Resolver
Puntare il browser all'URL resolver servlet. Questo indica il servlet richiamato per un determinato percorso come mostrato nella schermata seguente
Test del servlet tramite Postman
Passaggi successivi
Includi file jar di terze parti