Java Web アプリケーションでロガーを使用したいと考えています。
私は JBossAS 6.0.0.final、cdi (weld)、jsf などを使用しています。Seam はんだは、jboss-logging api を使用して具体的な実装 (slf4j、log4j など) に関連付けられていない抽象ロガーを使用することを提案しています。
コードでこのロガーを取得するには、次のように記述する必要があります
@ 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 プロジェクトには、jar 内の META-INF/beans.xml ファイルが含まれていました。