Carregar o applicationContext a partir do WEB-INF

8 respostas
X

Ja fiz essa pergunta um dia aqui mas não conseguiram me ajudar, com é o seguinte, estou tetando fazer um projeto de teste com Spring usando annotations, coloquei os listerners do spring no web.xml, e ja configurei tudo, mas o que ocorre é o seguinte, o spring não consegue carregar o applicationContext do WEB-INF, ele só encotra o arquivo se eu coloca na pasta “src”, mas os listerners do Spring só procuram o arquivo no WEB-INF, se eu tiro de lá da erro.ALguem sabe como resolver isso?

ja tentei e algumas formas como criar um init-param

ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { getServletConfig()
.getInitParameter(“param”) });

tentei usar request.getRealPath()+/WEB-INF/applicationContext.xml

todas essas formas dão o erro:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/applicationContext.xml] cannot be opened because it does not exist

meu web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Annotations</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <listener>
    <listener-class>
            org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
  
  <listener>
	        <listener-class>
	        org.springframework.web.context.request.RequestContextListener
	        </listener-class>
  </listener>




<servlet>
    <description></description>
    <display-name>Teste</display-name>
    <servlet-name>Teste</servlet-name>
    <servlet-class>pack.Teste</servlet-class>
     <init-param> 
        <description>This is an init parameter example</description> 
        <param-name>param</param-name> 
        <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Teste</servlet-name>
    <url-pattern>/Teste</url-pattern>
  </servlet-mapping>




</web-app>

meu applicationContext

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                          http://www.springframework.org/schema/context
                          http://www.springframework.org/schema/context/spring-context-3.0.xsd">

       <context:annotation-config/>

<bean class="pack.Classe1"  />

<bean class="pack.Classe2"/>


</beans>

agradeço desde ja

8 Respostas

L

você apontou o caminho do appContext no web.xml ?

X

Não, no web.xml só coloquei os listerners, que leem o applicationContext que está no web-inf,. se eu tiro de lá ele não acha o arquivo e da erro.

L

Coloque isso no web.xml

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

Substitui o param-value com o caminho de onde se encontra o seu arquivo de configuração do spring, com o nome dele.

No meu era applicationContext.xml

X

Ja havia tentado dessa forma também, não funcionou

L

Cara. você precisa colocar no web.xml o caminho do applicationContext.xml, a menos que ele se encontre em WEB-INF e tenha se nao me engano o nome applicationContext.xml

Onde está o seu arquivo de configuração do spring.

O que você quer fazer ?

X

o nome do meu arquivo é applicaionContext sim e está no WEB-INF,o que eu quero fazer é simplesmente estudar o funcionamento do Spring IOC usando annotations.É só estudo.

L

Mostra o código que você quer executar e a exceção

X

é esse::

ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "/WEB-INF/applicationContext.xml" });

nessa parte ele não encontra o arquivo, esse é o meu problema, eu ja muito no google, ja vi vários forums, os projetos prontos que eu pego pra comparar com o meu, não são web, são desktop, dai esse arquivo applicationContetx.xml ta sempre no src, dai não em problemas, at´agora não achei nenhum lugar que trate desse problema.

Criado 21 de junho de 2012
Ultima resposta 21 de jun. de 2012
Respostas 8
Participantes 2