Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!



Video: Introdução ao JBoss Seam - Parte 1

Esta vídeo aula apresenta o JBoss Seam.

Título:

Tempo: 15:15 min

Mini Resumo: Esta vídeo aula apresenta o JBoss Seam.

Exemplos construídos: Criação e configuração do Seam e criação de uma página de teste chamando um componente Seam via ajax.

Palavras chave: JavaServer Faces, Facelets, JBoss Seam, Rich Faces.




    8 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Leonardo Z. Carbone
Olá Marcos!
Uma dúvida, na primeira vídeo aula você cria um projeto jsf simples e adiciona as bibliotecas do seam. Em outra aula você usa o Seam Generator que cria um projeto novo com toda uma estrutura diferente. Qual a diferença entre o primeiro projeto (aula 1) e o projeto gerado pelo Seam Gen. Ambos são aplicações seam ?

Desde já agradeço!

Leonardo


em 3/3/2009 00:18 - Responder

 

[Comentário do autor]   Marcos Sousa
Olá Leornado,

O meu objetivo em criar os dois tipos de projetos foi mostrar como é possível criar um projeto sem ajuda de IDEs para explicar com mais detalhes o funcionamento do framework e depois que havia explicado e demonstrado os conceitos básicos, demonstrei como seria o desenvolvimento usando o gerador de códigos do seam.

Qual usar? Bom se o código seam-gen atende suas necessidades e se dará mais produtividade, use o seam-gen. Haverá projetos que será mais produtivo fazendo na mão e projetos que serão mais produtivos usando o seam-gen.

Abraços,

--
Marcos Sousa
www.marcossousa.com


em 3/3/2009 22:52 - Responder
 

José Celeste
Ola Marcos, kra eu não sei o que esta acontecendo já é a terceira vez que tento fazer esse projeto e não consegui sair do primeiro projeto, queria pedir sua ajuda, acredito que depois de sair do primeiro ate seria mais facil continuar os estudos do jboss seam, queria ver se seria possivel desponibilizar o projeto para download, para mim comparar o que dando errado no meu....


desde já Agradeço...


segue o log...

Oct 29, 2008 9:34:55 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '5' did not find a matching property.
Oct 29, 2008 9:34:55 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:SeamTest' did not find a matching property.
Oct 29, 2008 9:34:55 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre1.6.0_07\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre1.6.0_07/bin/client;C:/Arquivos de programas/Java/jre1.6.0_07/bin;C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Oct 29, 2008 9:34:55 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Oct 29, 2008 9:34:55 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 431 ms
Oct 29, 2008 9:34:55 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Oct 29, 2008 9:34:55 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.16
Oct 29, 2008 9:34:56 AM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "com.sun.faces.config.ConfigureListener" is already configured for this context. The duplicate definition has been ignored.
Oct 29, 2008 9:34:56 AM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "org.jboss.seam.servlet.SeamListener" is already configured for this context. The duplicate definition has been ignored.
Oct 29, 2008 9:34:56 AM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Sun's JavaServer Faces implementation (1.2_04-b16-p02) for context '/SeamTest'
Oct 29, 2008 9:34:58 AM org.jboss.seam.servlet.SeamListener contextInitialized
INFO: Welcome to Seam 2.0.2.SP1
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/async, package: org.jboss.seam.async, prefix: org.jboss.seam.async
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/framework, package: org.jboss.seam.framework, prefix: org.jboss.seam.core.framework
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/theme, package: org.jboss.seam.theme, prefix: org.jboss.seam.theme
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/bpm, package: org.jboss.seam.bpm, prefix: org.jboss.seam.bpm
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/mail, package: org.jboss.seam.mail, prefix: org.jboss.seam.mail
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/security, package: org.jboss.seam.security, prefix: org.jboss.seam.security
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/web, package: org.jboss.seam.web, prefix: org.jboss.seam.web
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/captcha, package: org.jboss.seam.captcha, prefix: org.jboss.seam.captcha
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/navigation, package: org.jboss.seam.navigation, prefix: org.jboss.seam.navigation
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/core, package: org.jboss.seam.core, prefix: org.jboss.seam.core
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/international, package: org.jboss.seam.international, prefix: org.jboss.seam.international
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/jms, package: org.jboss.seam.jms, prefix: org.jboss.seam.jms
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/transaction, package: org.jboss.seam.transaction, prefix: org.jboss.seam.transaction
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/drools, package: org.jboss.seam.drools, prefix: org.jboss.seam.drools
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addNamespace
INFO: Namespace: http://jboss.com/products/seam/persistence, package: org.jboss.seam.persistence, prefix: org.jboss.seam.persistence
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization initComponentsFromXmlDocument
INFO: reading /WEB-INF/components.xml
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization initComponentsFromXmlDocuments
INFO: reading jar:file:/D:/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/SeamTest/WEB-INF/lib/jboss-seam-ui.jar!/META-INF/components.xml
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization initComponentsFromXmlDocuments
INFO: reading jar:file:/D:/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/SeamTest/WEB-INF/lib/jboss-seam.jar!/META-INF/components.xml
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization loadFromResource
INFO: reading properties from: /seam.properties
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization init
INFO: initializing Seam
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.core.locale
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.web.parameters
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.web.isUserInRole
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.core.expressions
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.core.manager
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.bpm.businessProcess
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.core.resourceLoader
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.security.entityPermissionChecker
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.core.locale
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.security.identity
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.web.userPrincipal
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.transaction.transaction
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization addComponentDescriptor
INFO: two components with same name, higher precedence wins: org.jboss.seam.persistence.persistenceProvider
Oct 29, 2008 9:34:59 AM org.jboss.seam.Component <init>
INFO: Component: org.jboss.seam.core.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Init
Oct 29, 2008 9:34:59 AM org.jboss.seam.init.Initialization installComponents
INFO: Installing components...
Oct 29, 2008 9:34:59 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener
java.lang.RuntimeException: Could not create Component: hibernateSessionFactory
    at org.jboss.seam.init.Initialization.addComponent(Initialization.java:989)
    at org.jboss.seam.init.Initialization.installComponents(Initialization.java:911)
    at org.jboss.seam.init.Initialization.init(Initialization.java:589)
    at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:34)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/Interceptor
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetPublicMethods(Unknown Source)
    at java.lang.Class.getMethods(Unknown Source)
    at org.jboss.seam.Component.hasAnnotation(Component.java:1070)
    at org.jboss.seam.Component.<init>(Component.java:229)
    at org.jboss.seam.Component.<init>(Component.java:217)
    at org.jboss.seam.init.Initialization.addComponent(Initialization.java:974)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.Interceptor
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 26 more
Oct 29, 2008 9:34:59 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Oct 29, 2008 9:34:59 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/SeamTest] startup failed due to previous errors
Oct 29, 2008 9:35:00 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Oct 29, 2008 9:35:00 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Oct 29, 2008 9:35:00 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/47  config=null
Oct 29, 2008 9:35:00 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4505 ms



em 29/10/2008 09:37 - Responder

 

[Comentário do autor]   Marcos Sousa
José,

Pela exceção apresentada, está faltando no projeto a biblioteca do hibernate. Verifique se todas as bibliotecas estão na pasta web-inf/lib:
antlr.jar
asm-attrs.jar
asm.jar
cglib.jar
common-annotations.jar
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
dom4j.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-validator.jar
hibernate.jar
javassist.jar
jboss-el.jar
jboss-seam-ui.jar
jboss-seam.jar
jsf-api.jar
jsf-facelets.jar
jsf-impl.jar
jstl.jar
jta.jar
persistence-api.jar
richfaces-api.jar
richfaces-impl.jar
richfaces-ui.jar
standard.jar

Abraços,

--
Marcos Sousa
www.marcossousa.com


em 3/3/2009 23:08 - Responder
 

Leonardo Jose De Oliveira
Camarada, estou encontrando o seguinte problema ao fazer a parte 1.

xhtml:
<a4j:commandButton value="Hello" actionListener="#{testBean.hello}" reRender="result" limitToList="false" />

java:
    public TestBean() { }
   
    public void hello (ActionEvent e) {
        result = "Hello "+ firstName +" "+ lastName;
    }

Ao clicar no botão Hello, recebo o exception:

SEVERE: javax.el.MethodNotFoundException: /pages/test.xhtml @18,111 actionListener="#{testBean.hello}": Method not found: com.seam.beans.TestBean@6bf551.hello(javax.faces.event.ActionEvent)
    at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:72)
    at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:99)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771)
    at javax.faces.component.UICommand.broadcast(UICommand.java:372)
    at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
    at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
    at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
    at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
    at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)






em 21/7/2010 12:46 - Responder

 

  Leonardo Jose De Oliveira
o eclipse importou o ActionEvent errado.

Errado: java.awt.event.ActionEvent

Correto: javax.faces.event.ActionEvent

Obrigado


em 21/7/2010 13:13 - Responder
 

Gustavo Jose De Souza
Marcos,
Como ficaria criar o projeto no eclipse?


em 12/9/2011 16:32 - Responder

 

  Dyego Souza Do Carmo
Você teria que usar o WTP e colocar tambem o plugin do seam , de resto fica identico :)


em 14/9/2011 09:06 - Responder
 



Curso Online
Este post faz parte de:

Curso(s):
  •  Introdução ao JBoss Seam

  • Autor
    Marcos Sousa

    Marcos Sousa (falecomigo at marcossousa dot com, www.marcossousa.com) é desenolvedor Java desde 2004 e já atuou em vários projetos voltados para diversas áreas como: mineração, comércio, educação e governos. Atualmente, é líder de desenvolvimento na Squadra T...


    Space do autor
    Estatísticas
    Favorito:
    Comentários:
    Feedback:
    Utilidade:
    9   2
    [Fechar]

    Você precisa estar logado para dar um feedback.

    Clique aqui para efetuar o login
    [Fechar]
    Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia.

      Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

    Plano conveniência – Neste plano este post custa R$ 8,00 (Compre agora)
    Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

    Plano ocasional: Aqui este post custa: R$ 3,20 (assinante) ou R$ 4,00 (não-assinante)
    Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

    Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ 1,20
    Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

    > Saiba mais sobre o Sistema de Créditos DevMedia
    web-03
    DevMedia  |  Anuncie  |  Fale conosco
    Hospedagem web por Porta 80 Web Hosting
    2012 - Todos os Direitos Reservados a web-03