У меня есть несколько приложений JavaEE6 (.war), развернутых в JBoss 7.4. Все эти приложения содержат общую библиотеку, которая обеспечивает реализацию Singleton-Bean. Этот singleton-bean настраивается по-разному для каждого приложения с помощью папки модулей JBoss и должен регистрировать некоторую конкретную информацию приложения. Это работает уже отлично.Найти глобальное имя jndi изнутри bean
Однако у меня есть трудности с различием того, какая строка журнала поступает из какого приложения.
При запуске сервера для каждого приложения (мой-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
Этот вывод является именно то, что мне нужно, поэтому я хотел бы получить глобальное имя JNDI, под которым MyBean был развернут в моем коде:
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
}
}
при исследовании этого я только найти обширную информацию о том, как для поиска бобы с помощью JNDI, что мне не нужно. Могу ли я извлечь приложение-имя каким-то образом, создав new InitialContext()
?
это мое решение. –
Добавить зависимость: \t 'код \t \t \t net.sf.extcos \t \t \t extcos \t \t \t 0.4b \t \t ' –