Problemas com Spring

9 respostas
P

Boa noite Amigos do Fórum,

Estou implementando um exemplo sobre utilização de Spring para aplicações web, entretanto estou com problemas na hora de obter a leitura do applicationContext.
Criei uma classe de teste para ver se o meu método gravar esta funcionando corretamente i o código o método de teste é o seguinte:

@Test
    public void testGravar() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Usuario usuarioTeste = new Usuario();
        usuarioTeste.setLogin("guest");
        usuarioTeste.setNome("Guest");
        usuarioTeste.setSenha("guest");
        
        System.out.println("Tentando Gravar Usuário");
        
        UsuarioFacade instance = (UsuarioFacade) context.getBean("usuarioFacade");
        Usuario result = instance.gravar(usuarioTeste);

        try {
            assertNotNull(result.getIdUsuario());
        } catch (AssertionError e) {
            fail("Falhou a gravação do usuário");
        }
    }

i o meu applicationContext esta da seguinte maneira:

<?xml version="1.0" encoding="UTF-8"?>

<!--
    Document   : applicationContext.xml
    Created on : February 22, 2012, 9:50 PM
    Author     : markos
    Description: XML de configuração do SPRING
-->

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                             http://www.springframework.org/schema/aop/ http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
                             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

       <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
           <property name="location" value="classpath:/jdbc.properties" />
       </bean>

       <bean id="dataSource" class="com.mchange.v2.cp3p0.ComboPooledDataSource" destroy-method="close">
           <property name="driverClass" value="${jdbc.driverClassName}" />
           <property name="jdbcUrl" value="${jdbc.url}" />
           <property name="user" value="${jdbc.username}" />
           <property name="password" value="${jdbc.password}" />
       </bean>

       <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
           <property name="dataSource" ref="dataSource" />
           <property name="jpaVendorAdapter">
               <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                   <property name="showSql" value="true" />
                   <property name="generateDdl" value="false" />
                   <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
                </bean>
           </property>
       </bean>

       <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
           <property name="entityManagerFactory" ref="entityManagerFactory" />
       </bean>

       <tx:annotation-driven />

       <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

       <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

       <bean id="usuario" class="dominio.Usuario" scope="session" />
       <bean id="usuarioDAO" class="dao.UsuarioDAO" />
       <bean id="usuarioFacade" class="facade.UsuarioFacade">
           <property name="usuarioDAO" ref="usuarioDAO" />
       </bean>

       <bean id="contato" class="dominio.Contato" scope="session" />
       <bean id="contatoDAO" class="dao.ContatoDAO" />
       <bean id="contatoFacade" class="facade.ContatoFacade">
           <property name="contatoDAO" ref="contatoDAO" />
       </bean>

       <bean id="endereco" class="dominio.Endereco" scope="session" />
       <bean id="enderecoDAO" class="dao.EnderecoDAO" />
       <bean id="enderecoFacade" class="facade.EnderecoFacade">
           <property name="enderecoDAO" ref="enderecoDAO" />
       </bean>

       <bean id="meioContato" class="dominio.MeioContato" scope="session" />
       <bean id="meioContatoDAO" class="dao.MeioContatoDAO" />
       <bean id="meioContatoFacade" class="facade.MeioContatoFacade">
           <property name="meioContatoDAO" ref="meioContatoDAO" />
       </bean>
</beans>

meu arquivo de properties:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/agenda
jdbc.username=root
jdbc.password=admin

A exceção que esta sendo levantada é a seguinte:

WARNING: multiple versions of ant detected in path for junit 
         jar:file:/home/markos/netbeans-6.9.1/java/ant/lib/ant.jar!/org/apache/tools/ant/Project.class
     and jar:file:/home/markos/NetBeansProjects/agenda-jar/lib/Hibernate/ant-1.6.5.jar!/org/apache/tools/ant/Project.class
Testsuite: facade.UsuarioFacadeTest
Feb 24, 2012 7:23:12 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4d865b28: display name [org.springframework.context.support.ClassPathXmlApplicationContext@4d865b28]; startup date [Fri Feb 24 19:23:12 BRST 2012]; root of context hierarchy
Feb 24, 2012 7:23:12 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
Tests run: 9, Failures: 0, Errors: 1, Time elapsed: 0.186 sec

------------- Standard Error -----------------
Feb 24, 2012 7:23:12 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4d865b28: display name [org.springframework.context.support.ClassPathXmlApplicationContext@4d865b28]; startup date [Fri Feb 24 19:23:12 BRST 2012]; root of context hierarchy
Feb 24, 2012 7:23:12 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
------------- ---------------- ---------------
Testcase: testGravar(facade.UsuarioFacadeTest):        Caused an ERROR
Line 16 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 16 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:369)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:313)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:290)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:158)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:184)
        at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:112)
        at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:79)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:97)
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:411)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:338)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:122)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:66)
        at facade.UsuarioFacadeTest.testGravar(UsuarioFacadeTest.java:49)
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1916)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3103)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
        at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:78)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:361)


Test facade.UsuarioFacadeTest FAILED
test:
Deleting: /tmp/TEST-facade.UsuarioFacadeTest.xml
BUILD SUCCESSFUL (total time: 1 second)

O erro é levantado ao passar pela linha:

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

Será que alguém poderia me dar uma luz do que estou fazendo de errado ou deixando de fazer ????

Desde já agradeço pela ajuda de todos.

:lol:

9 Respostas

H

Boa noite pinguin-suni,

Será que o seu teste unitário está conseguindo encontrar o arquivo XML de configuração do Spring ?

P

Boa Noite,

Creio que sim pois ele levanta uma exceção na tag beans que esta definida no mesmo…

Você teria alguma sugestão ?

Desde já agradeço

:idea:

H

Porque as vezes um erro é mascarado por outro. Correto seria FileNotFoundException mas existem casos em que um desenvolvedor do framework adiciona msg personalizada
ao tratar uma exception.

Engraçado que quando eu usava spring eu tinha que adicionar uns wildcards para ele encontrar o xml.

H

Esse cara está tendo um erro parecido.

Repare que a mensagem não é FileNotFoundException…

Note o que foi respondido… algo relativo à encontrar o xml…

P

Então,

Fiz um teste i coloquei o cabeçalho de inclusões da tag beans todos na mesma linha.
O erro gerado no console mudou da linha 16 para linha 10 logo podemos concluir q a aplicação esta encontrando o XML
Entretanto não estou conseguindo identificar a origem do problema.
Vou comparar o meu arquivo com o arquivo descrito no livro q estou lendo pra ver se por acaso nao deixei nada para trás.

Valeu pela ajuda.

G

pinguin-suni,

O seu application-context está correto? vc está mesmo utilizando Spring 2.0 em 2012? essa é uma versão muito antiga…

Esse erro costuma acontecer quando vc coloca a biblioteca em outra versão 2.5 ou 3.x por exemplo, e declara a xsi:schemaLocation de uma versão diferente…

Confere isso e fica a dica para utilizar uma versão mais recente!

P

Então meu kro amigo Gbzao…

Realmente ouve um equivoco meu onde… eu estava usando os jars do Spring 2.5, realizei a alteração do cabeçalho do applicationContext.xml para:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop/ http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

Mas o problema persiste…

Como eu havia comentado… eu não tenho conhecimento no Spring… i estou lendo um livro justamente para ter uma noção de como o mesmo funciona.

Desde já agradeço pela ajuda…

:lol:

P

Alguém mais ?

B

Percebi que no seu namespace tem uma barra extra na linha:

http://www.springframework.org/schema/aop/

tente mudar para:

http://www.springframework.org/schema/aop

(sem a barra no final)
Pode ser isso o problema.

Criado 24 de fevereiro de 2012
Ultima resposta 3 de mai. de 2012
Respostas 9
Participantes 4