- Utilizando CORS (que no va a proceder ahora)
- Utilizando Tomcat como servidor tanto de REST como de WEB
Migración del proyecto Spark a Tomcat
Primeramente se crearán los WebServices en REST tal como se indicó en una entrada anterior.
Para ello he creado el paquete org.ximodante.spark que se encuentra en src/main/java
En este paquete he creado la clase HelloWord que es la del ejemplo de la documentación de Spark
(Ojo le he añadido el package org.ximodante.spark)
package org.ximodante.spark
(Ojo le he añadido el package org.ximodante.spark)
package org.ximodante.spark
import static spark.Spark.*;
public class HelloWorld {
public static void main(String[] args) {
get("/hello", (req, res) -> "Hello World");
}
}
Se prueba que todo funcione correctamente, llamando a
http://localhost:4567/hello
Sustituir la libreria del BuildPath spark-core-2.5.jar por spark-core-2.1.jar ya que Tomcat parece ser que no funciona muy bien sobre la versión 2.5.
La librería spark-core-2.1.jar se puede conseguir del proyecto en git del brasileño Leonan Luppi al que hay que agradecer su inestimable ayuda.
Ahora se crea un proyecto Dynamic Web
File->New_>Dynamic Web Project
y por si las moscas escogemos la version 3.0 en vez de 3.1 para no tener problemas con el web.xml
1. Ahora hay que colocar el paquete org.ximodante.spark en src (y no en src/main/java)
2. Dentro de la carpeta WebContent/WEB-INF/lib hay que incluir los ficheros:
3. En eclipse nos situamos encima de estos dos ficheros en la carpeta indicada y con el botón derecho se añaden al buid-path.
4. Cambiar la clase HelloWorld de manera que:
2. Dentro de la carpeta WebContent/WEB-INF/lib hay que incluir los ficheros:
- sparc-core-2.1.jar
- slf4j-api-1.7.7.jar
3. En eclipse nos situamos encima de estos dos ficheros en la carpeta indicada y con el botón derecho se añaden al buid-path.
4. Cambiar la clase HelloWorld de manera que:
- Debe implementar la interfaz SparkApplication.
- Hay que sustituir el método main() por el init() que aporta la interfaz
package org.ximodante.spark
import static spark.Spark.*;
public class HelloWorld implements SparkApplication{
public class HelloWorld implements SparkApplication{
@override
public void init() {
get("/hello", (req, res) -> "Hello World");
}
}
5. El web.xml debe ser el siguiente, tal com se indica en la documentación de Spark.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>SparkTomcat</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<filter>
<filter-name>SparkFilter</filter-name>
<filter-class>spark.servlet.SparkFilter</filter-class>
<init-param>
<param-name>applicationClass</param-name>
<param-value>com.ximodante.spark.HelloWorld</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SparkFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
6. Verificar que <display-name> apunta a la ruta que deseais, en principio será igual al nombre del proyecto, en este caso "SparkTomcat".
7. Comprobar que vuestra clase con la ruta del paquete se encuentra en <param-value> en este caso "com.ximodante.spark.HelloWorld".
8. Crear en fichero simple "html" por ejemple prueba.html y comprovar con Run as -> Run on Server (Tomcat) que se ve bien y no hay ningún problema. (La ruta que se muestra es http://localhost:8080/SparkTomcat/prueba.html)
9. Ahora en el navegador colocar la NUEVA ruta (en vez de http://localhost:4567/hello) :
- http://localhost:8080:/SparkTomcat/hello
10. Ya está.