Translate

Mostrando las entradas con la etiqueta Tomcat. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Tomcat. Mostrar todas las entradas

martes, 20 de septiembre de 2022

Spring boot con jetty




Tomcat y Jetty son los servidores web más populares en el mundo Java, pero Spring boot nos brinda la funcionalidad de servidor embebido con tomcat. Por que? ni idea, pero podemos cambiar esto y utilizar jetty de la siguiente manera. 

Generamos nuestro proyecto en : https://start.spring.io/ o como quieran pero tienen que elegir spring web como dependencia. 

Si ya funciona el entorno, vamos a la dependencia de spring web y excluimos tomcat y luego agregamos jetty : 


implementation ('org.springframework.boot:spring-boot-starter-web') {

exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'

}


implementation 'org.springframework.boot:spring-boot-starter-jetty'


Y listo, cuando inicie spring lo va hacer con un jetty embebido. Van a poder ver la siguiente linea en el log : 


2022-09-20 08:06:28.788  INFO 1304813 --- [           main] o.s.b.web.embedded.jetty.JettyWebServer


sábado, 31 de agosto de 2019

Libros de Java Code Geeks

Download IT Guides!

 
Amazon S3 (Simple Storage Service) is a web service offered by Amazon Web Services. Amazon S3 provides storage through web services interfaces (REST, SOAP, and BitTorrent). Amazon...
238c82c3-cdd7-4492-a23c-39e18a1f8c21.png
 
 
JUnit is a unit testing framework to write repeatable tests. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks...
238c82c3-cdd7-4492-a23c-39e18a1f8c21.png
 
 
Apache Tomcat, often referred to as Tomcat, is an open-source web server developed by the Apache Software Foundation (ASF). Tomcat implements several Java EE specifications including Java...
238c82c3-cdd7-4492-a23c-39e18a1f8c21.png
 
 
With no doubts, Java 8 release is the greatest thing in the Java world since Java 5 (released quite a while ago, back in 2004). It brings tons of new features to the Java as a language,...
238c82c3-cdd7-4492-a23c-39e18a1f8c21.png
 

lunes, 12 de agosto de 2013

Tomcat 8.0.0-RC1 (alpha) Released


Tengo el agrado de comunicar el primer release de Tomcat 8. Que hay de nuevo viejo??
  • Soporte para Java Servlet 3.1, JavaServer Pages 2.3, Java Unified Expression Language 3.0 y Java WebSocket 1.0.
  • Soporte para Web socket
  • HTTP protocol upgrade
  • Soporte experimental para SPDY
  • y mucho más!!

Los cambios son muchos y la espera larga, pero se viene un producto que promete.

Dejo link:
http://tomcat.apache.org/
http://tomcat.apache.org/download-80.cgi

jueves, 13 de diciembre de 2012

No estamos grande para jugar a la lucha Spring vs JEE??


A raíz de un articulo de InfoQ  me quede pensando, cuanto cuesta que spring respete el estándar JEE? Recordemos que Spring nació como un framework que proveía un montón de características para no utilizar JEE.  Spring se ha popularizado en la comunidad de programadores en Java al ser considerado como una alternativa y sustituto del modelo de Enterprise JavaBeans. Por su diseño el framework ofrece mucha libertad a los desarrolladores y soluciones muy bien documentadas y fáciles de usar para las prácticas comunes en la industria.

Pero JEE aprendió de sus desaciertos fue acercándose a un modelo más flexible. Y yo veo que con el tiempo se fue springizando. EL GAP que existía entre Spring y JEE es cada vez más pequeño. Cuesta mucho hacerlo nulo? O optar por hacer Spring JEE y otro no JEE?

Si, ya se la respuesta es: "A mi me gusta solo usar tomcat o jety y no quiero usar JBoss o Glashfish". Creo que se puede modularizar y en los servidores solo cargar lo que usamos. Por ejemplo si solo necesito servicios web, jetty. Si necesito servicios web y un servicio como JMS uso jetty + modulo de ActiveQ o el que sea. Hoy en día es como que no existe punto medio o jetty o tomcat o JBoss  o otro servidor JEE. Algo super liviano o algo pesado. Por esto también aplaudo a soluciones como TomEE que implementa Java EE 6 Web Profile.

Que opinan matamos a JEE como un estándar cerrado y lo rompemos en cajitas modulares? Hacemos que spring respete ese orden y cumpla el estándar? No estamos grande para jugar a la lucha Spring vs JEE?

jueves, 9 de agosto de 2012

JAMon, mirando como viene la mano...




The Java Application Monitor (JAMon) es una herramienta para monitorizar aplicaciones web hechas en java. Basicamente se agrega el monitor a jetty o tomcat y este intercepta todos los pedidos; registrando el momento que entraron y salieron. Como un portero botón que esta mirando a que hora llegas y a que hora salís.

JAMon es simple, fácil de usar, fácil de configurar y es software libre. Y permite de forma sensilla monitorizar una aplicación java.

Para que usaríamos JAMon?
  • Para garantizar la aplicación cumple con sus requisitos de rendimiento
  • Para garantizar la aplicación cumple con los requisitos de escalabilidad
  • Para detectar si la aplicación tiene errores o arroja excepciones no deseados
  • Para asegurar que todas las partes de la aplicación fueron probados adecuadamente (cobertura)
  • Para garantizar que la aplicación está funcionando correctamente en la producción como parte de las pruebas de post-producción
  • Para obtener información de la producción e iniciar un ciclo de retroalimentación entre el desarrollo, prueba y producción que mejoren la aplicación


¿Qué tipo de estadísticas de hace y cómo puedo verlos?

Jamón puede ser pensado como un cronómetro de software que asocia una etiqueta con los tiempos de ejecución y algunos agregados, otras estadísticas. JAMon trae consigo un completo view que se puede desplegar fácilmente; brindando toda la info de nuestra aplicación.


 ¿Cómo puedo agregar JAMon en mi aplicación?

Podemos incorporar JAMon en sus aplicaciones utilizando cualquiera de estos enfoques:
  • Utilizando el JAMon Servlet Filter - El filtro de servlet Jamón pasa automáticamente nombres de las páginas web de la aplicación (servlets, JSP y mucho más) para el JAMon , permite a los desarrolladores realizar un seguimiento de rendimiento de la página sin cambiar una sola línea de código de aplicación. Todo lo que se necesita es copiar algunas líneas estándar pocos en el archivo web.xml aplicaciones.
  • El controlador de JDBC de JAMon - es un proxy que puede monitorizar cualquier driver JDBC (que ha sido probado con Sybase / MySQL / Oracle / HSQLDB y otros),  Lleva la cuenta de las consultas más recientes ejecutados N y N excepciones más recientes lanzados. Utilizando el controlador de JAMon JDBC no requiere ningún cambio de código de aplicación. Basta con sustituir la información del controlador original (nombre de la clase del controlador, y la dirección URL) con JAMon.
  • Utilizar la interfaz de supervisión JAMon - Como se puede ver a continuación, puede controlar cualquier interfaz Java simplemente por el paso de una implementación de la interfaz con el método de monitor de JAMon , a continuación, llamar a métodos en el objeto como lo haría si el objeto no se controló. La firma de clase y el método aparece como una etiqueta en los informes de JAMon :


MyInterface myObject=(MyInterface) MonProxyFactory.monitor(new  MyImplementation());
            myObject.myMethod(); // Monitored!


  • Por último, puede llamar explícitamente al inicio JAMon / métodos de detención de la siguiente manera. Además, cuenta que, debido al hecho de que la etiqueta JAMon  es simplemente una cadena de Java, los datos dinámicos / tiempo de ejecución, como un nombre de usuario, se puede incorporar fácilmente en la etiqueta.


import com.jamonapi.*;

// page hits by user name using runtime data

Monitor mon = MonitorFactory.start("homePage.jsp-"+userName);             ...code that you wish to time...
mon.stop();


JAMon es una gran herramienta de software libre,muy útil para la monitorización de aplicacioes java.

Dejo links:
http://jamonapi.sourceforge.net/testingwithjamon.html
https://javasight.wordpress.com/2010/10/04/monitoring-with-spring-and-jamon-using-jamonperformancemonitorinterceptor/
http://jamonapi.sourceforge.net/

martes, 1 de mayo de 2012

Apache Foundation anuncia Apache TomEE v1.0


Leyendo javahispano me tope con la siguiente nota: http://www.javahispano.org/portada/2012/5/1/apache-foundation-anuncia-apache-tomee-v10.html

Apache anuncio el primer release de Apache TomEE del que ya hablamos en el blog. Este es un servidor que certifica Java EE 6 Web Profile. Es una gran noticia, dado que muchas veces no utilizamos JEE pero si necesitamos usar algún servicio como JMS o JTA o otros servios y por comodidad terminamos deployando en un JBoss o Glassfish.

Dejo link:
http://openejb.apache.org/apache-tomee.html

viernes, 13 de agosto de 2010

Se viene Tomcat 7 Beta !!


Después de más de tres años desde el lanzamiento de Tomcat 6, el popular servidor Web hecho en Java, la Apache Software Foundation (ASF) ha anunciado la primera versión beta de Tomcat 7. De acuerdo con la ASF, hasta la fecha de hoy, el Tomcat se ha descargado más de 10 millones de veces. Entre la nueva versión beta está donando la plena aplicación de la especificación Java Servlet 3.0, Java Server Pages (JSP) 2.2, y el Expression Language (EL) 2.2, que fue parte de la especificación de Java EE 6 (Java Enterprise Edition) terminó en diciembre 2009. Como resultado, el medio ambiente
tiempo de ejecución sólo es compatible con el Java Runtime Environment (JRE) 6.0, que a su vez, la necesidad de actualizar el compilador integrado Eclipse.

Los desarrolladores también están trabajando en la seguridad privada y de rendimiento para el 7 de Tomcat. Es cambios ya son visibles. Un ejemplo son las aplicaciones Web, Gerente y Host Manager, Que ahora tienen nuevas reglas de autorización en su propia URL para que sea más fácil identificar pérdidas de memoria de aplicaciones Web a través de la máquina virtual Java (JVM), la aplicación del Administrador de ahora contiene un botón para la dirección http://localhost:8080/manager/html/findleaks Para hacer un análisis de uso de memoria.

miércoles, 5 de agosto de 2009

Jetty no es para producción ?


Jetty es un servidor HTTP y un contenedor de Servlets escrito en Java. Jetty se publica como un proyecto de software libre bajo la licencia Apache 2.0.

Debido a su pequeño tamaño, Jetty se complementa para ofrecer servicios Web en una aplicación Java empotrada.

Jetty es una gran herramienta de desarrollo ya que configurando un plugin de maven podemos tener nuestras aplicaciones web listas para probar. En este link detalla como hacer esto: http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin De esta forma al hacer mvn jetty:run va a levantarse el servidor jetty.

Pero este pequeño servidor puede usarse para producción?

Claro que SI !!!

Y si no me creen, lean este link: http://www.infoq.com/news/2009/08/google-chose-jetty en el que explica porque Google eligió a jetty como servidor para su servicio Google App Engine.

Y ustedes que utilizan como servidor web ?

jueves, 9 de julio de 2009

¿ Como Configurar virtual host con Tomcat ?

Para configurar virtual host en Tomcat es muy fácil tenemos que seguir
los siguientes pasos:


Ir a el archivo server.xml ($CATALINA_HOME/conf/ ) y agregar los host
(en el ejemplo vamos a configurar prueba1.com y prueba2.com)










server.xml
original



Nuevo
server.xml



<Host
name="localhost" appBase="webapps"


unpackWARs="true"
autoDeploy="true"


xmlValidation="false"
xmlNamespaceAware

="false">








</Host>



<Host
name="prueba1.com" appBase="webapps"


unpackWARs="true"
autoDeploy="true"


xmlValidation="false"
xmlNamespaceAware="false">


</Host>





<Host
name="prueba2.com" appBase="otroWebapps"


unpackWARs="true"
autoDeploy="true"


xmlValidation="false"
xmlNamespaceAware

="false">


</Host>



Podemos ver que en prueba1.com se van a encontrar las aplicaciones
desplegadas en webapps y en prueba2.com las de otroWebapps.


Para poder probar su correcto funcionamiento agregamos la siguiente
entrada a /etc/host





127.0.0.1 localhost
prueba1.com prueba2.com

Para que tome las url, luego reinicie el servidor.





./etc/init.d/tomcat6
restart


Al ingresar a http://prueba1.com:8080 vera las aplicaciones deplogeadas en webapps y al ir http://prueba2.com:8080 las de otroWebapps.



¿ Como Configuración de Realms ?


En Apache Tomcat no existe el concepto htaccess como se entiende en Apache. Para obtener este comportamiento se deben configurar realms.

Un realm es una “base de datos” de usuarios y passwords que nos sirve para implementar un mecanismo de autenticación para
aplicaciones Web. Se puede pensar en roles similar a
grupos
de unix/linux, y se puede dar permisos de acceso a un recurso a un grupo.

En muchos casos es deseable que se autentique con mecanismos ya implementados dentro de una aplicación. Para esto Apache tomcat define una serie interfaces java que se encuentran en el paquete

org.apache.catalina.Realm; se puede implementar “plug in” para establecer esta conexión.
Tomcat provee 5 formas estándares para autenticación:


JDBCRealm:
Autenticación contra una base de datos relacional usando driver jdbc.





<Realm className="org.apache.catalina.realm.JDBCRealm" 
debug="99"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/authority? user=dbuser&amp;password=dbpass"
userTable="users"
userNameCol="user_name"
userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name"/>

Para el ejemplo se debe tener las siguientes tablas en la base de datos:




create table users (
user_name varchar(15) not null primary key,
user_pass varchar(15) not null
);

create table user_roles (
user_name varchar(15) not null,
role_name varchar(15) not null,
primary key (user_name, role_name)
);


DataSourceRealm:
Autenticación contra una base de datos relacional, accedida vía un
nombre JNDI JDBC DataSource.





<Realm className="org.apache.catalina.realm.DataSourceRealm" 
debug="99"
dataSourceName="jdbc/authority"
userTable="users"
userNameCol="user_name"
userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name"/>

Para el ejemplo se debe tener las siguientes tablas en la base de datos:


create table users (
user_name varchar(15) not null primary key,
user_pass varchar(15) not null
);

create table user_roles (
user_name varchar(15) not null,
role_name varchar(15) not null,
primary key (user_name, role_name)
);

JNDIRealm:
Autenticación contra una base de datos LDAP, accedida vía un nombre JNDI provider.



<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
connectionURL="ldap://localhost:389"
userPattern="uid={0},ou=people,dc=mycompany,dc=com"
roleBase="ou=groups,dc=mycompany,dc=com"
roleName="cn"
roleSearch="(uniqueMember={0})"
/>


Para el ejemplo se debe tener las siguientes estructura en el ldap:




# Define top-level entry
dn: dc=mycompany,dc=com
objectClass: dcObject
dc:mycompany

# Define an entry to contain people
# searches for users are based on this entry
dn: ou=people,dc=mycompany,dc=com
objectClass: organizationalUnit
ou: people

# Define a user entry for Janet Jones
dn: uid=jjones,ou=people,dc=mycompany,dc=com
objectClass: inetOrgPerson
uid: jjones
sn: jones
cn: janet jones
mail: j.jones@mycompany.com
userPassword: janet

# Define a user entry for Fred Bloggs
dn: uid=fbloggs,ou=people,dc=mycompany,dc=com
objectClass: inetOrgPerson
uid: fbloggs
sn: bloggs
cn: fred bloggs
mail: f.bloggs@mycompany.com
userPassword: fred

# Define an entry to contain LDAP groups
# searches for roles are based on this entry
dn: ou=groups,dc=mycompany,dc=com
objectClass: organizationalUnit
ou: groups

# Define an entry for the "tomcat" role
dn: cn=tomcat,ou=groups,dc=mycompany,dc=com
objectClass: groupOfUniqueNames
cn: tomcat
uniqueMember: uid=jjones,ou=people,dc=mycompany,dc=com
uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

# Define an entry for the "role1" role
dn: cn=role1,ou=groups,dc=mycompany,dc=com
objectClass: groupOfUniqueNames
cn: role1
uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

MemoryRealm:

Autenticación contra una colección de objetos user que se
encuentran en memoria estos usuarios se cargan al iniciar el servidor del archivo conf/tomcat-users.xml




<Realm className="org.apache.catalina.realm.MemoryRealm"
pathname="$CATALINA_HOME/conf/tomcat-users.xml"
/>


Para el ejemplo se debe agregar los usuarios a $CATALINA_HOME/conf/tomcat-users.xml




<tomcat-users>
<user name="tomcat" password="tomcat" roles="tomcat" />
<user name="role1" password="tomcat" roles="role1" />
<user name="both" password="tomcat" roles="tomcat,role1" />
</tomcat-users>

JAASRealm:
Autenticación usando Java Authentication & Authorization
Service (JAAS) framework.






<Realm className="org.apache.catalina.realm.JAASRealm"                 
appName="MyFooRealm"
userClassNames="org.foobar.realm.FooUser"
roleClassNames="org.foobar.realm.FooRole"
debug="99" />


Pero también es posible escribir nuestras propias implementaciones y integrarlas con tomcat, para esto necesitaremos:

  • Implementar org.apache.catalina.Realm.


  • Agregar el jar en $CATALINA_HOME/lib


  • Declarar el realm.


  • Declarar el realm en el Mbeans Descriptor.


Luego
de entender como el funcionamiento de los Reamls vamos a explicar como se configuran:


Se debe agregar el tag Realm





<Realm
className="... clase que implementa
org.apache.catalina.Realm"


...
otros atributos.../>



El elemento Realm puede estar contenido en los siguientes elementos:

  • Dentro de un elemento <Engine>:
    Este elemento es compartido por todos los virtual host
    y
    todas las aplicaciones web. Se puede pisar con los realms
    configurados en
    <Host>
    o
    <Context>.


  • Dentro de un elemento <Host>:
    Este elemento es por virtual host y todas las aplicaciones web que se encuentran en el mismo. Se puede pisar con los realms configurados en
    <Context>.


  • Dentro de un elemento <Context>:
    Este elemento es por aplicación web.




¿ Como desplegar aplicaciones web en Tomcat ?

Para

desplegar aplicación web en Tomcat solo se debe parar el servidor:


Para
distribuciones debian en las que se instalo tomcat:







invoke-rc.d
tomcat6 stop



Para cualquier distribución que se allá instalado tomcat:





./etc/init.d/tomcat6
stop



Paraversiones descomprimidas:







./$CATALINA_HOME/bin/shudown.sh







Mover
la aplicación al directorio configurado en context que se usara para el despliegue. Por ejemplo se desplegara una aplicación llamada myaplicacion al directorio webapps





mv myaplicacion.war $CATALINA_HOME/webapps


Donde $CATALINA_HOME contiene el path donde se instalo el tomcat.

Levantar tomcat:


Para distribuciones debian en las que se instalo tomcat:





invoke-rc.d
tomcat6 start

Para cualquier distribución que se allá instalado tomcat:




./etc/init.d/tomcat6
start





Para versiones descomprimidas:




./$CATALINA_HOME/bin/start.sh


De esta forma la url donde se desplegara la aplicación sera

http://localhost:8080/myaplicacion/


Muchas veces deseamos desplegar aplicaciones de forma que la URL para acceder sea http://host para esto lo
primero que hay que hacer es configurar el tomcat para que escuche el puerto 80. Cambiando el atributo port a 80 del tag Connector del archivo server.xml.




<Connector
port=”80” ...


Luego desplegar la aplicación pero cambiando el nombre del war a ROOT.war



mv myaplicacion.war $CATALINA_HOME/webapps/ROOT.war


Si se encuentra la carpeta ROOT cambiarle el nombre o borrarlo. En el ejemplo cambiamos el nombre.






mv ROOT ROOT_


Levantar el tomcat y listo!

¿ Como es la estructura de directorios de Tomcat ?

server.xml es el archivo principal de configuración para Tomcat, al igual que otros archivos de configuración para productos empleados en servidor puede contener una gran variedad de parámetros, sin embargo, esta guía se concentrará en los parámetros principales.

El archivo server.xml es un archivo en XML, el cual de no contener una estructura conforme a XML, se indicará al arranque de Tomcat; dicho archivo se encuentra bajo el directorio /etc/tomcat6, si se instalo con apt-get o rpm; si se descomprimió la distribución binaria estará en $CATALINA_HOME/conf.

Como cualquier otro documento en XML todo contenido entre es considerado un comentario, y por lo tanto cualquier parámetro que se encuentre entre estos caracteres no es utilizado por "Tomcat"; aquellos parámetros que no sean definidos dentro de server.xml son asignados un valor "Default" por Tomcat.

Server

es el elemento principal del archivo server.xml y todas las demás secciones deben encontrarse entre estos nodos; el atributo port indica el puerto TCP donde se espera la señal de cierre (shutdown) de Tomcat, el cual rara vez es modificado.


Listener

A través de los elementos se configuran las extensiones JMX ("Java Management Extensions") que serán utilizadas por Tomcat, dichos elementos toman dos atributos : className que indica la Clase diseñada para escuchar sobre eventos JMX y debug para especificar el nivel de "debug" generado al tiempo de ejecución. Si entrar en detalle de JMX esto permite monitorizar Tomcat con cualquier aplicación.


GlobalNamingResources , Resource y ResourceParams

Anidado dentro de los elementos es posible definir recursos JNDI para ser utilizados globalmente en Tomcat. Lo anterior evita que estos recursos tengan que ser declarados a nivel de WAR de manera individual.

A través de es como define el tipo de recurso JNDI que será utilizado y mediante se especifican los parámetros específicos que tomará el recurso en dicha instancia de Tomcat.

Connector

El elemento Connector representa las conexiones (Puertos TCP) que serán abiertas por Tomcat al arranque, a su vez dentro de cada elemento Connector se definen diversos atributos los cuales dan más detalles acerca de la conexión.

El elemento Connector más importante es aquel que define la clase: HttpConnector.


< Conector>

maxThreads="150" minSpareThreads="25"

maxSpareThreads="75"

enableLookups="false"

redirectPort="8443" acceptCount="100"

debug="0" connectionTimeout="20000"

disableUploadTimeout="true" />


La declaración anterior indica que Tomcat esta dispuesto a dar respuesta a requisiciones que arriben en el puerto 8080 del "Host" donde esta instalado Tomcat; si recuerda la ejecución y pruebas en tomcat a esto se debió el agregar el fragmento :8080.

Para ambientes de producción en los cuales toda requisición será atendida por Tomcat el parámetro port de este elemento debe ser modificado al valor de 80, este puerto es el ampliamente conocido puerto TCP 80 con el que intenta comunicarse cualquier Navegador("Netscape","Explorer","Opera" u otro) en Internet.

Otras declaraciones para Connectors son aquellas para utilizar encriptación (HTTPS) y los conectores AJP; la configuración de HTTPS es un tanto extensa y no se describirán los detalles, sin embargo, los conectores AJP son aquellos utilizados para la comunicación entre Apache y Tomcat y son los siguientes:


< Connector port="8009"

enableLookups="false" redirectPort="8443"

debug="0"

protocol="AJP/1.3" />


Esta declaración indica que el puerto 8009 estará recibiendo conexiones bajo ajp13, lo anterior es solo de interés si utiliza Apache en conjunción con Tomcat.


Engine

Los elementos los cuales deben encontrarse anidados dentro de representan el mecanismo que atenderá toda solicitud arribada Tomcat, esto es, toda solicitud recibida por las definiciones Connectors será procesada por , los atributos de este elemento son los siguientes:



< Engine name="Catalina" defaultHost="localhost" debug="0">


Defaulthost representa el nombre del servidor Tomcat mientras debug indica el nivel de "debug" generado al tiempo de ejecución.


Logger

Los elementos Logger le indican a Tomcat hacia donde deben ser enviados los registros "Logs":

< Logger className="org.apache.catalina.logger.FileLogger"

directory="logs"

prefix="localhost_log."

suffix=".txt"

timestamp="true" />


Lo anterior indica que los registros de Tomcat deben ser enviados al archivo localhost_log.txt; la ubicación de este registro ("log") puede ser modificada al nivel de los elementos Host los cuales permiten definir Virtual Hosts.


Host

Los elementos Host permiten definir varios Hosts "Virtuales" para Tomcat, esto es, a través del elemento se define un sitio(localhost) para atender solicitudes, a través de Host es posible definir diversos sitios "Virtuales", su configuración es la siguiente:


< Host name="desarrollo.servidorprueba.com"

debug="0"

appBase="webapps"

unpackWARs="true">

Lo anterior indica que el sitio desarrollo.servidorprueba.com contiene sus aplicaciones (Archivos WAR) bajo el directorio $CATALINA_HOME/webapps; el atributo unpackWARs le indica a Tomcat que debe descomprimir los archivos WAR's al arranque. En java las aplicaciones web se empaquetan con la extensión war.

Como ya fue mencionado, dentro de estos elementos es posible utilizar para generar registros ("logs") por cada sitio virtual.

Context

Context es un elemento utilizado para indicar la ubicación de las aplicaciones ejecutadas en Tomcat, en su configuración "Default" estas aplicaciones se encuentran dentro del directorio webapps bajo el directorio raíz de Tomcat ( /usr/local/tomcat ), o en entornos que se descomprimió la versión binaria $CATALINA_HOME/webapps.

Una aplicación en Tomcat o cualquier Servlet Engine(Web-Container) es un conjunto de "JSP's (Java Server Pages)" y/o "Servlets" agrupados con ciertos parámetros de arranque y seguridad, este conjunto de archivos / aplicación en todo Servlet Engine es conocido como un WAR (Web-Archive).

En conclusión todos los wars (aplicaciones web empaquetadas) o las aplicaciones web sin empaquetar van en donde indica la propiedad path del tag context.

¿ Como ejecutar Tomcat ?

Para ejecutar tomcat debe ejecutar el siguiente comando:


./$CATALINA_HOME/bin/start.sh


Donde $CATALINA_HOME es el directorio donde esta instalado tomcat.

Si tomcat se instalo por medio de apt-get o rpm tambien se puede ejecutar de la siguiente forma:


./etc/init.d/tomcat6 start


Y en debian también:


invoke-rc.d tomcat6 start


Comprobar instalación:


Ingresar a algún browser (firefox por ejemplo) y ingresar a la url: http:localhost:8080/ y si la instalación fue exitosa se vera la siguiente pagina:


¿ Como descomprimir la distribución binaria ?

Instalar jdk:

Bajar de java.sun.com la versión de jdk superior a 1.5 para la distribución de linux que corresponda.


wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u2-linux-i586.bin?BundledLineItemUUID=LlxIBe.oig0AAAEiNBFGFS8k&OrderID=vDpIBe.oECkAAAEiIRFGFS8k&ProductID=KRDACUFBSAQAAAEYifo5AXuS&FileName=/jdk-6u2-linux-i586.bin


Cambiar el permiso del archivo descargado:


chmod 770 jdk-6u2-linux-i586.bin


Ejecutar binario:


./jdk-6u2-linux-i586.bin


Aceptar el termino de licencia.

Mover la jdk y crear link para que linux tome la nueva jdk:


mv jdk-1_6_0_02 /usr/local/java

cd /usr/local/java

ln -s jdk-1_6_0_02 java


Obtener Tomcat, desempaquetarlo y mover lo al directorio donde se quiera ubicar la instalación, en el ejemplo se mueve a /usr/local/:


wget http://apache.patan.com.ar/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz

tar xvfz jakarta-tomcat-6.0.20.tar.gz

mv jakarta-tomcat-6.0.20 /usr/local/

cd /usr/local

ln -s jakarta-tomcat-4.1.29 tomcat

Configurar las siguientes variables de entorno:


export JAVA_HOME=/usr/local/java/java

export CATALINA_HOME=/usr/local/tomcat

export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:/sbin:/usr/sbin

export CLASSPATH=$CATALINA_HOME/bin/bootstrap.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/common/lib/servlet.jar:/usr/local/pgsql/share/java/postgresql.jar:../lib/struts.jar