Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

cancel
Showing results for 
Search instead for 
Did you mean: 
imingo
Active Member

Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

Jump to solution

Buenos días, estoy intentando hacer la implementación de un servicio REST con alfresco aio 5.2 enterprise edition. El problema con el que me encuentro de primeras es que no existe un archivo web.xml dónde pueda registrar un nuevo servlet (ya que se genera de alguna manera transparente para mi). He seguido el siguiente ejemplo: https://docs.alfresco.com/process-services1.6/topics/custom_rest_endpoints.html , que aunque es referente a activiti, pensaba que me podía servir para aunque fuera solo para poder exponer un endpoint custom. He buscado y no he encontrado documentación ni ejemplos para hacerlo. La parte de lógica no me importa en este punto lo que me preocupa es poder exponer un endpoint custom o saber cual sería la manera de poder realizarlo (sin webscripts a ser posible).

Un saludo y gracias.

1 Solution

Accepted Solutions
angelborroy
Alfresco Employee

Re: Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

Jump to solution

Podrías prescindir del framework Web Scripts para la implementación, aunque para mí es una manera muy sencilla y eficiente para crear un endpoint REST. De hecho no se me ocurre una manera mejor de hacerlo, así que me interesará conocer vuestra experiencia.

Creo que para vuestro enfoque la mejor alternativa sería utilizar un web fragment para añadir lo que necesitéis en la parte del descriptor web.

Esto os puede servir de referencia: https://github.com/covolution/enablecors/blob/master/src/main/resources/META-INF/web-fragment.xml

Hyland Developer Evangelist

View solution in original post

5 Replies
angelborroy
Alfresco Employee

Re: Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

Jump to solution

La mejor manera es con Web Scripts. ¿Por qué "no utilizar Web Scripts" es un requisito?

Hyland Developer Evangelist
imingo
Active Member

Re: Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

Jump to solution

Nos gustaría no tener que utilizar webs cripts ya que nos resulta muy engorroso y querríamos prescindir de ellos. No se si sería posible de realizarlo sin tener que utilizarlos. Un saludo y gracias por la ayuda

angelborroy
Alfresco Employee

Re: Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

Jump to solution

Podrías prescindir del framework Web Scripts para la implementación, aunque para mí es una manera muy sencilla y eficiente para crear un endpoint REST. De hecho no se me ocurre una manera mejor de hacerlo, así que me interesará conocer vuestra experiencia.

Creo que para vuestro enfoque la mejor alternativa sería utilizar un web fragment para añadir lo que necesitéis en la parte del descriptor web.

Esto os puede servir de referencia: https://github.com/covolution/enablecors/blob/master/src/main/resources/META-INF/web-fragment.xml

Hyland Developer Evangelist
imingo
Active Member

Re: Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

Jump to solution

Muchas gracias, te informaremos si lo conseguimos hacer funcionar.

Un saludo

imingo
Active Member

Re: Servicio REST custom sin webscripts en Alfresco AIO 5.2 enterprise

Jump to solution

Lo prometido es deuda y por fin conseguimos exponer el servicio rest sin necesidad de web scripts (de momento sin autenticación). Nuestra solución ha sido:

1º   Crear un archivo web-fragment.xml en el módulo platform en src/main/resources/META-INF/web-fragment.xml en el cual hemos definido nuestro servlet.

<web-fragment>

<servlet>

   <servlet-name>mvc-dispatcher</servlet-name>

   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

   <load-on-startup>1</load-on-startup>

   <init-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>classpath:alfresco/module/${project.artifactId}/mvc-dispatcher-servlet.xml</param-value>

       </init-param>

</servlet>

<servlet-mapping>

   <servlet-name>mvc-dispatcher</servlet-name>

   <url-pattern>/customapi/*</url-pattern>

</servlet-mapping>

</web-fragment>

2º Crear el archivo mvc-dispatcher-servlet.xml en la ruta previamente definida:

<?xml version='1.0' encoding='UTF-8'?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-3.0.xsd

    http://www.springframework.org/schema/mvc

    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

   

   <!-- Enable autowiring of Spring Beans -->

   <context:annotation-config />

   <!-- Scan com.enterprise.controller package for beans -->

   <context:component-scan base-package="com..enterprise.controller" />

   <!-- Enable RequestMapping annotations -->

   <mvc:annotation-driven />  

</beans>

3º Crear un controlador con spring:

@Controller

@RequestMapping(value = "rest")

public class MyController {     

   private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(NodeController.class);

      @RequestMapping(value = "/check", method = RequestMethod.GET)

   @Produces(MimetypeMap.MIMETYPE_JSON)

   public @ResponseBody CustomModel getActivities() {

        return new CustomModel();

   }

Muchas gracias por la ayuda un saludo!