2013-12-08 3 views
0

Весь день я работаю над этой проблемой. У меня есть рабочее пространство с этим Структур:пружинные зависимости в моей иерархии проектов

  • CMn-Lib (общие базовые алгоритмы) # Java
  • стп-сервер (логика на основе общего сервера) # Java
  • стп-дао (интерфейс базы данных) # Java
  • кв-кот (кот проект) # Java
  • кв-клиент (клиент) # Android

стп-сервер, а также стп-дао с использованием Spring (The тесты проходят без проблем). Весенняя конфигурация cmn-server-spring.xml включает общий-dao-spring.xml (для некоторых классов Handler нужна поддержка Dao). Это стп-сервера spring.xml:

<?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-2.5.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 
    <context:annotation-config /> 
    <import resource="cmn-dao-spring.xml" /> 
    <bean id="scoreHandler" class="de.bc.qz.handler.score.ScoreHandler" 
     autowire="byName"> 
    </bean> 
</beans> 

теперь я хочу, чтобы включить все эти Librarys Into QZ-котом. Проблема заключается в том, что исключение:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [cmn-dao-spring.xml] 
Offending resource: URL [jar:file:/C:/Users/BC/qz/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/quiz-tomcat/WEB-INF/lib/cmn-server.jar!/cmn-serv-spring.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from URL [jar:file:/C:/Users/BC/qz/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/quiz-tomcat/WEB-INF/lib/cmn-server.jar!/cmn-dao-spring.xml]; nested exception is java.io.FileNotFoundException: JAR entry cmn-dao-spring.xml not found in C:\Users\BC\qz\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\quiz-tomcat\WEB-INF\lib\cmn-server.jar 
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68) 
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85) 
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76) 

Это происходит, когда я начинаю свой местный кот. cmn-server и cmn-dao включены как JAR с помощью «Web Deployment Assembly».

Однако ... Мое WebAPP Brokes во SpringBeanAutowiringSupport:

@WebServlet("/ScoreServlet") 
public class ScoreServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    @Autowired 
    ScoreHandler mScoreHandler; 
    @Autowired 
    TransferAdapter mTransferAdapter; 

    ScoreCreator mScoreCreator; 

    public void init(ServletConfig config) throws ServletException { 
     super.init(config); 
     SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, 
       config.getServletContext()); 
    } 

что-то не так в моем CMn-server.jar? Я думаю, что главная проблема заключается в том, что линия, за исключением:

IOException parsing XML document from URL [jar:file:/C:/Users/BC/qz/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/quiz-tomcat/WEB-INF/lib/cmn-server.jar!/cmn-dao-spring.xml 

Там нет общего дао-spring.xml в моей CMn-server.jar. Я добавил проект cmn-dao в cmn-сервер через Java Build Path->Project->Add->cmn-dao Эта конфигурация подходит для тестов JUnit, но не для развернутого Jar-файла.

Знает кого-нибудь, как исправить эту проблему.

Спасибо за помощь.

ответ

0

Вы должны хранить свои файлы конфигурации Spring в баночках, к которым они принадлежат, и неплохо использовать стандартное местоположение META-INF/spring. То, что вы хотите сделать, это сказать Spring, чтобы найти файл конфигурации на пути к классам:

<import resource="classpath:[/META-INF/spring]/cmn-dao.xml" /> 

Кроме того, обратите внимание, что по-видимому, есть несоответствие в вашем наименовании, которое может быть единственной проблемой, на самом деле нарушая ваше выполнение: Вы постоянно переключаются между cmn и common и имеющие или не имеющие spring в конце. Выберите одно соглашение и используйте его.

+0

Значит, вы имеете в виду, что я удаляю dao-ссылку из cmn-server-spring.xml и создаю местоположение через ваш пример? У вас есть ссылка для учебника? Отличие именования зависит только от моего вопроса ... –

+0

Обратите внимание, что 'META-INF' обычно не находится в пути к классам. –

+0

@StefanBeike Вопрос в вашем комментарии неясен. Исправьте свой вопрос; не отправляйте код «это своего рода моя реальная проблема».Я говорю, что вы используете 'classpath:', чтобы сообщить Spring искать импортированный XML-файл контекста в другой банке в пути к классам. Все остальные обычные правила применяются. – chrylis

Смежные вопросы