Ресурс пользовательских свойств Glassfish не загружается из файла - PullRequest
0 голосов
/ 30 декабря 2010

Я развернул веб-приложение (war) в Glassfish v3 и пытаюсь заставить его читать его из свойств, определенных в пользовательском ресурсе.

В моем приложении я определил свойства как:

@Resource(mappedName = "TestServletProperties")
private Properties properties;

и используйте его так:

protected void doGet(final HttpServletRequest request,
        final HttpServletResponse response) throws ServletException,
        java.io.IOException
{
    String propertyOne = properties.getProperty("testServlet.propertyOne");
    String propertyTwo = properties.getProperty("propertyTwo");

    StringBuffer buffer = new StringBuffer("Properties Retrieved\n");
    buffer.append("Property One: " + propertyOne + "\n");
    buffer.append("Property Two: " + propertyTwo + "\n");

    try
    {
        response.getWriter().write(buffer.toString());
    }

    catch (Exception ex)
    {
        try
        {
            log.warn("Exception thrown", ex);
            response.getWriter().write(ex.getStackTrace().toString());
        }
        catch (IOException io)
        {
            log.warn("IOException thrown", io);
        }
    }            
}

В Glassfish я создал собственный ресурс JNDI с именем TestServletProperties типа java.util.Properties и с использованием класса фабрики org.glassfish.resources.custom.factory.PropertiesFactory. В ресурсе есть одно свойство "fileName", значение которого равно абсолютному пути файла свойств:

/Program Files/glassfishv3/glassfish/domains/domain1/applications/Test/WEB-INF/classes/TestServlet_lab.properties

Я тоже пробовал

c:\Program Files\glassfishv3\glassfish\domains\domain1\applications\Test\WEB-INF\classes\TestServlet_lab.properties

Я подтвердил, что файл существует и содержит указанные свойства. К сожалению, в моем ответе я возвращаю "null" для обоих значений.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Решение состоит в том, что вы должны использовать полностью квалифицированное имя org.glassfish.resources.custom.factory.PropertiesFactory.fileName вместо простого fileName.

0 голосов
/ 07 февраля 2011

Возможно, причина в том, что у вас есть файл web.xml с заголовком версии сервлета 2.4 (или более старой).

@ Ресурс и другие аннотации обрабатываются только в том случае, если в заголовке файла web.xml имеется хотя бы версия 2.5. Убедитесь, что вы не просто меняете версию, а копируете и вставляете новый заголовок откуда-то, поскольку пространство имен отличается.

Надеюсь, это поможет

...