• Nenhum resultado encontrado

Jetty o pequeno grande servidor Java para web

N/A
N/A
Protected

Academic year: 2021

Share "Jetty o pequeno grande servidor Java para web"

Copied!
18
0
0

Texto

(1)

Jetty

o pequeno grande

servidor Java para web

Julio Viegas

Arquiteto de software/sistemas - SPC Brasil

Instrutor Java - Fontoura Education/Sun Microsystems

http://creativecommons.org/licenses/by/3.0/

(2)

Perfil profissional

+10 anos na area de tecnologia.

Desenvolvedor, Instrutor, Mentor.

SCJP 5, SCJA 1, SCEA 1 e 5, SCDJWS 1.4 e 5, SCWCD 1.4, SCBCD 5, Sun T3(Sun Certified Java Instructor).

Atualmente atua como arquiteto de software e sistemas no SPC Brasil e como Instrutor Sun Microsystems/Fontoura.

Hobista em eletronica analogica e digital. MCUs 8051 e Renesas

M16C. Viciado em Unix, Wii, Twitter e blogueiro ocasional. Colaborador em diversas comunidades relacionadas a desenvolvimento de tecnologia.

Mais em julioviegas.com.

(3)

Agenda

O projeto Jetty Funcionalidades

Arquitetura básica do container Instalando e executando o Jetty Configuração

Realizando deploy i-Jetty

Continuations/Comet Cluster com Terracotta

Extras e referências adicionais

(4)

Um container servlet 2.5, APENAS ISSO!

Desenvolvido por um time estavel desde 1995.

Comunidade vibrante e de alto nivel!

Foi o container web padrao do JBoss.

Grande suporte a Web 2.0: AJAX e Web Assincrona.

Adotado pelo Google App Engine e GWT, Yahoo Zimbra, Eclipse Foundation...

Embutido em varios outros produtos: Cisco, Hadoop, Android...

Suporte comercial fornecido por Webtide Hack friendly!

O projeto Jetty

(5)

Market share em crescimento

O projeto Jetty

(6)

Funcionalidades

Pequeno em tamanho e footprint.

Performático.

Simples. Baseado em POJO!

Configuracao: programatica e XML.

Estavel - sem memory leaks.

Gratis, aberto e livre.

Escolha padrao quando o assunto eh Web Assincrona!

Threadpool simples com suporte a queue.

DI/IoC(antes mesmo do spring popularizar a coisa!).

Graceful stop & star.

(7)

Funcionalidades adicionais

MultiPartFilter.

JNDI (para quem ainda precisa disso).

Modularizacao Maven.

Integracao com OSGi(bundles a partir da versao 6.1.15).

QoS Filter: evolucao do DoSFilter.

SSO via SPI SSORealm; Implementacao padrao HashSSORealm.

Plugin para Eclipse.

JTS: Atomikos, JOTM...

Terracotta session cluster(cache com persistencia, grid, cluster lock).

Adicionais: gzip, ssl, plugin ant, jaas provider...

(8)

HandlerCollection, ContextHandler, SessionHandler, ResourceHandler, ServletHandler

WebInfConfiguration Configuration

TagLibConfiguration

SelectChannelConnector host

port

forwarded idleMs acceptors queueSize

lowResourcesConnections lowResourcesMaxIdleTime QueuedThreadPool

low/max idleMs

Arquitetura

(9)

download e unzip(jetty-6.1.xx.zip)!

contexts: hotdeploy!

etc: config examples

extras: integraçoes opcionais(terracotta,jboss, spring) lib

modules: fontes mavenizados patches: "mods" nos fontes

webapps/webapps-plus: aplicacoes start.jar

deb, rpm, windows service wrapper...

compile via maven

Instalando

(10)

Via xml: java -jar start.jar etc/jetty.xml Via codigo: server.start();

Teste em http://localhost:8080/test Graceful stop: kill -TERM pid

Executando

(11)

XML com DI/IoC

<Configure id="Server" class="org.mortbay.jetty.Server">

<Set name="ThreadPool">

<New class="org.mortbay.thread.QueuedThreadPool">

<Set name="maxThreads">1000</Set>

</New>

...

Programatico

Server server = new Server(8080);

Context root = new Context(server,"/",Context.SESSIONS);

root.addServlet(new ServletHolder(new HelloServlet("Ciao")), "/*");

server.start();

Configuracao

(12)

Estatico: WebAppDeployer

Diretorio: webapps/${contexto}

War: webapps/${contexto}.war Zip: webapps/${contexto}.war Root: webapps/root

Hot deploy: ContextDeployer

atualize a configuracao do contexto

<?xml version="1.0" encoding="ISO-8859-1"?>

<Configure class="org.mortbay.jetty.webapp.WebAppContext">

<Set name="contextPath"><Property name="foo"/></Set>

<Set name="war">./webapps/foo.war</Set>

</Configure>

Demo hello

Realizando deploy

(13)

Android Demo

i-Jetty

(14)

Request > Connection > Thread AJAX Pooling? NAO!

Devolva as threads para o ThreadPool!

HTTP stateless

HTTP stateful: isso nao existe!

Comet + Bayeux WebSockets?

Demo pooling vs continuations vs comet

Continuations

(15)

Escalabilidade simples

Cluster: várias JVM como uma única!

NAM – Network-Attached Memory

Grid(paradigma Master/Worker com TIM Messaging) Grátis e aberto

O particionamento é pago!

Cluster Terracotta

(16)

DSOs – Distributed Shared Objects = Cluster HEAP

DMI – Distributed Method Invocation = Distributed Notification/Listener

Synchronized em cluster: synchronized, wait, notify, java.util.concurrent

Integrações: Spring(Web Flow e Security), Ehcache, Hibernate, Tomcat, Jetty, Cglib...

Cluster Terracotta

(17)

Demo Terracotta

Demo Jetty + Terracotta

Cluster Terracotta

(18)

?

Obrigado!

Perguntas

Referências

Documentos relacionados

Ao adquirir o título de transporte com um dos Cartões Prestige Gémeos ficam garantidos os riscos de Morte ou Invalidez Permanente da Pessoa Segura, superior a

Afinal, nós podemos tirar algo para nossa vida pela imitação, mas também como um aviso para não repetir o erro de outro?. Assim como os outros métodos, algumas perguntas devem

No presente trimestre o Fundo Revita deu continuidade ao trabalho inicial de recuperação de habitações danificadas e de apoios a agricultores, acelerando o processo

The questionnaire included questions related to age, sport modality, practice time, training frequency, professionalism and sponsorship in sports practice, number of races, injuries

De fato, convinha que a sabedoria de Deus, ao edificar a Igreja para ser o templo de sua morada, apresentasse Maria santíssima como modelo de cumprimento da lei, de purificação

TC-2278/026/15, em dois volumes, com seis anexos a ele vinculados, o Acessório 1 — Acompanhamento da Gestão Fiscal (TC-2278/126/15), bem como o expediente TC-2460/003/15, que

A empresa Vital Care tem uma oportunidade de mercado colocando o Álcool Care em sua linha produtiva e para isso precisa elaborar seu preço de venda corretamente a fim de

• No Main Menu (Menu Principal); prima esta tecla para abrir um modo de teste, Results Manager (Gestor de Influências), Settings (Definições), Job (Tarefa) ou Last Results