2015-08-27 71 views
3

我在IBM J9 VM版本pxa6470sr1-20120330_01(SR1)上使用Liberty概要文件v8.5.5.5(WebSphere Application Server 8.5.5.5/wlp-1.0.8.cl50520150221-0034) (en_US)JNDI查找在Liberty概要文件上失敗

我安裝了jndi功能...但無論我做什麼,我都無法做簡單的JNDI查找。

在我的server.xml

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

我的代碼...(這僅僅是一個幾行的servlet)

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> 

和servlet代碼(看一看,你也可以使用@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

相關問題