2015-08-27 8 views
3

Я использую Liberty Profile v8.5.5.5 (WebSphere Application Server 8.5.5.5/wlp-1.0.8.cl50520150221-0034) на IBM J9 VM, версия pxa6470sr1-20120330_01 (SR1) (en_US)JNDI Поиск не работает Профиль Liberty

У меня установлена ​​функция jndi ... но независимо от того, что я делаю, я не могу сделать простой поиск JNDI.

В моей server.xml

<jndiEntry jndiName="schoolOfAthens/defaultAdminUserName" value="plato" /> 

Мой код ... (это просто сервлет несколько строк)

Object jndiConstant = new InitialContext().lookup(
"schoolOfAthens/defaultAdminUserName"); 

Но это терпит неудачу с:

javax. naming.NameNotFoundException: Имя schoolOfAthens не найдено в контексте "serverlocal: CELLROOT/SERVERROOT".

Код взят непосредственно из примера.

Любые идеи?

Я бегу это на местном уровне и также пытались на моем счете Bluemix ... Тот же результат

+0

Можете ли вы предоставить список функций, которые вы настроили? – Alasdair

ответ

1

нормально, получил эту работу. Я добавил ресурсосбережение реф к моему web.xml и посмотрел его, как это:

Object obj2 = ctx.lookup("java:comp/env/schoolOfAthens/defaultAdminUserName");` 

web.xml

<resource-ref> 
    <description>Test Reference</description> 
    <res-ref-name>schoolOfAthens/defaultAdminUserName</res-ref-name> 
    <res-auth>Container</res-auth> 
</resource-ref> 
0

То же работает для меня на 8.5.5.6, не имеют 0,5 но они должны работать одинаково.

Вот мой мой server.xml:

<server description="new server"> 

    <!-- Enable features --> 
    <featureManager> 
     <feature>servlet-3.1</feature> 
     <feature>jndi-1.0</feature> 
     <feature>localConnector-1.0</feature> 
    </featureManager> 

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" --> 
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/> 


    <applicationMonitor updateTrigger="mbean"/> 

    <webApplication id="JNDITest" location="JNDITest.war" name="JNDITest"/> 
    <jndiEntry jndiName="schoolOfAthens/defaultAdminUserName" value="plato" />  
</server> 

И код сервлета (обратите внимание, что вы можете также использовать @Resource аннотацию вместо поиска):

@WebServlet("/JNDIServlet") 
public class JNDIServlet extends HttpServlet { 
    @Resource(lookup="schoolOfAthens/defaultAdminUserName") 
    String jndiVariable; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     try { 
      InitialContext ctx = new InitialContext(); 
      Object object = ctx.lookup("schoolOfAthens/defaultAdminUserName"); 
      System.out.println("object: " + object); 
      System.out.println("jndiVariable: " + jndiVariable); 
     } catch (NamingException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

с выходом:

object: plato 
jndiVariable: plato 
+0

Оцените ответ. Я тоже попробую ... – James

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