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
Agora vamos a implementação Java.
DateServiceImpl.java
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
Agora vamos ver a sua implementação em Java.
UtilitiesServiceImpl
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.
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.
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.