私はJBoss 7.4に複数のJavaEE6アプリケーション(.war)をデプロイしています。 これらのアプリケーションにはすべて、シングルトンBeanの実装を提供する共通ライブラリが含まれています。 このシングルトンBeanは、JBoss modulesフォルダを使用してアプリケーションごとに異なる設定がされており、アプリケーション固有の情報をログに記録する必要があります。bean内のグローバルjndi名を調べる
しかし、どのアプリケーションがどのログ・ラインから来るのかを区別するのは難しいです。
サーバは、アプリケーションごとに開始します(私の-APP1、私-APP2、...)私は、ログに次の出力を持っている場合:
INFO 10:45:54,998 (EjbJndiBindingsDeploymentUnitProcessor.java:setupJNDIBindings:183) -JNDI bindings for session bean named MyBean in deployment unit deployment "my-app1.war" are as follows:
java:global/my-app1/MyBean!my.package.MyBean
java:app/my-app1/MyBean!my.package.MyBean
java:module/MyBean!my.package.MyBean
java:global/my-app1/MyBean
java:app/my-app1/MyBean
java:module/MyBean
この出力は私が必要とする正確に何であるので、I私は、私は必要としない、JNDI経由で豆をルックアップする方法についての膨大な情報を、見つけ、これを研究すると
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import org.apache.log4j.Logger;
@Singleton
@Startup
public class MyBean {
private static final Logger log = Logger.getLogger(MyBean.class);
@PostConstruct
private void postConstruct() {
String appName = ""; // .getGlobalJndiNameOfThisInstance();
log.info("MyBean available for application " + appName);
// and log further application specific info
}
}
:MyBeanとは、自分のコードに展開された時のグローバルJNDI名を取得したいと思います。どういうわけかnew InitialContext()
を作成してapp-nameを抽出できますか?
を、これは私のソリューションです。 –
追加依存:\t 'コード \t \t \t net.sf.extcos \t \t \t extcos \t \t \t 0.4b \t \t ' –