Я хочу использовать регистратор в своем веб-приложении Java.
Я использую JBossAS 6.0.0.final, cdi (weld), jsf... и т.д. Seam Solder предлагает использовать абстрактный логгер не привязываясь к конкретной реализации (slf4j, log4j и т.д) используя jboss-loging api.
Для того чтобы получить этот логгер в вашем коде нужно будет написать
@ Inject
org.jboss.logging.Logger log
У seam-solder.jar есть производитель этого регистратора.
package org.jboss.seam.solder.log;
...
class LoggerProducers
{
@ Produces
org.jboss.logging.Logger produceLog (InjectionPoint injectionPoint) {}
}
Когда я развертываю свое приложение, я получаю сообщение об ошибке
15:51:18,300 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to Start: name=vfs:///C:/Java/jboss-6.0.0.Final/server/default/deploy/kamis-web-client.5.0.0-SNAPSHOT.ear_WeldBootstrapBean state=Create: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@Default] at injection point [[field] @Inject private ru.kamis.suite.webclient.web.breadcrumbs.BreadcrumbsManager.log]
Это связано с тем, что в файле seam-solder.jar нет файла META-INF/beans.xml, а он необходим для контейнера cdi.
Если вручную добавить файл beans.xml в seam-solder.jar, то приложение работает ХОРОШО.
Как обойтись без хаков?
Для создания своего приложения я использую maven, поэтому мое решение неудобно и НЕ подходит.
PS: Бывший проект Weld-Extensions содержал файл META-INF/beans.xml в банке.