【问题标题】:Migration from Glassfish to Wildfly/JBoss从 Glassfish 迁移到 Wildfly/JBoss
【发布时间】:2017-05-17 11:43:13
【问题描述】:

我正在尝试在 JBoss (wildfly-10.1.0.Final) 中运行我的 .ear 应用程序。 以前它使用 Glassfish 4.1 运行没有任何问题。 在 JBoss 上,我成功部署了它,但它引发了大量异常。

例如:

2017-05-17 13:42:00,911 ERROR [org.jboss.as.ejb3.invocation] (default task-18) WFLYEJB0034: EJB Invocation failed on component VersionDao for method public abstract java.util.List com.valor.anthillprodashboard.db.dao.VersionDaoLocal.getAllVersions(): javax.ejb.EJBTransactionRolledbackException: NamedQuery of name: Version.findAll not found.
            at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:159)

2017-05-17 13:40:03,504 ERROR [org.jboss.as.ejb3.invocation] (default task-110) WFLYEJB0034: EJB Invocation failed on component DataAccessFacade for method public abstract java.util.List com.valor.anthillprodashboard.bl.da.DataAccessFacadeLocal.getAllVersions(): javax.ejb.EJBTransactionRolledbackException: NamedQuery of name: Version.findAll not found.
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:159)

在这两种情况下,我都使用 eclipselinkMySQL

我尝试使用 Glassfish 中的相同参数配置 JBoss。

Glassfish 配置:

  • JDBC 资源:
  • JDBC 连接池:

JBoss 配置(来自standalone.xml):

<datasources>
    <datasource jta="true" jndi-name="java:/jdbc/anthillprodashboard" pool-name="mysql_anthillprodashboard_rootPool" enabled="true" use-java-context="true" use-ccm="true">
        <connection-url>jdbc:mysql://localhost:3306/anthillprodashboard?zeroDateTimeBehavior=convertToNull</connection-url>
        <driver>mysql</driver>
        <security>
            <user-name>****</user-name>
            <password>****</password>
        </security>
        <statement>
            <prepared-statement-cache-size>100</prepared-statement-cache-size>
            <share-prepared-statements>true</share-prepared-statements>
        </statement>
    </datasource>
    <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
        <driver>h2</driver>
        <security>
            <user-name>sa</user-name>
            <password>sa</password>
        </security>
    </datasource>
    <drivers>
        <driver name="mysql" module="com.mysql"/>
        <driver name="h2" module="com.h2database.h2">
            <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
        </driver>
    </drivers>
</datasources>

我的 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="AnthillProDashboard-ejbPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/anthillprodashboard</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <shared-cache-mode>NONE</shared-cache-mode>
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
    </properties>
  </persistence-unit>
</persistence>

这些例外没有任何意义,因为同样的方法在 glassfish 上也能正常工作。 这些异常的原因可能是什么?

【问题讨论】:

    标签: java mysql jboss glassfish wildfly


    【解决方案1】:

    由于某种原因,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="AnthillProDashboard-ejbPU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/anthillprodashboard</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <shared-cache-mode>NONE</shared-cache-mode>
        <class>com.valor.anthillprodashboard.db.entity.Build</class>
        <class>com.valor.anthillprodashboard.db.entity.Commit</class>
        <class>com.valor.anthillprodashboard.db.entity.Project</class>
        <class>com.valor.anthillprodashboard.db.entity.ProjectVersion</class>
        <class>com.valor.anthillprodashboard.db.entity.ProjectVersionPK</class>
        <class>com.valor.anthillprodashboard.db.entity.Status</class>
        <class>com.valor.anthillprodashboard.db.entity.TestSet</class>
        <class>com.valor.anthillprodashboard.db.entity.TestSetUpdate</class>
        <class>com.valor.anthillprodashboard.db.entity.TestStatus</class>
        <class>com.valor.anthillprodashboard.db.entity.Version</class>
        <class>com.valor.anthillprodashboard.db.entity.Workflow</class>
    
        <properties>
          <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
        </properties>
      </persistence-unit>
    </persistence>
    

    【讨论】:

      猜你喜欢
      • 2018-09-16
      • 2021-08-26
      • 2017-06-24
      • 2015-03-17
      • 2014-09-15
      • 2016-07-29
      • 1970-01-01
      • 2017-05-07
      • 2020-08-23
      相关资源
      最近更新 更多