Big Data/ Java/ Play Framework

#Devcommerce slides da palestra sobre Manifesto Reativo e painel Big Data

devcommerce

Wow! Adorei a primeira conferência para desenvolvedores na indústria de e-commerce.

Para quem estava buscando os slides da apresentação sobre o manifesto reativo, está disponível para baixar:
Slides da palestra.

Gostaria de agradecer toda manifestação de apoio, aplausos e perguntas realizadas no evento e pós evento, foi muito legal conhecer todos vocês e saber que o pessoal realmente se interessou pelo manifesto reativo e novas técnicas de desenvolvimento de software para a indúsitra de e-commerce.

Obrigado Tiago Baeta, pelo apoio; Toda a equipe do e-Commerce Brasil pela fantástica organização do evento, estão de parabéns.

#Goreactive!
#GoBigData

Big Data/ Java/ Play Framework/ Scala

Hangout do movimento Reativo e o Play Framework

hangout-header

Hoje mais cedo prometi no Twitter o seguinte:

Promessa é dívida, então agora no momento em que estou escrevendo o post, atingimos a marca de 10011 inscritos no movimento, ele já foi traduzido para português Brasil e Português de Portugal, estará em breve no site.

Hangout confirmado e será distribuído o video pelo Youtube como fiz com o do AngularJS.

Informações do evento
Quando será? 04 de Abril 2015 11 de Abril 2015
Preço? Gratuito
Onde? On-line na seguinte URL
Quem pode participar? Devs Scala, Java e Curiosos sobre a plataforma Reativa
Qual Conteúdo? Aprenda um pouco como criar aplicativos com o Play Framework, APIs REST e como criar sistemas de alta escalabilidade.

Compartilhe, ajude a divulgar, on-line não existe limite de participantes, da última vez do Hangout com a participação de todos, conseguimos juntar quase 1k de pesssoas ao vivo durante o evento.

 [Atualizado 30 de Março 2015] 

Devido a muitos me pedirem para mudar a data devido o feriado, mudei para o dia 11 de Abril 2015. Ajustem suas agendas por que a data mudou. E como todos estão com várias dúvidas, é melhor perguntar ao vivo do que vê apenas a gravação.

Java/ Play Framework

Play framework servindo XML e JSON ao mesmo tempo

play_framework_dicas

É comum quando você está criando sua API do zero, ter o suporte fora da caixa em JSON; Que é o padrão REST de tráfego de dados atualmente e usado por todos.

E quando sua API fala com vários players de mercado e esses players usam tecnologias diferentes? Uma boa parcela adota o JSON como padrão, já outras ainda estão amarrados ao XML. Tudo por causa do legado deixado. À exemplo disso, tem muita empresa que ainda usa Oracle 9g e 10g que não tem suporte padrão ao JSON por parte da Oracle, tendo que depender de packages de terceiros.

Teorias a parte, ainda tem muito software antigo em uso que fizeram implementação SOAP 1.1 e pararam por ai, difícil você convencer um player a mudar a sua saída para consumir nossos serviços. O interessante seria você dar a solução e criar uma interface que deixe o cliente o mais confortável possível para ele conseguir se comunicar com sua API.

Ter suporte a XML é uma forma natural de todos falarem naturalmente com seus serviços e o sucesso da integração completa é quase certo.

Enfim, o Play Framework dá suporte a saída XML e JSON nativamente fora da caixa. O problema existe quando você quer servir ambas as coisas em uma única requisição.

Para você conseguir nesse ponto, basta você interceptar qual o Content-Type da chamada e assim direcionar o uso para o formato requisitado.

package controllers;
 
import com.fasterxml.jackson.databind.node.ObjectNode;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
 
/**
 * Created by igorcosta on 14/01/15.
 */
public class BlogController extends Controller {
 
    private static final String RESPONSE_APPLICATION_XML_TYPE = "application/xml";
    private static final String RESPONSE_XML_TYPE = "text/xml";
    private static final String RESPONSE_APPLICATION_JSON_TYPE = "application/json";
 
 
    public static Result ola() {
        String headerType = request().getHeader("Content-Type");
        String retorno = null;
        if (headerType.contains(RESPONSE_APPLICATION_XML_TYPE) ||
                headerType.contains(RESPONSE_XML_TYPE)) {
 
            if (headerType.equals(RESPONSE_APPLICATION_XML_TYPE)) {
 
                response().setContentType(RESPONSE_APPLICATION_XML_TYPE);
            } else {
                response().setContentType(RESPONSE_XML_TYPE);
            }
            // Use any java lib to generate a better xml 
            retorno = "Ola Mundo";
 
        } else if (headerType.contains(RESPONSE_APPLICATION_JSON_TYPE)) {
            // Serving just plain json
            ObjectNode result = Json.newObject();
            result.put("mensagem","Ola Mundo");
            retorno = result.toString();
        }
 
        return ok(retorno);
    }
}

Screenshot from 2015-01-14 12:29:03

Você interceptando o tipo do conteúdo da chamada, você pode servir os dois formatos.

Como o Play faz o auto-generate do Header da chamada, é importante também sobrescrever o retorno da chamada, caso contrário você tem um retorno em pleo text/plain.

Java/ Play Framework

Habilitando CORS no Play Framework 2.3.x

wired

É bem comum quando você trabalha com diferentes servidores e recursos separados por uma vasta rede de servidores, ou você contorna isso usando Nginx, proxies ou você implementa uma abordagem diferente quando chega nesse nível.

CORS, basicamente é o problema mais comum em lhe dar com chamadas AJAX hoje em dia, por exemplo esse post foi inspirado nessa necessidade.

No Play Framework você samba um pouquinho para conseguir adicionar suporte a CORS nas chamadas que forem executadas por lá.

Para quem usa Tomcat, pode usar o filtro que o Ebay disponibilizou no Github.

Como funciona no Play?

Crie um arquivo na pasta Raiz:Global.java

 
import play.GlobalSettings;
import play.libs.F.Promise;
import play.mvc.Action;
import play.mvc.Http;
import play.mvc.SimpleResult;
 
public class Global extends GlobalSettings {
    private class ActionWrapper extends Action.Simple {
        public ActionWrapper(Action<?> action) {
            this.delegate = action;
        }
 
        @Override
        public Promise<SimpleResult> call(Http.Context ctx) throws java.lang.Throwable {
            Promise<SimpleResult> result = this.delegate.call(ctx);
            Http.Response response = ctx.response();
            response.setHeader("Access-Control-Allow-Origin","*");
            response.setHeader("Access-Control-Allow-Methods", "POST, HEAD, PATCH, GET, PUT, DELETE, OPTIONS");
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
            return result;
        }
    }
 
    @Override
    public Action<?> onRequest(Http.Request request, java.lang.reflect.Method actionMethod) {
        return new ActionWrapper(super.onRequest(request, actionMethod));
    }
}

Salve e execute qualquer chamada REST que você tenha de serviço no Play, o cabeçalho agora aparecerá para você assim:

 
 
    Status Code: 200 OK
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
    Access-Control-Allow-Methods: POST, HEAD, PATCH, GET, PUT, DELETE, OPTIONS
    Access-Control-Allow-Origin: *
    Content-Length: 3322
    Content-Type: application/json; charset=utf-8

Fácil né? Para chegar até aqui foi complicado, então deixo aqui o registro para futuros devs Java que tiverem esses problemas para resolver de forma mais rápida que eu.

Até o próximo post, dúvidas, deixem seus comentários.

Flex/ Flex 4/ Flex e Java/ Java/ Notícias

Novo curso : Flex 4 para desenvolvedores Java

curso_flex_java
E mais um curso sai do forno para todos os nossos leitores, amigos, clientes, quem já trabalha com Java e quer usar o Flex já na atual versão 4.0 pode aprender com quem sabe do asunto, o Stefan é o nosso instrutor oficial para o curso, você vai aprender todos os aspectos necessários para sair de vez na frente da concorrência e adotar o Flex como front-end de suas aplicações Java.

Confira abaixo a grade do curso. Quer fazer a matrícula, visite o site oficial.

Unidade 1 : Ambiente

Download e instalação Flash Builder
Download e instalação do Eclipse Galileu Java EE
Download e instalação MySQL
Configuração de projeto Java
Configuração de projeto Flex
Novidades do Flex 4 SDK

Unidade 2 : Introdução ao BlazeDS

Download e instalação
Entendendo os arquivos de configuração

Unidade 3 : Comunicando Adobe Flex com Java

HTTPServices
WebServices
Usando Proxy do BlazeDS
RPC ( Remote Procedure Calls )

Unidade 4 : Comunicação em Real-Time (Messages)

Entendendo o cenário – Data Push
Configuração
Desenvolvendo primeiro exemplo

Unidade 5 : Comunicação entre Flex e POJOs – RPC

Entendendo o cenário
Configuração
Desenvolvendo o primeiro exemplo
Criando os projetos
Referenciando a biblioteca
Realizando a primeira conexão de teste

Unidade 6 : Hibernate e Flex

Download e instalação – Hibernate
Configuração do projeto Java
Mapeamento objeto-relacional no Java
Mapeamento de objetos no Flex
Meu primeiro CRUD

Unidade 7 : Transferência de arquivos através do BlazeDS

Fazer Upload de arquivos
Fazer Download de arquivos

Unidade 8 : FlexSession

Entendendo o cenário
Desenvolvendo um exemplo
Controlando a sessão
Controlando níveis de usuários

Flex/ Flex e .net/ Flex e Java/ Java/ Live Cycle/ Notícias/ RIA/ RIA com Ajax/ Ruby On Rails/ Sexta-Flex Talkshow/ SilverLight

Palestra: Conheçendo a familia WebOrb com Mark Piller

mark
Na próxima sexta-feira temos um encontro marcado on-line com o Mark Piller, fundador e idealizador da TheMidnightcoders.com a primeira empresa a ter um produto fora Macromedia(Adobe) para serviços remotos com a plataforma Flash desde a época do Flash MX.

Mark Piller vai nos prestigiar com 2 horas de palestra mostrando todos os produtos comerciais da the Midnight coders. Dentre eles sua linha de produtos WebOrb Server para (PHP, Java, .Net e Ruby on Rails). Que fazem troca de objetos nativos e mais uma gama de recursos são só para Flex mais para Flash, Ajax e Silverlight.

Durante a palestra você pode conhecer de perto o próprio criador e como funciona os produtos da Midnight Coders. O Mark ficou muito feliz em poder palestrar especialmente para os Brasileiros.

Anote ai em sua agenda de compromissos: Dia 18/09/2009 às 09:00 da manhã horário de Brasília.

O endereço para entrar na sala é : http://experts.na3.acrobat.com/palestras/

Conto com a presença de todos que participaram da última palestra e de você leitor.

Flex/ Flex e Java/ Java/ Tomcat

Just Java 2009 – Dobradinha Flex

Ano passado, palestrei sobre Flex com Java na 7 edição do maior evento da comunidade Java no Brasil. Novamente este ano, vamos falar de Flex para todos os Javianos no evento. Com o título “Criando experiências ricas na Internet com Flex e Java“, mostrando todos os aspectos de possibilidades entre os dois mundos, Live Code e Cases de sucesso do casamento do Flex com o Java.

É justamente onde entra a colaboração dos nossos leitores. Você quer que o seu case seja mostrado na minha palestra? Envie-me 3 screenshots de sua aplicação que comprove que ela é feita com Flex e Java, seu nome e empresa (se aplicável).

Nos vemos dia 15. Espero contribuir mais ainda para a comunidade Java sobre os benefícios do Flex.

Confira aqui a grade do Evento.

BlazeDS/ Flex/ Flex e Java/ Java

Estensões para o BlazeDS

Quando uma solução vira open-source e tendo uma comunidade gigantesca ao redor do mundo que pode colocar as mãos no código fonte, vira um espetáculo de experiência.

É o caso do BlazeDS, pouco mais de 6 meses de vida o produto já tem as seguintes soluções como estesão de acesso para melhorar seu uso. Vale a pena visitar cada projeto desse e incrementar seu BlazeDS.

Full Lazy Load para BlazeDS – http://code.google.com/p/dphibernate/
SpringFactory para logins seguros – http://code.google.com/p/blazeds-addons
Data Services Adapters e Factories – http://code.google.com/p/dsadapters/
Flex Mail Adapter – Envie e-mails direto do seu BlazeDS fácilmente – http://code.google.com/p/flexserverlib/
Como trabalhar com BlazeDS, Spring e Flex – http://code.google.com/p/maven-blazeds-spring-archetype/