2013-02-19 3 views
1

В настоящее время у меня есть несколько библиотек в каталоге $ CATALINA_HOME/lib для обработки некоторой аутентификации системы/БД. Один из этих файлов foo.jar содержит класс, который расширяетjava: comp/env не связан

org.apache.catalina.realm.DataSourceRealm 

и используется для аутентификации. Этот файл должен получить доступ к нескольким свойствам, которые я храню в server.xml. Однако при попытке получить к нему доступ я получаю сообщение об ошибке. Сегмент кода выглядит следующим образом:

try{ 
Context ctx = new InitialContext(); 
Context envCtx = (Context)ctx.lookup("java:comp/env"); 

String property = (String)envCtx.lookup("property"); 

} catch(Exception ex) {} 

Любые идеи?

ответ

1

Вам также необходимо иметь связанный ResourceLink в context.xml для вашего приложения. Например, если ваш веб-приложение называется Foo, должен быть файл с именем conf/Catalina/localhost/foo.xml с

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE Context> 

<Context antiJARLocking="true"> 
    <ResourceLink name="property" 
     type="classname" 
     global="propertyNameInGlobalNamingResources" /> 
    ... 
</Context> 

Если включить META-INF/context.xml с этими ссылками в вашей войне файл, кот будет скопировать его в conf/Catalina/localhost/foo.xml в первый раз приложение будет развернуто (хотя не через какое-то время после этого, поскольку вы намерены вносить туда изменения и сможете снова развертывать его без скремблирования)

+0

Спасибо! Мне не хватало аспект ресурсной ссылки. –

+0

@PSU_Kardi, без проблем, его укусил меня несколько раз. – Lucas

Смежные вопросы