簡體   English   中英

當我們在一個項目中綁定對象並從第二個項目中查找時,JNDI查找不會發生

[英]JNDI lookup is not happening when we bind object in one project and look up from second

我有兩個Java項目Test1Test2 ,在Test1項目中我有一個帶有以下代碼的servlet

InitialContext initialContext=new InitialContext();
Class.forName("com.mysql.jdbc.Driver");
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/lntdb","root","root");
initialContext.bind("conn", connection);
response.getWriter().println("Bound to JNDI "+initialContext.lookup("conn"));`

上面的代碼將MYSQL數據庫連接對象綁定到名稱為conn JNDI上,然后從Test2項目中嘗試檢索該連接對象。 Test2也有一個帶有以下代碼的servlet

InitialContext initialContext=new InitialContext();
response.getWriter().println(initialContext.lookup("java:comp/env/conn"));

但是我在堆棧跟蹤下面是異常

javax.naming.NameNotFoundException:在此上下文中未綁定名稱[conn]。 找不到[conn]。 在org.apache.naming.NamingContext.lookup(NamingContext.java:820)在org.apache.naming.NamingContext.lookup(NamingContext.java:154)在org.apache.naming.NamingContext.lookup(NamingContext.java:831) )在org.apache.naming.NamingContext.lookup(NamingContext.java:831)在org.apache.naming.NamingContext.lookup(NamingContext.java:831)在org.apache.naming.NamingContext.lookup(NamingContext.java: 168)在org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)在javax.naming.InitialContext.lookup(Unknown Source)在com.lnt.TestServlet.doGet(TestServlet.java:19)在javax.servlet org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)處的javax.servlet.http.HttpServlet.service(HttpServlet.java:722)處的.http.HttpServlet.service(HttpServlet.java:621)位於org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :)上的org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)上的a.core.StandardContextValve.invoke(StandardContextValve.java:123) 168)在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)在org.apache.catalina.core.StandardEngineValve org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)的org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)的.invoke(StandardEngineValve.java:118) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312)處的apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:585)在java.util.concurrent.ThreadPoolExecutor.runWorker( java.util.concurrent.ThreadPoolExecutor $ Worker.run(U上的未知源)(U.java.lang.Thread.run(U上的未知源) 未知來源)

您能否告訴我代碼中有什么問題以及為什么我無法檢索連接對象

在這里,您沒有使用兩個應用程序都通用的特定上下文。 在JNDI中,所有應用程序都有單獨的上下文,並且在第一個應用程序中綁定的對象被吹到第一個應用程序的上下文中,而其他任何應用程序的初始上下文都無法使用這些對象。

您可以點擊鏈接了解內部信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM