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.