SCA com Java Parte 2

No post anterior eu falei um pouco sobre SCA e como esse padrão funciona. Agora vou mostrar um exemplo simples de como implementar um composite SCA feito em Java utilizando o Fabric3.Neste exemplo você vai precisar de:
Neste exemplo vou criar um serviço composto de utilidades que será composto pelo serviço de Data. O Serviço de data nada mais faz do que informar a data atual no servidor. Sem mais delongas vamos ao código dos serviços. Cada serviço tem a sua interface de negócio(contrato) e a sua implementação em Java.

DateService.java
package com.blogspot.diegopacheco.sca.services;

/**
* Interface do servico de datas
*
* @author Diego Pacheco
* @version 1.0
* @since 17/05/2009
*
*/
public interface DateService {
String getDate();
}



Agora vamos a implementação Java.

DateServiceImpl.java
package com.blogspot.diegopacheco.sca.services;

import java.util.Date;

/**
* Implementação do servico de datas.
*
* @author Diego Pacheco
* @version 1.0
* @since 17/05/2009
*
*/
public class DateServiceImpl implements DateService{

@Override
public String getDate() {
return new Date().toString();
}

}

Agora vamos a implementação do Serviço(Composite) que utiliza outro serviço. Primeiro vamos ver a sua interface de negócio e depois a sua implementação de facto.

UtilitiesService.java
package com.blogspot.diegopacheco.sca.services;

/**
* Interface do servico de Utilidades
*
* @author Diego Pacheco
* @version 1.0
* @since 17/05/2009
*
*/
public interface UtilitiesService {
String getDate();
}

Agora vamos ver a sua implementação em Java.

UtilitiesServiceImpl
package com.blogspot.diegopacheco.sca.services;

import org.oasisopen.sca.annotation.Reference;

/**
* Implementação do servico de Utilidades com SCA.
* Essa classe recebe a injecao de referencia de servicos via SCA
* e prove funcionalidades de utilidades simples como saber a data atual.
*
* @author Diego Pacheco
* @version 1.0
* @since 17/05/2009
*
*/
public class UtilitiesServiceImpl implements UtilitiesService{

private DateService dateService;

public UtilitiesServiceImpl(@Reference(name = "dateService")DateService dateService) {
this.dateService = dateService;
}

@Override
public String getDate() {
return dateService.getDate();
}   

}

Nessa classe aparece o uso da anotação @Reference que utiliza outro serviço o Serviço de Datas. A configuração de composição vem a baixo.

web.composite










  








O Arquivo a cima também é conhecido como SCDL, que é o descritor do composite SCA. Aqui estão a definição da implementação dos componentes e a composição. Perceba que existe uma composição com implementação Web que é a descrição do Servlet que irá consumir o composite do serviço de utilidades.Vamos ao servlet que consome o serviço.

package com.blogspot.diegopacheco.sca.ui.servlet;

import java.io.IOException;
import java.io.Writer;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.oasisopen.sca.annotation.Reference;

import com.blogspot.diegopacheco.sca.services.UtilitiesService;

/**
* Servlet para teste de SCA
*
* @author Diego Pacheco
* @version 1.0
* @since 17/05/2009
*
*/
public class UtilitiesServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

@Reference
protected UtilitiesService us;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Writer out = response.getWriter();
out.write("Fabric3 SCA Test");
out.write("

Utilities Service Result

"); out.write(" A Data eh:" + us.getDate()); out.write(""); out.flush(); out.close(); } }

Pereceba que ele recebe a injeção de um outro serviço que é o Serviço de utilidades. Agora você precisa gerar o war dessa aplicação, isso é feito sem complexidade com o maven e fazer o deploy no Fabric3.

Configurando o Fabric3

Basta baixar a versão standalone e instalar o perfil web na pasta extensions, isso é feitop extraindo os arquivos da extensão web na pasta extensions, você pode instalar outras extenções como JMS, Hessian e outras.

Agora você precisa copiar o war do maven para dentro da pasta deploy do fabric3 server e subir o servidor que pode ser feito com o comando: java -jar server.jar.

Agora você pode acessar a aplicação web para testar o uso de SCA deste exemplo. Para isso acesso no seu browser: http://127.0.0.1:8181/utilities/

Se você quizer pode obter os fontes completos com as configurações do maven e bem como todos os arquivos para aplicação web no meu repositório do SVN neste link.

Abraços e até a próxima.

Popular posts from this blog

Telemetry and Microservices part2

Installing and Running ntop 2 on Amazon Linux OS

Fun with Apache Kafka