Ajuda Spring

7 respostas
fabioebner

Pessoal estou comecando a mexer com spring para isso fui nesse site: http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensource-para-sistemas-web-parte-2-final/

e peguei a apostila q se encontra aqui:
Primeiro de tudo, leia este artigo feito pelo Phillip Calçado (Shoes)
apostila-spring.pdf
Valeu Ebertom pela hospedagem! =)

legal ate ae beleza. estou tentando fazer o exercicio da pagina 29 Advice tipo Around..

perfeito.. eu fiz tudo certinho

segue as classes

UsuarioDao.class
public class UsuarioDao {
    public void salvar(Usuario usuario, Conexao conexao){
    String sql = "INSERT INTO USUARIOS VALUES(" + usuario.getLogin() + ")";
    System.out.println("DAO: Executando SQL=[" + sql + "]");
    conexao.executar(sql);
    }
}
Usuario.class
class Usuario {

    public Usuario(String nome) {
        
    }
    public String getLogin() {
        return " fabioebner";
    }
}
Conexao.class
class Conexao {

    public void executar(String sql) {
        System.out.println("executado");
    }
    boolean isAberta() {
        return false;
    }
    void abrir() {
        System.out.println("abrir");
    }
    void fechar() {
        System.out.println("fechar");
    }
}
VerificaConexaoDisponivelAdvice.class
public class VerificaConexaoDisponivelAdvice implements MethodInterceptor {

    public Object invoke(MethodInvocation invocacao) throws Throwable {


        Object[] argumentos = invocacao.getArguments();
// pega a conexão passada como parâmetro
        Conexao conexao = (Conexao) argumentos[1];
// se não existe conexão, retorne
        if (conexao == null) {
            System.out.println("Nenhuma conexão passada");
            return null;
        } else {
            // se a conexão existe mas não está aberta, abra-a
            if (!conexao.isAberta()) {
                System.out.println("Conexão fechada, abrindo...");
                conexao.abrir();
            }
            // execute o método
            try {
                System.out.println("Invocando...");
                invocacao.proceed();
            } catch (Throwable e) {
                // problemas na execução do método!
                e.printStackTrace();
            } finally {
                //Fechando conexão usada
                System.out.println("Fechando Conexão...");
                conexao.fechar();
            }
            // este método não tem retorno (void)
            return null;

        }
    }
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="usuarioDaoTarget" class="around.UsuarioDao" />

    <bean id="usuarioDao" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="interceptorNames">
            <value>verificaConexaoDisponivelAdvice</value>
        </property>
        <property name="target" ref="usuarioDaoTarget" />
    </bean>

    <bean id="verificaConexaoDisponivelAdvice" class="around.VerificaConexaoDisponivelAdvice" />
</beans>
e executarSpring.clss
public class executarSpring {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:/around/applicationContext.xml");
        UsuarioDao dao = (UsuarioDao) applicationContext.getBean("usuarioDao");
        Usuario usuario = new Usuario("pcalcado");

        // conexão fechada...
        System.out.println("Primeiro exemplo");
        Conexao conexao = new Conexao();
        dao.salvar(usuario, conexao);
        System.out.println("-------------------------");
        // sem conexão...
        System.out.println("Segundo exemplo");
        dao.salvar(usuario, null);
        System.out.println("-------------------------");
        System.out.println("Terceiro exemplo");
        Conexao conexao2 = new Conexao();
        conexao2.abrir();
        dao.salvar(usuario, conexao2);         
    }
}

td isso no netbeans.. fui la com o botao direito em library Add, adicionei a do Spring Framework 2.5 q vem com ele.. perfeito
na hora de rodar acontece o seguinte erro:

5/07/2009 16:16:11 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@14d3343: display name [org.springframework.context.support.ClassPathXmlApplicationContext@14d3343]; startup date [Wed Jul 15 16:16:11 BRT 2009]; root of context hierarchy
15/07/2009 16:16:11 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [around/applicationContext.xml]
15/07/2009 16:16:11 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@14d3343]: org.springframework.beans.factory.support.DefaultListableBeanFactory@127734f
15/07/2009 16:16:11 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@127734f: defining beans [usuarioDaoTarget,usuarioDao,verificaConexaoDisponivelAdvice]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'usuarioDao': FactoryBean threw exception on object creation; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
at org.springframework.beans.factory.support.AbstractBeanFactory$3.run(AbstractBeanFactory.java:1310)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:1299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1272)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:206)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:883)
at around.executarSpring.main(executarSpring.java:18)
Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type
at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:180)
at net.sf.cglib.core.KeyFactory.(KeyFactory.java:66)
at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)
at org.springframework.aop.framework.Cglib2AopProxy.createEnhancer(Cglib2AopProxy.java:225)
at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:152)
at org.springframework.aop.framework.ProxyFactoryBean.getProxy(ProxyFactoryBean.java:351)
at org.springframework.aop.framework.ProxyFactoryBean.getSingletonInstance(ProxyFactoryBean.java:306)
at org.springframework.aop.framework.ProxyFactoryBean.getObject(ProxyFactoryBean.java:232)
at org.springframework.beans.factory.support.AbstractBeanFactory$3.run(AbstractBeanFactory.java:1304)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 16 more
Java Result: 1

alguem sabe o pq???
pelo q eu andei pesquisando parece q falta o jar cglib2 porem no meu library do netbeans esta la o lazarento spring framework - cglib-2.2.jar

obrigado

7 Respostas

rod

Veja se tem algum jar como esse: asm.jar ou asm-X.X.X.jar

fabioebner

Cara nao tinha nao, coloquei ele e deu esse erro agora:

<blockquote>run:

15/07/2009 19:50:18 org.springframework.context.support.AbstractApplicationContext prepareRefresh

INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@bf32c: display name [org.springframework.context.support.ClassPathXmlApplicationContext@bf32c]; startup date [Wed Jul 15 19:50:18 BRT 2009]; root of context hierarchy

15/07/2009 19:50:20 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

INFO: Loading XML bean definitions from class path resource [around/applicationContext.xml]

15/07/2009 19:50:20 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory

INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@bf32c]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1df073d

15/07/2009 19:50:21 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons

INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1df073d: defining beans [usuarioDaoTarget,usuarioDao,verificaConexaoDisponivelAdvice]; root of factory hierarchy

Exception in thread main org.springframework.beans.factory.BeanCreationException: Error creating bean with name usuarioDao: FactoryBean threw exception on object creation; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(I)V

at org.springframework.beans.factory.support.AbstractBeanFactory$3.run(AbstractBeanFactory.java:1310)

at java.security.AccessController.doPrivileged(Native Method)

at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:1299)

at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1272)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:206)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)

at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:883)

at around.executarSpring.main(executarSpring.java:18)

Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(I)V

at net.sf.cglib.core.DebuggingClassWriter.(DebuggingClassWriter.java:47)

at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)

at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)

at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)

at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)

at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)

at org.springframework.aop.framework.Cglib2AopProxy.createEnhancer(Cglib2AopProxy.java:225)

at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:152)

at org.springframework.aop.framework.ProxyFactoryBean.getProxy(ProxyFactoryBean.java:351)

at org.springframework.aop.framework.ProxyFactoryBean.getSingletonInstance(ProxyFactoryBean.java:306)

at org.springframework.aop.framework.ProxyFactoryBean.getObject(ProxyFactoryBean.java:232)

at org.springframework.beans.factory.support.AbstractBeanFactory$3.run(AbstractBeanFactory.java:1304)

 7 more

Java Result: 1

BUILD SUCCESSFUL (total time: 6 seconds)

</blockquote>

o q pode ser??

valeu

rod

Posta o codigo do seu bean usuarioDao e XML do spring, parece ter algo de errado com ele ou com sua configuracao no XML.

fantomas

Dá uma olhada neste post http://www.guj.com.br/posts/list/89798.java.

Acho que irá ajudar.

flws

S

Meus amigos...
tabm estou tentando implementar os exemplos do nosso amigo "Shoes"

estou implementando o exemplo do Advice Before e After, fiz tudo como esta na apostila mas to com o seguinte erro:

[color=red]/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

18/02/2010 11:17:04 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@14d3343: display name [org.springframework.context.support.ClassPathXmlApplicationContext@14d3343]; startup date [Thu Feb 18 11:17:04 BRST 2010]; root of context hierarchy
18/02/2010 11:17:04 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [config.xml]
18/02/2010 11:17:04 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@14d3343]: org.springframework.beans.factory.support.DefaultListableBeanFactory@127734f
18/02/2010 11:17:04 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@127734f: defining beans [gerenciadorArquivo,logAdvice,gerenciadorArquivoTarget,publicadorDeNoticiasBean]; root of factory hierarchy
18/02/2010 11:17:05 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@127734f: defining beans [gerenciadorArquivo,logAdvice,gerenciadorArquivoTarget,publicadorDeNoticiasBean]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'publicadorDeNoticiasBean' defined in class path resource [config.xml]: Cannot resolve reference to bean 'gerenciadorArquivo' while setting bean property 'gerenciadorArquivos'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gerenciadorArquivo': FactoryBean threw exception on object creation; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:274)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1274)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:413)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:735)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:122)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:66)
at PublicadorDeNoticias.main(PublicadorDeNoticias.java:49)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gerenciadorArquivo': FactoryBean threw exception on object creation; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
at org.springframework.beans.factory.support.AbstractBeanFactory$3.run(AbstractBeanFactory.java:1310)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:1299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1272)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:206)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:268)
... 17 more
Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type
at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:180)
at net.sf.cglib.core.KeyFactory.(KeyFactory.java:66)
at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)
at org.springframework.aop.framework.Cglib2AopProxy.createEnhancer(Cglib2AopProxy.java:225)
at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:152)
at org.springframework.aop.framework.ProxyFactoryBean.getProxy(ProxyFactoryBean.java:351)
at org.springframework.aop.framework.ProxyFactoryBean.getSingletonInstance(ProxyFactoryBean.java:306)
at org.springframework.aop.framework.ProxyFactoryBean.getObject(ProxyFactoryBean.java:232)
at org.springframework.beans.factory.support.AbstractBeanFactory$3.run(AbstractBeanFactory.java:1304)
... 23 more
Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 32 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////[/color]

abaixo segue o config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">


<!--
    Document   : config.xml
    Created on : 13 de Fevereiro de 2010, 15:53
    Author     : Toshiba
    Description:
        Purpose of the document follows.
-->
<beans>

    <bean id = "gerenciadorArquivo"
          class = "org.springframework.aop.framework.ProxyFactoryBean">

        <property name = "interceptorNames"><value>logAdvice</value></property>
        <property name = "target" ref = "gerenciadorArquivoTarget"/>
    </bean>


    <bean id = "logAdvice"
          class = "LogAdvice"/>


    <bean id = "gerenciadorArquivoTarget"
          class = "GerenciadorArquivos"/>


    <bean id="publicadorDeNoticiasBean"
          class ="PublicadorDeNoticias" >

        <property name = "gerenciadorArquivos" ref = "gerenciadorArquivo"/>

    </bean>  

</beans>

Alguem pode me ajudar???

Obrigado!

pcalcado

Oi, Scopel,

Você está tentando rodar o exemplo com uma cópia recente do Spring Framework, certo? Bom, essa apostila é de 2006, o Spring ainda estava na versão 1 (na verdade, a versão 2 foi lançada durante uma das turmas deste curso…) e hoje em dia temos o Spring 3! Eu nunca main tentei rodar os exemplos mas imagino que dificilmente seriam compatíveis…

Obrigado pelo up no tópico, entretanto. Desde 2006 que eu perdi esta apostila e finalment consegui uma cópia. Se conseguir algum tempo vou ver se a atualizo, parece que ela ajudou muita gente…

S

Grande homem…
pelo que ja visitei de topicos e foruns, observei que esta apostila ja passou na mao de muita gnt msm … é otima para quem ta iniciando o estudo do spring aop, como eh meu caso., porem igual vc comentou os exemplos estao na versao 1 e nao estao sendo compativeis com as versoes recentes… é exatamente o que acredito que esta acontecendo comigo…
estou utilizando a versao Spring Framework 2.5, e tentando entender mais o conceito de @AspectJ
bom se conseguir me ajudar em relaçao ao erro acima agradeço, ou se tiver outros exemplos de implementaçoes de spring aop e quiser disponibilizar pra mim tentar entender tbm fico grato…
Vou torcer para vc ter tempo o quanto antes para atualizar a apostila…hehe
Grande abraço
td de bom

Criado 15 de julho de 2009
Ultima resposta 1 de mar. de 2010
Respostas 7
Participantes 5