java - 无法连接到 Tomcat 应用程序中的 Derby 数据库

标签 java tomcat jdbc

我正在尝试将 Derby 数据库与(JSP 论坛)Tomcat 应用程序一起使用。我的 web.xml 定义了 jdbc/easy 资源:`

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <display-name>forum</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref>
      <res-ref-name>jdbc/easy</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
</web-app>

`

jdbc/easy 然后在 server.xml 中映射到 Derby,如下所示:`

<GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
  <!-- Global Datasource for Derby forumdb database -->
  <Resource auth="Container" 
  description="Derby database for forum" 
  driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
  maxActive="100" maxIdle="30" maxWait="10000" 
  name="jdbc/easy" password="" 
  type="javax.sql.DataSource" 
  url="jdbc:derby:forumdb;create=true" 
  username=""/>

  </GlobalNamingResources>

`

我无法解决以下异常:

`INFO: javax.naming.NameNotFoundException: Name [jdbc/easy] is not bound in this Context. Unable to find [jdbc].
    at org.apache.naming.NamingContext.lookup(NamingContext.java:820)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)
    at javax.naming.InitialContext.lookup(InitialContext.java:423)
    at forum.Members.authenticate(Members.java:109)
    at org.apache.jsp.forum.index_jsp._jspService(index_jsp.java:304)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:205)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627)
    at java.lang.Thread.run(Thread.java:809)

` 谢谢!

最佳答案

我认为您需要向您的 webapp/META-INF/context.xml 添加一个“ResourceLink”:

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

  <ResourceLink name="jdbc/easy" global="jdbc/easy" type="javax.sql.DataSource"/>

 ...
</Context>

阅读更多 here .

关于java - 无法连接到 Tomcat 应用程序中的 Derby 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31966399/

相关文章:

eclipse - Eclipse 如何知道 Tomcat 服务器是否正在运行?

linux - 如何在linux中启动tomcat服务器?

java - Docker:运行Oracle并执行脚本后启动Tomcat

MySql 时区 JDBC 问题

java - 整数除法浮点结果

java - 覆盖java序列化不匹配

java - 即使跳过,For 循环计数也会持续到最后

java - 当 Data 实现 Comparator 接口(interface)时,为什么编译器会提示使用不可比较元素构建排序集合?

java - 独立应用程序的数据源 - 无应用程序服务器

java - JDBC-ODBC桥接