run jax create java spring tomcat gradle spring-boot

java - jax - Servicio RESTful de primavera como WAR en lugar de JAR en Tomcat



run web service tomcat eclipse (3)

Estoy en el proceso de crear un servicio web REST en Java Spring. He cargado correctamente STS y el ejemplo detallado en:

"Esta guía lo guía en el proceso de creación del servicio web RESTful" hello world "con Spring". http://spring.io/guides/gs/rest-service/

Sin embargo, ese tutorial solo llega hasta ahora ... Quiero crear un archivo WAR en lugar de un jar de ejecución automática que contiene un servlet, y desplegar ese archivo WAR. Luego encontré este tutorial e intenté simplemente modificar el primer archivo build.gradle de los tutoriales.

"Conversión de una aplicación JAR de arranque Spring a WAR" http://spring.io/guides/gs/convert-jar-to-war/

Parecía estar bien integrado en un archivo .war ... el servicio se está ejecutando en el administrador de mi instancia de TOMCAT ... pero recibo 404 una vez que intento usar el servicio.

URL 404''d

http://localhost:8080/gs-rest-service-0.1.0/dbgreeting?name=MyName

¿Necesito modificar el mapeo?

DataBaseController.java

@RequestMapping("/dbgreeting") public @ResponseBody DataBaseGreeter dbgreeting( @RequestParam(value="name", required=false, defaultValue="World") String name) { return new DataBaseGreeter(counter.incrementAndGet(),String.format(template, name)); }

Ahora tengo el archivo .war creado de acuerdo con una combinación de cosas ... y me preocupa que tal vez me haya perdido algo.

Desde entonces, descubrí que XAMPP en OSX no contiene una aplicación / carpeta web, lo que me obligó a cargar la pila Tomcat de Bitnami en su lugar. ¿La gente generalmente cambia entre XAMPP y otras pilas basándose en esto? ¿O me perdí algo para crear la carpeta webapp creada en XAMPP?


(La respuesta de OP pasó de la pregunta a aquí )

Chico, me siento realmente tonto ... Descubrí que había más en el tutorial después de cambiar las instrucciones de gradle ... incluida la muy necesaria configuración automática que reemplaza / reemplaza la necesidad de un web.xml

Solución

Inicializar el servlet

Anteriormente, la aplicación contenía un método public static void main() que Spring-boot-gradle-plugin estaba configurado para ejecutarse cuando se usaba el comando java -jar .

Al convertir esto en un archivo WAR sin archivos XML, necesita una señal diferente al contenedor de servlets sobre cómo iniciar la aplicación.

src / main / java / hello / HelloWebXml.java

package hello; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.SpringBootServletInitializer; public class HelloWebXml extends SpringBootServletInitializer { @Override protected void configure(SpringApplicationBuilder application) { application.sources(Application.class); } }

Dará crédito a la primera respuesta, pero ambos estaban en lo cierto al decir que web.xml (o lo que Spring-Boot usa para reemplazarlo) era necesario.


Esperaría ver alguna salida de INFO cuando se inicie una aplicación de arranque de primavera, por lo que algunas ideas son:

Probar una instancia de Tomcat regular

  • Descarga y extrae la distribución zip .
  • Iniciar Tomcat con bin/startup.sh
  • Copia tu guerra al directorio webapps
  • Revise los registros ... Espero ver alguna evidencia de que se inicie la primavera

Inspeccionar manualmente el archivo de guerra

  • Descomprime tu archivo de guerra
  • Espera ver WEB-INF / web.xml

Una guerra es solo un jarro con propiedades especiales. Debe tener un WEB-INF, bajo el cual necesita un web.xml para describir su implementación, cualquier archivo de configuración dependiente del XML del servidor de aplicaciones y, por lo general, una biblioteca, clases y otras probabilidades y fines.

La forma más fácil sería usar Maven para crear tu WAR. Creo que deberías poder simplemente cambiar el tipo de proyecto en el pom.xml de JAR a WAR. El tutorial que seguiste parece usar Gradle, que a su vez usa Maven, creo, así que deberías tener uno en algún lugar. Aparte de eso, google para tutoriales sobre cómo construir un WAR. No creo que Tomcat requiera ningún tipo de descriptores de implementación especiales, por lo que solo debería necesitar el .xml web.