03-07-2018 07:03 AM
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.
03-07-2018 08:43 AM
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
03-07-2018 08:00 AM
La mejor manera es con Web Scripts. ¿Por qué "no utilizar Web Scripts" es un requisito?
03-07-2018 08:28 AM
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
03-07-2018 08:43 AM
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
03-07-2018 08:49 AM
Muchas gracias, te informaremos si lo conseguimos hacer funcionar.
Un saludo
03-08-2018 06:35 AM
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();
}
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.