Glassfish 3.1: я работаю в среде разработки или производства? - PullRequest
0 голосов
/ 17 февраля 2012

Каков наилучший способ для приложения JavaEE определить, работает ли оно на сервере Glassfish для разработки или производства?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

Вы можете использовать JNDI для этого. Сделайте следующее:

Создать файл ресурсов:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE resources PUBLIC "-//Sun Microsystems Inc.//DTD Application Server 9.0 Domain//EN" "*<install directory>/lib/dtds/sun-resources_1_3.dtd*">

<resources>
    <custom-resource 
        res-type="java.lang.Boolean" 
        jndi-name="production" 
        factory-class="org.glassfish.resources.custom.factory.PrimitivesAndStringFactory">
            <description>Determines, wether the Frontend is running in Production or not. AFTER CHANGING, FRONTEND NEEDS TO BE REDEPLOYED</description>
            <property name="value" value="true"/> <!-- Change the value as needed -->
    </custom-resource>

</resources>

Затем добавьте его в свой домен через asadmin

asadmin add-resources resources-file.xml

Подробнее см. http://docs.oracle.com/cd/E18930_01/html/821-2416/gixps.html.

Чтобы запросить фактическое значение ресурса:

javax.naming.InitialContext ic = new javax.naming.InitialContext();

if ((Boolean) ic.lookup("production")){
     // PRODUCTION
} else {
     // DEVELOPMENT
}

Если вам нужно различать больше сред, используйте строку вместо логического.

НТН

0 голосов
/ 18 февраля 2012

Если вы используете jsf, попробуйте следующее:

FacesContext fc = FacesContext.getCurrentInstance(); 
Application a = fc.getApplication();
if (a.getProjectStage() == ProjectStage.Development) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...