我正在尝试完成本教程:
https://netbeans.org/kb/docs/javaee/ecommerce/connect-db.html
部分原因是设置数据库并尝试使用数据源和连接池建立连接。
我做了教程中的所有内容,但是当我尝试运行我的代码时,我收到以下错误:
javax.servlet.jsp.JspException:无法获取连接,DataSource无效:“java.sql.SQLException:没有为jdbc / affablebean找到合适的驱动程序”
以下是抛出它的代码:
<sql:query var = "result" dataSource = "jdbc/affablebean">
SELECT * FROM category, product
WHERE category.id = product.category_id
</sql:query>
我尝试连接到数据库而不使用连接池和数据源,它就像一个魅力。
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver registered");
}
catch (ClassNotFoundException ex) {
Logger.getLogger(SqlService.class.getName()).log(Level.SEVERE, null, ex);
}
这意味着驱动程序位于glassfish目录中的右侧lib文件夹中,因此问题必须在其他地方。
本教程有一个故障排除部分,他们描述如果我遇到这种错误“没有为jdbc / affablebean找到合适的驱动程序”,这意味着我的web.xml中没有资源引用。嗯......我有一个,这里是:
<resource-ref>
<description>Connects to database for AffableBean application</description>
<res-ref-name>jdbc/affablebean</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
我一直试图每天16小时解决这个问题超过两天,但仍然没有运气。
你们有什么想法吗? 我浏览了所有google和stackoverflow并发现了类似的问题,但他们给出的解决方案是“确保mysql驱动程序位于服务器上的正确文件夹中”。
为什么我在没有dataSource对象的情况下连接数据库但无法连接到数据库?
答案 0 :(得分:3)
所以我找到了我遇到的完全相同问题的解决方案。 所以看来问题是在web.xml中没有包含对数据源的引用。 只需添加,
<resource-ref>
<description>AffableBean DataSource</description>
<res-ref-name>jdbc/affablebean</res-ref-name>
<res-type>javax.sql.ConnectionPoolDataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
到您的web.xml文件并保存并运行文件(在文件中右键单击并按&#34;运行文件&#34;)。
之后,您应该会在所选的浏览器中看到数据库选项卡。
答案 1 :(得分:2)
我有同样的错误,
设置resource-type时出现问题:
资源类型:javax.sql.ConnectionPoolDataSource
尝试使用:
资源类型:= javax.sql.DataSource
教程文本中的奇怪之处是(问题):
单击“下一步”。在步骤5中,添加连接池属性,指定 以下详细信息:数据源类名: com.mysql.jdbc.jdbc2.optional.MysqlDataSource资源类型: javax.sql.ConnectionPoolDataSource 描述:(可选)连接到 和平大豆数据库
但截图是正确的。
答案 2 :(得分:1)
我有几个问题 https://netbeans.org/kb/docs/javaee/ecommerce/connect-db.html 电子商务教程的一部分。
由于jdbc资源创建不当,出现了第一个问题(没有合适的驱动程序4d) - 我使用了新文件\ glassfish \ jdbc连接池&#39; 而不是&#39;新文件\ glassfish \ jdbc资源&#39;。
正确地重做此步骤注册驱动程序并创建池 (在glassfish servel日志中指出mysql驱动程序在服务器实例上注册)。
之后我无法通过testDataSource.jsp获取数据 - 错误是org.apache.derby.client.am.SqlException:Table / View&#39; CATEGORY&#39;不存在。
我无法弄清楚为什么甚至会提到org.apache.derby.client 经过一些查找在netbeans论坛上发现讨论: https://forums.netbeans.org/ntopic61746.html
这部分讨论是针对我的案例的解决方案:
尝试在步骤设置文件sun-resources.xml或glassfish-resources.xml中进行更改 设置JDBC数据源和连接池 在步骤6 - &gt;将资源类型更改为javax.sql.ConnectionPoolDataSource
并在步骤设置文件web.xml中进行更改 引用应用程序中的数据源 在步骤4 - &gt;将资源类型更改为javax.sql.ConnectionPoolDataSource
P.S。我使用netbeans 8.0.2,glassfish 4.1和jdk1.7.0_21。
Netbeans&#39;中没有javax.sql.ConnectionPoolDataSource
选项。
用于编辑资源引用\资源类型的界面&#39;用于web.xml的combobox。
所以我手动将这个值放在那里。
答案 3 :(得分:1)
经过一项非常令人厌倦的研究,检查过服务器tomcat,wildfly和Jboss后,似乎没有工作,我在使用glassfish注册新的数据源时出现问题,添加新的jdbc connectionpool会抛出java.lang.runtimeexception,这是一个解决方法问题是在管理控制台中的jdbcconnection池下重新配置DerbyPool,并为其提供所需的数据源类名,URL,用户名和密码,以指向mysql server上的数据库。它确实有效。
答案 4 :(得分:0)
我认为你没有在项目库中添加Mysql JDBC Driver
。
在项目库中手动添加Mysql JDBC Driver
,然后重试。
我认为它会奏效。
答案 5 :(得分:0)
我有完全的问题,甚至通过Netbeans IDE,数据库连接测试很好,而在Glassfish 4中,它无法正常工作,尝试所有可能的项目包括lib,放在这里和那里。最后通过删除Glassfish并安装Glassfish 3.1.2.2修复问题,项目文件完全相同并且工作正常。猜猜这是Glassfish 4中可能需要的bug或specail设置。
答案 6 :(得分:0)
我有同样的问题。过去4个小时我一直在寻找解决方案,这对我来说很容易......
确保JDBC资源(在Glassfish管理控制台)中的“状态”已启用(选中复选框): - (
答案 7 :(得分:0)
这里的问题相同。我花了好几个小时,尝试了这里提供的一些解决方案,只有一个让我更进了一步:改变资源类型来自&#34; javax.sql.ConnectionPoolDataSource&#34;到&#34; javax.sql.DataSource。 我立即偶然发现了下一个问题:表格#34;类别&#34;不存在。它确实存在。 我放弃了玻璃鱼(这是我第一次尝试使用玻璃鱼)并回到了Tomcat。更迭!因此,我认为将人们指向另一种可能对我有用的解决方案可能会有所帮助。 对于那些对Tomcat解决方案感兴趣的人,请访问此页面http://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html#MySQL_DBCP_Example。用一个例子非常明确的解释。并且不要忘记将JSTL库添加到您的项目中。 祝你好运。