WildFly 部署仅适用于独立模式,但不适用于 Eclipse

WildFly deployment only works in standalone-mode but not in Eclipse

我正在尝试详细学习 JavaEE 7,但在从数据库中获取记录并将其显示在 JSF 页面上时遇到问题。

我使用 WildFly 10.1.0 和 Oracle XE11。我创建了以下数据源:

<datasource jndi-name="java:/supportApp" pool-name="OracleDS" enabled="true">
    <connection-url>jdbc:oracle:thin:@localhost:1521:xe</connection-url>
    <driver>oracle</driver>
    <pool>
        <min-pool-size>1</min-pool-size>
        <max-pool-size>5</max-pool-size>
        <prefill>true</prefill>
    </pool>
    <security>
        <user-name>username</user-name>
        <password>password</password>
    </security>
</datasource>

JBoss'管理界面中的连接测试成功。

这是我的 persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
  xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="SupportApp" transaction-type="JTA">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:/supportApp</jta-data-source>
    <shared-cache-mode>NONE</shared-cache-mode>
    <class>org.model.User</class>
  </persistence-unit>
</persistence>

当我通过 运行 WildFly standalone.bat 并通过 mvn clean package wildfly:deploy 部署我的应用程序时,它起作用了。

当我在 Eclipse 中启动服务器并尝试使用相同的命令部署我的应用程序时,它失败了 - 因为我添加了 JPA 部分。我收到的错误消息是这样的:

14:48:40,768 INFO [org.jboss.as.jpa] (MSC service thread 1-1) WFLYJPA0002: Read persistence.xml for SupportApp

14:48:40,782 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 8) WFLYCTL0013: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {

"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.supportApp"],

"WFLYCTL0180: Services with missing/unavailable dependencies" => [

    "jboss.persistenceunit.\"SupportAppEJB-0.0.1-SNAPSHOT.jar#SupportApp\" is missing [jboss.naming.context.java.supportApp]",

    "jboss.persistenceunit.\"SupportAppEJB-0.0.1-SNAPSHOT.jar#SupportApp\".__FIRST_PHASE__ is missing [jboss.naming.context.java.supportApp]"

]

}

看来是持久化单元的问题,但我不明白是什么问题,也不知道该如何解决。有什么建议吗?

我发现当 eclipse 询问我有关服务器运行时的信息时,它安装了第二个 wildfly 应用程序服务器。因此我在手动安装的 standalone.xml 中所做的更改没有考虑到服务器 eclipse 启动。将服务器运行时更​​改为我手动安装 wildfly 并配置数据源的路径后,它就像一个魅力。