- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,
我在配置纯 JDBC-JNDI 连接时遇到问题。我没有使用任何特殊框架*(没有 Spring,没有 Hibernate)。我在我的计算机 (localhost) 上运行 Tomcat 8.5.15。数据库位于我已验证连接正常工作的远程服务器中。我已将 JDBC 驱动程序 jar 文件放在 apache-tomcat-8.5.15/lib/driver_lib
中。
我遇到的错误是:
javax.naming.NameNotFoundException: Name [jdbc/KDB] is not bound in this Context. Unable to find [jdbc].
我不确定为什么会收到此消息;我尝试遵循 Tomcat 网站上提到的指南。我也关注了 StackOverflow 上关于此问题的大部分问题,但此消息仍然出现。请帮忙!
apache-tomcat-8.5.15/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<!-- confidential -->
<Resource name="jdbc/KDB"
global="jdbc/KDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="xxxx"
url="xxxx"
username="xxxx"
password="xxxx"
maxActive="100"
maxIdle="20"
minIdle="5"
maxWait="10000"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
[项目]/src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false" version="3.0">
<display-name>Servlet 3.0 Web Application</display-name>
<!-- Application class name -->
<context-param>
<param-name>org.restlet.application</param-name>
<param-value>kk.MainApplication</param-value>
</context-param>
<!-- Restlet adapter -->
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
</servlet>
<!-- Catch all requests -->
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!-- JDNI Resource -->
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/KDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>/user</welcome-file>
</welcome-file-list>
</web-app>
[项目]/src/main/webapp/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<ResourceLink name="jdbc/KDB" global="jdbc/KDB"
auth="Container" type="javax.sql.DataSource" />
</Context>
用于运行查询的代码(在 Database.java 中)
public List<T> runQuery(String query) throws SQLException {
List<T> result = null;
Connection con = null;
Context ctx = null;
Statement stmt = null;
ResultSet rs = null;
try {
result = new ArrayList<T>();
ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/KDB");
con = ds.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(query);
rs.beforeFirst();
while (!rs.next()) {
T user = dtoClass.newInstance();
for (Entry<String, String> entry : dtoFieldMap.entrySet()) {
String value = rs.getString(entry.getValue());
user.setField(entry.getKey(), value);
}
result.add(user);
}
log.trace("runQuery: query completed successfully");
log.info("Driver Name: " + con.getMetaData().getDriverName());
} catch (NamingException | SQLException | InstantiationException | IllegalAccessException ex) {
log.error("An Exception occurred in runQuery(String)", ex);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException ex) {
log.error("Field-related Exception", ex);
ex.printStackTrace();
} finally {
DbUtils.close(rs);
DbUtils.close(stmt);
DbUtils.close(con);
}
return result;
}
控制台输出
11:30:55.368 [http-nio-8090-exec-2] ERROR kk.db.Database - An Exception occurred in runQuery(String)
javax.naming.NameNotFoundException: Name [jdbc/KDB] is not bound in this Context. Unable to find [jdbc].
at org.apache.naming.NamingContext.lookup(NamingContext.java:816) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:173) ~[catalina.jar:8.5.15]
at org.apache.naming.factory.ResourceLinkFactory.getObjectInstance(ResourceLinkFactory.java:152) ~[catalina.jar:8.5.15]
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) ~[?:1.8.0_131]
at org.apache.naming.NamingContext.lookup(NamingContext.java:839) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:159) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:827) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:159) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:827) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:159) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:827) ~[catalina.jar:8.5.15]
at org.apache.naming.NamingContext.lookup(NamingContext.java:173) ~[catalina.jar:8.5.15]
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163) ~[catalina.jar:8.5.15]
at javax.naming.InitialContext.lookup(InitialContext.java:417) ~[?:1.8.0_131]
at kk.db.Database.runQuery(Database.java:154) [classes/:?]
at kk.UserResource.getQueryResult(UserResource.java:137) [classes/:?]
at kk.UserResource.toHtml(UserResource.java:63) [classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511) [org.restlet-2.3.10.jar:?]
at org.restlet.resource.ServerResource.get(ServerResource.java:723) [org.restlet-2.3.10.jar:?]
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:603) [org.restlet-2.3.10.jar:?]
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662) [org.restlet-2.3.10.jar:?]
at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348) [org.restlet-2.3.10.jar:?]
at org.restlet.resource.ServerResource.handle(ServerResource.java:1020) [org.restlet-2.3.10.jar:?]
at org.restlet.resource.Finder.handle(Finder.java:236) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Router.doHandle(Router.java:422) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Router.handle(Router.java:641) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) [org.restlet-2.3.10.jar:?]
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77) [org.restlet-2.3.10.jar:?]
at org.restlet.Application.handle(Application.java:385) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Router.doHandle(Router.java:422) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Router.handle(Router.java:641) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Router.doHandle(Router.java:422) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Router.handle(Router.java:641) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) [org.restlet-2.3.10.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) [org.restlet-2.3.10.jar:?]
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) [org.restlet-2.3.10.jar:?]
at org.restlet.Component.handle(Component.java:408) [org.restlet-2.3.10.jar:?]
at org.restlet.Server.handle(Server.java:507) [org.restlet-2.3.10.jar:?]
at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63) [org.restlet-2.3.10.jar:?]
at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143) [org.restlet-2.3.10.jar:?]
at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1117) [org.restlet.ext.servlet-2.3.10.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [servlet-api.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.15]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.15]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [catalina.jar:8.5.15]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:8.5.15]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [catalina.jar:8.5.15]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.15]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) [catalina.jar:8.5.15]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) [catalina.jar:8.5.15]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.15]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [catalina.jar:8.5.15]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) [tomcat-coyote.jar:8.5.15]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.15]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-coyote.jar:8.5.15]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) [tomcat-coyote.jar:8.5.15]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.15]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.15]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
如有任何建议或解决方案,我们将不胜感激。谢谢。
*附言我也在使用 ReSTLet API、GSON、DbUtils 和 log4j2,但我认为这不会导致任何问题,因为它在代码中实现数据库之前不会。
最佳答案
你试过改变这条线
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/KDB");
为了这个?
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/KDB");
(没有第一个斜杠)
关于java - 具有纯 JDBC-JNDI :javax. naming.NameNotFoundException : Name [jdbc/KDB] is not bound in this Context. 无法找到 [jdbc] 的 Tomcat 8.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44753568/
我一直在使用 Databricks JDBC 驱动程序版本 2.6.22,并尝试升级到 2.6.27。但是,升级后我收到消息说我的 JDBC URL 在尝试连接时无效。这些 JDBC URL 与旧版本
似乎JDBC Spec没有详细说明数据源连接池中alive or idle connections的准确含义。它只是具体实现吗? DBCP2如何或 HikariCP实际检查连接状态? 下面没有事件事务
在“XPages 扩展库”一书中,第 12 章,第 409 页有一个 JDBC 连接文件的例子: org.apache.derby.jdbc.EmbeddedDriver jdbc:
谁能告诉我 jdbc 是如何工作的?它如何设法与 DBMS 通信?因为 DBMS 可能是用其他编程语言编写的。 最佳答案 与数据库的通信由 JDBC 驱动程序处理,这些驱动程序可以使用各种策略与数据库
我想知道是否有人可以帮助我解决这个问题。我在尝试使用 Spring JDBC 编写代码时遇到了一个问题。当我运行服务器时,我收到了标题中提到的消息。我google了一下,有人说你应该导入ojdbc.j
我只是想运行一个示例 hivejdbc 客户端程序,但它给我一个内存不足的错误。 import java.sql.SQLException; import java.sql.Connection; i
我需要将 Google Spreadsheet 与 JasperReports Server 一起使用,为此我需要一个用于 Google Spreadsheet 的 JDBC 连接器。 我找到了这个
我需要将大量行(最多 100,000 行)插入到 6 个不同的 DB2 表中。我正在使用 Java JDBC 来完成它。我想在单个数据库事务中完成所有操作,以便在遇到任何问题时可以回滚整个操作。在某处
再次为自己是 Jmeter 新手道歉——我对 JDBC 请求有点困惑——我在过去的 3 个小时里浏览了这个网站上的帖子——但我找不到任何相关的东西(除非我我错过了一些东西)。 我的环境:Jmeter
我们正在创建一个带有 MySQL 后端的 XPages 应用程序。应用程序将被多个客户使用。每个都有自己的 NSF 数据库和相应的 MySQL 数据库。每个客户都有自己的 MySQL 用户名。我们正在
昨天我遇到了一个大问题。在我当前的项目中,我使用 Oracle 的 JDBC 的 ojdbc6 实现进行连接,但我还需要处理例如 oracle 8 数据库,这对于这个 JAR 是完全不可能的。 你会说
这个问题在这里已经有了答案: Closing JDBC Connections in Pool (3 个答案) 关闭 2 年前。 假设我有以下代码 DataSource source = (Data
我有 Informix 数据库,时间戳字段定义为 YEAR TO SECOND。 当我使用 JDBC rs.getString(column) 显示此字段时,它使用带毫秒的格式,因此此字段如下所示:
看完本教程之后; https://www.youtube.com/watch?v=ZnI_rlrei1s 我正在尝试使用logstash和jdbc获取我的本地主机mysql(使用laravel val
有人给我小费。 { "type": "jdbc", "jdbc": { "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试从mysql表中将1600万个文档(47gb)索引为elasticsearch索引。我正在使用jparante's elasticsearch jdbc river执行此操作。但是,在创建河
我正在尝试使用JDBC河将我的MySQL数据库复制到我的ElasticSearch索引中。 但是,每当我启动服务器时,与MySQL表的count(*)相比,创建的文档数量就增加了一倍。我通过清空索引并
使用新的logstash jdbc 连接器: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html后续的
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我是一名优秀的程序员,十分优秀!