- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 Tomcat 8 服务器上运行的 restful api 实现。我决定使用嵌入式 Derby 版本通过 JDBC(使用 Eclipse)将数据存储在数据库中。在我看来,嵌入式版本的官方教程不是很有帮助。我按照这里的步骤操作: http://www.nailedtothex.org/roller/kyle/entry/defining-embedded-derby-as-a
我的问题是,找不到与 Derby 的连接,并且由于我使用的是 Derby 的嵌入式版本,所以我不知道如何调试未连接到 Derby 的原因。
我将 derby.jar 和 derby-shutdown-listener.jar 复制到我的 Tomcat 服务器的 lib 文件夹中。我修改了 context.xml 和 server.xml。
上下文.xml:
<Context docBase="myapp"
path="/myapp"
reloadable="true">
<ResourceLink name="jdbc/derby"
global="jdbc/derby"
type="javax.sql.DataSource" />
</Context>
我也试过这个版本的context.xml:
<Context docBase="myapp"
path="/myapp"
reloadable="true">
<Resource name="jdbc/derby" auth="Container"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
username="bot" password="carmeq!"
type="javax.sql.DataSource"
url="jdbc:derby:mydb;create=true"/>
</Context>
服务器.xml:
<Listener className="org.nailedtothex.derby.DerbyShutdownLifecycleListener" />
然后我更改了我的 web.xml:
<resource-ref>
<res-ref-name>jdbc/derby</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
在我关于数据库连接的 Java 类中,我有以下规范:
String dbURL2 = "jdbc:derby:mydb;create=true";
这是我在调用 restful 函数时收到的异常。
javax.servlet.ServletException: java.lang.NullPointerException
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:487)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
调试代码时,显示没有找到适合指定url的驱动。
此外,我正在使用 Maven,在我的 Tomcat 文件夹中的 derby.jar 旁边(显示在 Libraries/Apache Tomcat v8.0 下),我还在我的 pom 中添加了相同的 derby.jar(版本 10.9.1.0)。 XML.
谢谢
最佳答案
Tomcat original documentation (至少对于 8.0)还指出,作者运气不好,网络上的其他文档也不太清楚。以下是它对我的工作方式...
在 server.xml 中,您应该在 GlobalNamingResources 中添加资源:
<GlobalNamingResources>
<!-- Keep non DB Resource stuff here ... -->
<Resource auth="Container"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxActive="100" maxIdle="30" maxWait="10000"
name="jdbc/myDerby" username="" password=""
type="javax.sql.DataSource"
url="jdbc:derby:Databases/myDerbyDB;create=true"/>
</GlobalNamingResources>
在 context.xml 中,您应该像这样链接到它:
<ResourceLink name="jdbc/myDerbyLink"
global="jdbc/myDerby"
type="javax.sql.DataSource" />
我相信,将资源本身放在 context.xml 中是行不通的,至少对我来说是行不通的。
在您的代码中,数据库通常可以作为链接/引用名称访问,jdbc/myDerbyLink
:
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myDerbyLink");
Connection conn = ds.getConnection();
如果您避免对链接的名称和全局属性使用相同的名称,那么麻烦就会少很多。只是为了更清楚一点,这里是如何处理链接的(类似于 XPath):
Java Code "java:/comp/env/<JDBCString>"
==> context.xml:/Context/ResourceLink/@name == <JDBCString>
==> ./@global == server.xml:/GlobalNamingResources/Resource/@name
在 web.xml 中,不使用 context.xml,您应该能够直接使用资源的短名称 jdbc/myDerby
。如果没有,请尝试使用完整的 java:/comp/env/jdbc/myDerby
。
顺便说一句:如果您粘贴导致错误的代码片段,也会很有帮助。
关于tomcat - 无法访问 Tomcat 8 中的嵌入式 Derby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40593093/
Select distinct APP.bca_cart.InventoryCode,APP.bca_cart.InventoryID,APP.bca_cart.CartID,APP.bca_cart
有没有办法在 derby 数据库中像 mysql 那样逐列添加? 最佳答案 我不相信。列排序并不是真正的标准 SQL 功能。编写良好的数据库应用程序不应该关心列排序。您可以通过命名 SQL 语句中的列
我已经在 Glassfish/Netbeans 中设置了 Derby DB 密码。我还选中了记住我复选框。 现在我不能再更改密码了。 最佳答案 要更改密码,您只需执行: call SYSCS_UTIL
我在 google 上搜索了一些关于 apache derby 中不区分大小写的搜索。所有谷歌搜索结果都非常旧(2007 年最新)。我发现在不丢失索引的情况下搜索不区分大小写是不可能的(“LOWER”
如何做到这一点? SYSCOLUMNS 系统表只有表的列。 SYSCHECKS 有一个 REFERENCEDCOLUMNS 对象。有什么办法可以得到这个。 我知道 JDBC getPrimaryKey
我已经使用derby db开发了一个应用程序。我已经在系统中创建了数据库。我需要将应用程序与数据库一起交付。我已删除表中的所有数据。仅保留表(数据为空的结构)。因此,如果我将db文件(所有这些文件,l
Derby没有rownum功能吗? 在oracle中,我可以选择前3行,如下所示。 select * from a where rownum < 3 在here中,他们建议如下。但这很乏味。 SELE
我正在使用嵌入式 Java 数据库来保存公交时刻表。当新计划可用时,我会自动将新计划加载到数据库表中,然后从数据库中删除旧计划。这会自动发生,无需用户干预。 我注意到数据库会随着时间的推移而变慢。我有
假设我已连接到 derby 服务器。我需要知道哪些数据库可供我连接。有命令可以这样做吗? 最佳答案 没有这样的命令。 Derby 不维护所有已知数据库的整体注册表或目录。 每个数据库都是独立的,可以通
我正在关注 Derby.js getting started guide .我跑了 $ npm install -g derby 一切都成功了,但是当我输入 $ derby new app-name
我正在寻找如何检查数据库是否存在的信息——从 Java 代码——在 hsqldb 和 Apache derby 中。在Mysql中很容易,因为我可以查询系统表--INFORMATION_SCHEMA.
我在我的 Mac 上使用 Netbeans 7.1 创建了一个 JavaDB(Derby) 数据库,我正在搜索一个免费软件应用程序,我可以使用它来查看包含所有表及其连接的完整数据库模式的图片。有任何想
我想在网络服务器模式下使用 Derby,并按照他们网站上的说明进行操作。 Derby 开局: /opt/glassfish/4.0/javadb/bin/NetworkServerControl st
我有一个使用 derby 和 JPA 的项目。我可以在我的应用程序中正常连接到数据库。我想使用 SQL Developer 连接到嵌入式数据库,以便我可以轻松浏览/查询数据库中的数据。 这是我正在使用
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
有没有办法在 ij 中“漂亮地打印”查询结果?由于在查询结果中到处乱扔列,因此默认结果看起来非常难以理解。 在 PostgreSQL 中,有/pset 命令来控制 pgsql 命令的结果,我正在为 D
当我在 WildFly 上正常定义 Derby 数据源时,db.lck 文件未被删除,这表明每次关闭 WildFly 时数据库都没有正确关闭。因为嵌入式 Derby 需要一个特殊的关闭过程,该过程正在
我在 Google 上没有找到任何相关信息,但我认为这一定是可能的。 我的 Hibernate 项目遇到了一个严重的问题: 我有两个模块,一个主模块和一个工具模块。他们应该使用相同的数据库(嵌入式 D
我正在使用 Spring 构建一个 JavaEE 应用程序,我正在尝试将它与 DerbyEmbeddedDriver 连接起来。该应用程序将在 SAP Hana Cloud Platform 试用版上
我正在使用 Derby DB作为我的 Qpid broker 的存储.当作为嵌入式数据库运行时,试图找出 Derby 存储数据文件的位置。 任何人都知道文件所在的位置或如何设置要使用的目录? 最佳答案
我是一名优秀的程序员,十分优秀!