Arrancar Solr desde un proyecto Maven con el soporte de Jetty.

0
9417

Arrancar Solr desde un proyecto Maven con el soporte de Jetty.

0. Índice de contenidos.


1. Introducción

¿Cuándo empieza a ser productivo un nuevo miembro del equipo?, dependerá de la persona y de la experiencia con la tecnología en la que esté basada la arquitectura del proyecto. Aun lo anterior, siempre existe el factor «montar el entorno», ¿cuánto se tarda de media en montar el entorno?, ¿se puede hacer de forma autónoma o necesita el soporte de alguien que lo tenga montado?.

En Autentia siempre tratamos de minimizar los procesos de adaptación entre proyectos porque básicamente tenemos bastante movilidad y, en este tutorial, vamos a ver cómo trabajar con una instancia de Solr montada en un proyecto de maven para evitar tener que montar en local un servidor y desplegar Solr manualmente cada vez que alguien se tiene que montar el entorno de un proyecto que utiliza este motor de indexación. Si lo dejamos en manos de los miembros del equipo corremos el riesgo de instalaciones dispares con frases del tipo «pues esto a mi me funciona, no se por qué a ti no», «¿no has copiado en el directorio local el fichero de configuración?».

La idea es que el proyecto con el servidor de Solr y su configuración se encuentren en el repositorio y solo haya que hacer un checkout para empezar a trabajar con él.


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.4 GHz Intel Core i7, 8GB DDR3 SDRAM).
  • Sistema Operativo: Mac OS X Lion 10.7.4
  • Solr 3.5


3. Configuración.

Ya hemos comentado que tendremos un proyecto específico de maven para el servidor que tendrá las dependencias de Solr y la configuración del mismo, con ello, todo el equipo trabajará, en local, sobre la misma versión y con la misma configuración; al igual que haríamos con la instancia de la base de datos.

El contenido de nuestro pom.xml sería el siguiente:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.autentia.tutoriales</groupId>
  <artifactId>solr-server</artifactId>
  <version>0.0.1-SNAPSHOT</version> 
  <packaging>war</packaging>
  <dependencies>
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr</artifactId>
            <type>war</type>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-velocity</artifactId>
            <version>3.5.0</version>
        </dependency>
  </dependencies>
  <build>
  <finalName>solr</finalName>
    <plugins>
       <plugin>
         <groupId>org.mortbay.jetty</groupId>
         <artifactId>maven-jetty-plugin</artifactId>
         <version>6.1.26</version>
           <configuration>
               <connectors>
                   <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                       <port>8989</port>
                       <maxIdleTime>60000</maxIdleTime>
                   </connector>
               </connectors>
              <webAppConfig>
				<contextPath>/solr</contextPath>
              </webAppConfig>
           </configuration>
       </plugin>
    </plugins>
  </build>
</project>

Los ficheros de configuración propios de solr los podemos ubicar en el directorio src/main/resources y debemos crear el directorio webapp/WEB-INF para insertar el web.xml del solr.war que podemos obtener descargando la versión de solr con la que vayamos a trabajar.

La estructura de directorios de nuestro proyecto sería la siguiente:

Esta configuración la hacemos una única vez y la subimos al repositorio para que el resto del equipo trabaje sobre la misma en local; si necesitamos ampliar el esquema de solr o configurar múltiples cores, modificaremos los ficheros de configuración de este proyecto.


4. Arrancar Solr.

En el directorio raíz del proyecto, primero probamos a empaquetarlo y, con ello, se descargará las dependencias.

	mvn clean install

Si todo va bien, después desplegamos el war en el jetty embebido:

	mvn jetty:run-exploded

El resultado debería ser algo como lo siguiente:

Y ya podemos abrir un navegador para accerder a la url de solr: http://localhost:8989/solr/

Por defecto el directorio home de solr se crea en la raíz del proyecto en el {basedir}.

Podemos modificar este comportamiento definiendo en el web.xml que hemos tomado prestado del solr.war la siguiente sección:


  
    solr/home
    target
    java.lang.String
  

Con ello, el directorio data, con el contenido de los índices se creará dentro del directorio de target.


5. Referencias.

  • http://netsuke.wordpress.com/2010/06/24/launching-solr-from-maven-for-rapid-development/


6. Conclusiones.

Automatizado queda ;).

Un saludo.

Jose

jmsanchez@autentia.com

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad