【问题标题】:Unable to connect to mysql db with JPA (java persistance)无法使用 JPA 连接到 mysql db(java 持久性)
【发布时间】:2014-11-11 04:19:51
【问题描述】:

我对 Java 还很陌生——不过,我来自 PHP + JS。我的目标是用 Java Servlets 制作一个 CRUD (+MVC)。

我正在使用 Java EE 7。我在这里使用thisthat(两者具有相同的最终文件)来建立我的一些模式。

所以,我正在实现 MVC,但我似乎无法让我的代码正常工作。 JPA 似乎是主要问题;我无法从数据库中获取任何内容。

Here's the repository(非常小的项目——7~8 节课)。 Models; DAO.

我设置了controllers.Test(url: /test) 来测试我是否可以通过JPA 与数据库进行通信。但是,当我转到 /test(controllers.Test) 时,会引发异常。 controllers.NewsEdit(url: /edit) 也是如此。

java.lang.NullPointerException
    controllers.Test.doGet(Test.java:36)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

当我访问 home(url: /; controller.NewsIndex) 时,我没有收到任何异常——我得到了主页,但根本没有数据。是不是我做错了什么?

My SQL 文件位于/sql 文件夹中。我在META-INF/ 上收到了persistent.xml

任何帮助或参考将不胜感激。真的要学啊。。

谢谢!

【问题讨论】:

  • Test.java 的代码在哪里?更奇怪的是第 36 行?
  • 我已经用每个文件的链接编辑了问题。这有帮助吗? :)

标签: java mysql servlets jpa


【解决方案1】:

好的,

关于 NullPointerException 的小解释。

当变量(在本例中为 private NewsDAO newsDAO;)尚未初始化时,该“指针”指向内存中的任何内容。然后当你尝试调用一个方法时,那里什么都没有,NPE 就会发生。

这里的问题是私有的 NewsDAO newsDAO;没有被容器注入,因此当您调用 newsDAO.all(); newDAO 时为 null 并引发异常。

CDI 注入仅发生在由容器管理的组件上。我是一个春天的人,所以我不知道去哪里。尝试确定容器是否正在加载您的 NewsDAO。

Tomcat 是一个 Web 容器...您需要一个带有 EJB 容器的完整应用程序服务器来运行您的示例。尝试在 glassfish、JBoss 或任何其他完整的应用服务器上下载并运行。

更多信息在这里。

http://en.wikipedia.org/wiki/Application_server#Java_application_servers

http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html

【讨论】:

  • 但是,至少,一切看起来都很好吗?我试试看
  • 你用什么来运行你的应用程序?
  • 我正在使用 Eclipse Java EE 7 和 Tomcat。
  • Bingo...Tomcat 是一个 Web 容器...您需要一个带有 EJB 容器的完整应用程序服务器来运行您的示例。尝试在 glassfish、JBoss 或任何其他完整的应用服务器上下载并运行。
  • Spring 是一个更加独立的框架。 EJB 是更大平台的一部分。因此,在您的情况下,从一些在 Tomcat 上运行的 Spring 示例开始可能会更容易,因此您不需要太多。
猜你喜欢
  • 2016-01-31
  • 2014-09-08
  • 2021-03-24
  • 2011-05-11
  • 1970-01-01
  • 2016-12-12
  • 2017-03-15
  • 2011-01-16
  • 1970-01-01
相关资源
最近更新 更多