XDoclet

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    XDoclet - Presentation Transcript

    1. XDoclet Glaucio Scheibel
    2. Agenda
      • Por quê?
      • O que é XDoclet?
      • Outros usos
      • Demonstração
      • Criação de módulos
      • Futuro...
    3. Por quê? Qual é o problema que se quer resolver?
    4. Vamos escrever uma Calculadora em SessionBean :-)
      • public class CalculadoraBean implements SessionBean {
        • public int soma(int n1, int n2) {
          • return n1 + n2;
        • }
        • public int subtrai(int n1, int n2) {
          • return n1 - n2;
        • }
        • public void ejbCreate() throws CreateException {}
        • public void setSessionContext(SessionContext ctx) throws EJBException, RemoteException {}
        • public void ejbRemove() throws EJBException, RemoteException {}
        • public void ejbActivate() throws EJBException, RemoteException {}
        • public void ejbPassivate() throws EJBException, RemoteException {}
      • }
    5. Vamos escrever uma Calculadora em SessionBean :-o
      • Pela especificação J2EE 1.4, precisamos também de:
        • 4 Interfaces por EJB (2 locais e 2 remotas):
          • Home
          • LocalHome
          • Remote
          • Local
        • 1 Descritor por Aplicação:
          • Deployment Descriptor (ejb-jar.xml)
      • Ok, só mais 5 arquivos
    6. Vamos escrever uma Calculadora em SessionBean :-o
      • public interface CalculadoraHome extends EJBHome {
        • public Calculadora create() throws CreateException, RemoteException;
      • }
      • public interface CalculadoraLocalHome extends EJBLocalHome {
        • public CalculadoraLocal create() throws CreateException;
      • }
      • public interface Calculadora extends EJBObject {
        • public int soma(int n1,int n2) throws RemoteException;
        • public int subtrai(int n1,int n2) throws RemoteException;
      • }
      • public interface CalculadoraLocal extends EJBLocalObject {
        • public int soma(int n1,int n2);
        • public int subtrai(int n1,int n2);
      • }
    7. Vamos escrever uma Calculadora em SessionBean :-[
      • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
      • <ejb-jar xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd&quot; version=&quot;2.1&quot;>
        • <enterprise-beans>
          • <session>
            • <ejb-name>Calculadora</ejb-name>
            • <home>CalculadoraHome</home>
            • <remote>Calculadora</remote>
            • <local-home>CalculadoraLocalHome</local-home>
            • <local>CalculadoraLocal</local>
            • <ejb-class>CalculadoraBean</ejb-class>
            • <session-type>Stateless</session-type>
            • <transaction-type>Container</transaction-type>
          • </session>
        • </enterprise-beans>
      • </ejb-jar>
    8. Vamos escrever uma Calculadora em SessionBean :-[
      • Foi definido que o componente Calculadora irá executar nos seguintes servidores de aplicação:
        • JBoss AS
        • IBM Websphere
        • BEA Weblogic
        • Sun ONE
        • Adobe JRun
        • Oracle OC4J
        • Pramati
      • Cada servidor de aplicação possui um descritor xml extra para a aplicação, isso aumenta em no mínimo mais 7 arquivos ao total de componentes.
    9. Vamos escrever uma Calculadora em SessionBean +-(
      • JBoss AS
        • jboss.xml
      • IBM Websphere
        • ibm-ejb-jar-bnd.xmi
        • ibm-ejb-jar-ext.xmi
      • BEA Weblogic
        • weblogic-ejb-jar.xml
      • Sun ONE
        • sun-ejb-jar.xml
      • Adobe JRun
        • jrun-ejb-jar.xml
      • Oracle OC4J
        • orion-ejb-jar.xml
      • Pramati
        • pramati-j2ee-server.xml
    10. Conclusão
      • 1 Session Bean com a logica de negócio com 17 linhas passou para:
      • 15 arquivos com mais ou menos 400 linhas entre fontes e xmls, lembrando que não foi incluido webservices e bean de entidade com CMP e CMR.
      • E quem poderá nos ajudar????
    11.  
    12. XDoclet O que é o XDoclet
    13. O que é o XDoclet
      • Javadoc metadata templating engine
      • Motor de geração de código
      • Programação orientada a atributos
      • Anotações / Metadata
      • Tags estilo “JavaDoc”
      • Iniciou no projeto EJBDoclet
      • Pode gerar em torno de 85% do código
    14. Vantagens
      • Escreva apenas um fonte Java para cada componente.
      • Ganhe tempo deixando o XDoclet gerar o código redundante .
      • Extensível – crie seu módulos customizados.
      • J2EE fica fácil :-)
      • Suporte aos servidores de aplicação líderes do mercado.
    15. Arquitetura do XDoclet
      • Construído sobre o XJavaDoc
      • Separado em módulos
      • Templates embutidos
      • Tasks Ant com subtasks dinamicamente carregadas
      • Tag handlers
    16. XJavaDoc
      • Parser de código fonte baseado no JavaCC
      • Cria modelos de:
        • Pacotes
        • Hierarquia de classes
        • Métodos e parâmetros
        • Atributos
        • Construtores
        • Custom @tags
        • Comentários JavaDoc
    17. Programação Orientada à Atributos
      • Também conhecido como Meta-Programação
      • Princípio DRY! (Don't Repeat Yourself!)
        • Filosofia sobre duplicação da informação
      • Programe o domínio do problema
      • Escreva código que escreve código
      • Dê significado ao seu código
    18. XDoclet não é só EJB
      • Servlets
      • Mapeamento Hibernate
      • JDO (Java Data Objects)
      • Tapestry
      • Struts
      • Axis
      • Spring Framework
      • Portlets
    19. De volta a Calculadora – XDoclet Edition :-))
      • /**
      • * @ejb.bean name=&quot;Calculadora&quot; jndi-name=&quot;ejb/Calculadora&quot;
      • */
      • public class CalculadoraBean implements SessionBean {
        • /**
        • * @ejb.interface-method
        • */
        • public int soma(int n1, int n2) {
          • return n1 + n2;
        • }
        • /**
        • * @ejb.interface-method
        • */
        • public int subtrai(int n1, int n2) {
          • return n1 - n2;
        • }
        • (Omitido os métodos obrigadorios ejb*)
      • }
    20. Trabalho de formiga
      • Definição da task Ant :
        • <taskdef name=&quot;ejbdoclet&quot; classname=&quot;xdoclet.modules.ejb.EjbDocletTask&quot;/>
      • Chamada ao ejbdoclet:
        • <ejbdoclet destdir=&quot;srcEJB&quot; ejbspec=&quot;2.1&quot; force=&quot;true&quot;>
          • <remoteinterface/>
          • <localinterface/>
          • <homeinterface/>
          • <localhomeinterface/>
          • <deploymentdescriptor destdir=&quot;META-INF&quot; />
          • <jboss version=&quot;4.0&quot; destdir=&quot;META-INF&quot;/>
          • <jrun destdir=&quot;META-INF&quot;/>
          • <oc4j destdir=&quot;META-INF&quot;/>
          • <sunone destdir=&quot;META-INF&quot;/>
          • <pramati destdir=&quot;META-INF&quot;/>
          • <weblogic destdir=&quot;META-INF&quot;/>
          • <websphere destdir=&quot;META-INF&quot;/>
        • </ejbdoclet>
      Subtasks
    21. Merge-Points
      • Um Merge Point é um ponto de entrada no arquivos gerados pelo XDoclet.
      • Exemplo:
        • Existem session beans que não foram gerados pelo XDoclet, mas devem estar citados no deployment descriptor.
        • Para isto cria-se um arquivo chamado session-beans.xml com as entradas <session></session> no diretório de merge que o XDoclet irá incluí-los.
    22. Chega de papo Demo
    23. Módulos Customizados Construção de Módulos
    24. Criando nosso Módulo
      • Templates XDT
        • XML com o template do código a ser gerado.
      • Classes TagsHandler
        • Tem os seus métodos executados a cada tag localizada no código fonte.
        • Necessário caso criar suas próprias Tags.
      • Classes SubTask
        • Task executada pelo Ant.
    25. Template exemplo
      • <XDtEjbSession:forAllSessionBeans>
        • <session>
          • <ejb-name> <XDtEjb:ejbName/> </ejb-name>
          • <XDtEjb:ifRemoteEjb>
            • <jndi-name> <XDtEjbHome:jndiName type=&quot;remote&quot;/> </jndi-name>
          • </XDtEjb:ifRemoteEjb>
          • <XDtEjb:ifLocalEjb>
            • <local-jndi-name> <XDtEjbHome:jndiName type=&quot;local&quot;/> </local-jndi-name>
          • </XDtEjb:ifLocalEjb>
        • </session>
      • </XDtEjbSession:forAllSessionBeans>
    26. Bola de Cristal E no futuro?
    27. E o futuro? XDoclet2
      • Todo o projeto foi reescrito.
      • Não depende mais do Ant. Utiliza plugins do maven por default.
      • Arquitetura:
        • Generama
          • PicoContainer: mecanismo de plugin's
          • Velocity: templates
          • Jelly: templates
        • QDox: metadata
      • Plugin's prontos:
        • Hibernate
        • Portlet
        • WebWork
    28. Links
      • XDoclet
        • http://xdoclet.sourceforge.net
      • XDoclet2
        • http://xdoclet.codehaus.org
      • Ant
        • http://ant.apache.org
      • XDoclet in Action (livro)
        • http://www.manning.com/books/walls
      • Princípio DRY
        • http://www.artima.com/intv/dry.html
    29. Auxiliaram na montagem dessa palestra:
      • Rodrigo Bernardi
      • Charles Pereira
    30. Obrigado!

    + Glaucio ScheibelGlaucio Scheibel, 2 years ago

    custom

    485 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 485
      • 485 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 4
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories