2013-06-20 3 views
0

У меня есть EAR с JAR и WAR и beans.xml с определениями Spring. Я использую Maven для создания этого проекта. Код внутри JAR пытается найти beans.xml, но он не находит его.Как найти Spring beans.xml

Хочу ли я beans.xml в:

EAR в META-INF/beans.xml?
или
JAR's META-INF/beans.xml?

Я попытался следующие вещи:

Отказ 1: Jar в META-INF/beans.xml

String CONFIG_FILE_NAME = "META-INF/beans.xml"; 

ApplicationContext context = new FileSystemXmlApplicationContext(CONFIG_FILE_NAME); 
BeanFactory factory = context; 

Это дает:

BeansDeployer развернуть org.apache.webbeans .exception.WebBeansException: невозможно прочитать корневой элемент данного входного потока. ... Вызванный: java.net.ConnectException: Тайм-аут соединения: подключение

Отказ 2: Ухо в META-INF/beans.xml

String CONFIG_FILE_NAME = "classpath*:/META-INF/*beans.xml"; 

ApplicationContext context = new ClassPathXmlApplicationContext(CONFIG_FILE_NAME); 
BeanFactory factory = context; 

Это дает FileNotFoundException, потому что maven- ear-plugin копирует только application.xml, но не включает beans.xml, когда EAR'ing приложения. Если это правильный метод, есть ли способ сделать Maven включать beans.xml при его создании?

Или это должно быть в другом месте, полностью?

С уважением

ответ

1

Согласно this answer "Вообще говоря, вы не должны ничего в META-INF самостоятельно ставить." Почему вы предполагаете, что он должен находиться внутри META-INF?

Но, если вы хотите, чтобы он скопировался в папку META-INF вашего уха, поместите его под свой каталог ejb/src/main/resources/META-INF. Возможно, вам придется создать некоторые из них вручную.