【问题标题】:JavaEE7-hands on lab tutorial -- unable to get the database loaded?JavaEE7-动手实验教程——无法加载数据库?
【发布时间】:2024-01-17 07:03:01
【问题描述】:

我正在关注Java EE7-hands 实验室here 上的教程。我按照那里提供的说明设置了我的WildFly Application server。一切正常。教程 zip 附带示例数据和用于初始化数据源的 sql load scripts。如果persistence.xml 中没有提供数据源,WildFly 将提供一个default data-source,如教程中所述。

tutorial link 的第 3 步结束时,我的屏幕截图如下所示:

但预期的结果(根据tutorial link:图 12)是这样的:

区别在于“在影院放映电影!”就我而言,“在 7 个影院放映 20 部电影!”在预期的一个。 用于显示这些数字的 JSF 模板进行 EJB 调用,从数据源获取数据。看着这个,我认为我的数据源没有初始化。但我不知道为什么,因为我逐字遵循教程。我也很难解决这个问题。

提前感谢您的帮助

编辑

服务器日志显示Unable to determine H2 database version, certain features may not work.

2014-10-02 18:02:50,167 INFO  [org.hibernate.Version] (ServerService Thread Pool -- 50) HHH000412: Hibernate Core {4.3.5.Final}
2014-10-02 18:02:50,170 INFO  [org.hibernate.cfg.Environment] (ServerService Thread Pool -- 50) HHH000206: hibernate.properties not found
2014-10-02 18:02:50,172 INFO  [org.hibernate.cfg.Environment] (ServerService Thread Pool -- 50) HHH000021: Bytecode provider name : javassist
2014-10-02 18:02:50,330 INFO  [org.jboss.ws.common.management] (MSC service thread 1-6) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.2.4.Final
2014-10-02 18:02:50,491 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 50) JBAS011409: Starting Persistence Unit (phase 2 of 2) Service 'movieplex7.war#movieplex7PU'
2014-10-02 18:02:50,641 INFO  [org.hibernate.annotations.common.Version] (ServerService Thread Pool -- 50) HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
2014-10-02 18:02:50,875 INFO  [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 50) HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2014-10-02 18:02:50,883 WARN  [org.hibernate.dialect.H2Dialect] (ServerService Thread Pool -- 50) HHH000431: Unable to determine H2 database version, certain features may not work
2014-10-02 18:02:50,922 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (ServerService Thread Pool -- 50) HHH000397: Using ASTQueryTranslatorFactory
2014-10-02 18:02:51,047 INFO  [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 50) HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2014-10-02 18:02:51,048 WARN  [org.hibernate.dialect.H2Dialect] (ServerService Thread Pool -- 50) HHH000431: Unable to determine H2 database version, certain features may not work
2014-10-02 18:02:51,055 WARN  [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 50) Unable to execute JPA schema generation drop command [DROP TABLE SALES]
2014-10-02 18:02:51,055 WARN  [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 50) Unable to execute JPA schema generation drop command [DROP TABLE POINTS]
2014-10-02 18:02:51,055 WARN  [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 50) Unable to execute JPA schema generation drop command [DROP TABLE SHOW_TIMING]
2014-10-02 18:02:51,055 WARN  [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 50) Unable to execute JPA schema generation drop command [DROP TABLE MOVIE]
2014-10-02 18:02:51,056 WARN  [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 50) Unable to execute JPA schema generation drop command [DROP TABLE TIMESLOT]
2014-10-02 18:02:51,056 WARN  [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 50) Unable to execute JPA schema generation drop command [DROP TABLE THEATER]
2014-10-02 18:02:51,250 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-8) Initializing Mojarra 2.2.6-jbossorg-4 20140501-1134 for context '/movieplex7'
2014-10-02 18:02:51,867 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-8) JBAS017534: Registered web context: /movieplex7
2014-10-02 18:02:51,905 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "movieplex7.war" (runtime-name : "movieplex7.war")
2014-10-02 18:02:51,910 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
2014-10-02 18:02:51,911 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
2014-10-02 18:02:51,911 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.1.0.Final "Kenny" started in 5525ms - Started 256 of 310 services (91 services are lazy, passive or on-demand)

我还在 github repo 中提出了一个问题: https://github.com/javaee-samples/javaee7-hol/issues/17#issuecomment-57561731

【问题讨论】:

  • 假设您使用的是 Netbeans(按照教程),打开 [输出]。应该有一个显示服务器日志的 Wildfly 服务器选项卡。你发现有什么例外吗?
  • @peeskillet:我正在使用 Eclipse。但我找到了服务器日志。请参阅上面我包含服务器日志的编辑
  • 所以我得到了应用程序,并尝试运行它(Netbeans,Wildfly-8.1)。它根本没有运行。找不到数据源的问题。所以(Wildfly 启动时)我去了管理控制台localhost:9990 并输入了我的凭据。在控制台中,选择 [Configuration] 选项卡,然后选择 [Datasources]。没有defaultDataSource java:jboss/datasources/ExampleDS 作为预配置的数据源。所以在persistence.xml 中,我将数据源更改为那个,它起作用了。仅供参考,我从下载的solution 目录运行movieplex7
  • @peeskillet:感谢您花时间对此进行测试。如果您查看上面链接的 github 存储库,我有一个快照显示我的 defaultDataSource 已配置。你能粘贴你在persistence.xml中使用的链接吗?这将非常有帮助..
  • 这是我对整个项目所做的唯一更改。刚刚把数据源的jndi名字改成<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>

标签: jakarta-ee java-ee-7 wildfly-8


【解决方案1】:

所以我得到了应用程序,并尝试运行它(Netbeans、Wildfly-8.1)。它根本没有运行。找不到数据源的问题。所以(Wildfly 启动时)我去了管理控制台localhost:9990 并输入了我的凭据。在控制台中,选择 [Configuration] 选项卡,然后选择 [Datasources]。没有默认数据源。有一个 java:jboss/datasources/ExampleDS 作为预配置的数据源。所以在persistence.xml 中,我将数据源更改为那个,它起作用了。仅供参考,我从下载的解决方案目录中运行了 movieplex7


这是我对整个项目所做的唯一更改。刚刚把数据源的jndi名字改成<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>


编辑

所以@ArunGupta 是正确的。在应用程序中,在persistence.xml 中有这条注释掉的行

<!--<jta-data-source>java:comp/DefaultDataSource</jta-data-source>-->

我以为我必须取消注释。通过取消注释它,这就是导致它最初不起作用的原因。所以我把它注释掉了,没有指定任何数据源,即java:jboss/datasources/ExampleDS,它按指定工作。所以你的问题似乎出在其他地方。

【讨论】:

  • 我用这个配置尝试了 glassFish &lt;jta-data-source&gt;java:comp/DefaultDataSource&lt;/jta-data-source&gt;。令人惊讶的是,这不起作用..与我为 WildFly 发布的问题相同。
  • 看看我的EDIT。所以应用程序确实按预期工作。你的问题在别处。请取消勾选复选标记,直到您找出问题所在。然后你可以回答你自己的问题一次/如果你弄明白了。
  • 为什么第一次尝试运行,然后没有运行?
  • 因为我取消了java:comp/DefaultDataSource 的注释。服务器似乎找不到 那个 特定的数据源。我不确定这是否是 Arun 所说的默认数据源,或者是否有一个 implicit 数据源没有直观地显示给我们
  • 在您之前的回答中,您提到您添加了&lt;jta-data-source&gt;java:jboss/datasources/ExampleDS&lt;/jta-data-source&gt;,这是 JBoss 的默认数据源。将它添加到我的persistance.xml 对wildfly 有效。 java:comp/DefaultDataSource 是 glassFish 的默认数据源。
【解决方案2】:

添加

<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>

不应是必需的,因为 Java EE 7 定义了应自动获取的新默认数据源。

https://github.com/javaee-samples/javaee7-hol/issues/17 也在讨论这个问题。

【讨论】:

  • 你是对的,请看我的编辑。问题在 OP 的其他地方
最近更新 更多