2011-01-28 2 views
0

В последнее время возникло требование передать параметры базы данных из Spring applicationContext.xml. Поэтому мы хотели иметь файл jdbc.properties за пределами встроенных банок, поэтому пользователь может легко изменить jdbc.settings. До сих пор все работало нормально в рабочем пространстве eclipse, но как только я создаю дистрибутив с муравьем, applicationContext.xml больше не найдет jdbc.properties.После развертывания JDBC.Properties вне .Jar не найден Spring больше

applicationContext.xml выглядит следующим образом:

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

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${jdbc.driver}"/> 
    <property name="url" value="${jdbc.url}"/> 
    <property name="username" value="${jdbc.user}"/> 
    <property name="password" value="${jdbc.password}"/> 
</bean> 

В затмении я использовал следующий путь к классам, так jdbc.properties (который находится в папке проекта Eclipse «конфигурации») собирающийся найдено:

файл классы:

<classpath> 
     ... 
<classpathentry kind="src" path="config"/> 
     ... 
</classpath> 

пока здесь все работает отлично. Теперь я создаю проект с Ant. Создается project.jar и отдельная папка config рядом с ним, а также файл jdbc.properties. В Manifest.mf есть запись:

config/jdbc.properties 

Но когда я теперь запустить сервер, то jdbc.properties не найдены. Я заметил, что когда я меняю запись Manifest.mf на:

config/. 

он снова работает отлично. Но я не понимаю, почему это другое. Может ли кто-нибудь объяснить мне такое поведение? Или, может быть, даже знает, что я делаю неправильно? Очевидно, я должен каким-то образом изменить файл Ant, поэтому он просто добавляет папку config в файл манифеста, а не только сам файл jdbc.properties.

Спасибо заранее!

ответ

0

Решение должно заключаться в определении classpathelement в Ant-buildscript.

<classpath> 
    <pathelement location="${dir.build}/config/."/> 
<classpath> 

Unfortunatly Я до сих пор не знаю, почему ссылаюсь непосредственно в файл вратаря решить эту проблему, а также.

1

Путь к классу содержит расположение файлов jar и каталогов, содержащих файлы классов и другие ресурсы. Вы должны указать в своем классе путь к каталогу, содержащему файл свойств, а не по пути к самому файлу свойств. То есть ваш манифест должен быть «config».

+0

Извините, но я вас не понимаю. В моем пути к классам есть только путь к каталогу, который содержит файл свойств, так как «config» - это папка, в которой находятся файлы свойств. Эта запись была автогенерирована eclipse. Из того, что я понял, я должен попытаться изменить файл ant, что manifest.mf указывает только на каталог «config», а не на файл jdbc.properties, как я указал в этом примере. – crusam

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