spring - JBOSS 7.1.1 javax.persistence.PersistenceException PersistenceProvider 在 'org.apache.openjpa.persistence.PersistenceProviderImpl 中找不到

标签 spring jpa jboss7.x persistence.xml

我是 JBOSS 新手,并且停留在 JBOSS 7.1.1 中应用程序的基本部署

我创建了一个带有 persist.xml 的 web 应用程序

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="mydummy-jpa" transaction-type="RESOURCE_LOCAL">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <jta-data-source>java:jboss/datasources/mydummyexample</jta-data-source>  
        <class>com.nsn.caobusiness.selfcare.entity.DummyTable</class>
        <properties>
            <property name="jboss.as.jpa.providerModule" value="org.jboss.as.jpa.openjpa" />
            <property name="openjpa.Log" value="DefaultLevel=WARN,SQL=TRACE" />
            <property name="openjpa.jdbc.DBDictionary" value="mysql(UseClobs=true)"/>           
        </properties>
    </persistence-unit>
</persistence>


我的standalone.xml 中的数据源如下所示:

<datasource jndi-name="java:jboss/datasources/mydummyexample" pool-name="mydummyexample" enabled="true" use-java-context="true" use-ccm="true" jta="true">
                    <connection-url>jdbc:mysql://localhost:3306/worldonstreet</connection-url>
                    <driver>mysql</driver>
                    <security>
                        <user-name>root</user-name>
                        <password></password>
                    </security>
                    <statement>
                        <prepared-statement-cache-size>100</prepared-statement-cache-size>
                        <share-prepared-statements/>
                    </statement>
                </datasource>


当我部署应用程序时,出现以下异常:

23:48:06,656 INFO  [org.jboss.as.jpa] (MSC service thread 1-5) JBAS011401: Read persistence.xml for mydummy-jpa
23:48:08,000 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."SpringDatabaseTransaction.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."SpringDatabaseTransaction.war".INSTALL: Failed to process phase INSTALL of deployment "SpringDatabaseTransaction.war"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_26]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_26]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_26]
 **Caused by: javax.persistence.PersistenceException: JBAS011466:
 PersistenceProvider
 'org.apache.openjpa.persistence.PersistenceProviderImpl' not found**


    at org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.lookupProvider(PersistenceUnitDeploymentProcessor.java:555)
    at org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.deployPersistenceUnit(PersistenceUnitDeploymentProcessor.java:295)
    at org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.addPuService(PersistenceUnitDeploymentProcessor.java:258)
    at org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.handleWarDeployment(PersistenceUnitDeploymentProcessor.java:194)
    at org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.deploy(PersistenceUnitDeploymentProcessor.java:118)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

我一整天都被困在这个问题上。将不胜感激来自这个论坛的任何帮助。

问候, 莱戈拉斯

最佳答案

我下载了Apache Openjpa ,提取 jars,在\JBOSS_HOME>\modules\org\apache\openjpa 下的 jboss 中创建一个模块,并将 persist.xml 中的属性更改为

  <property name="jboss.as.jpa.providerModule" value="org.apache.openjpa" />

module.xml 看起来像:

<module xmlns="urn:jboss:module:1.1" name="org.apache.openjpa"> 
    <resources> 
        <resource-root path="openjpa-2.2.0.jar"/> 
        <resource-root path="serp-1.13.1.jar"/> 
    </resources> 
        <dependencies> 
            <module name="javax.persistence.api"/> 
            <module name="javax.transaction.api"/> 
            <module name="javax.validation.api"/> 
            <module name="org.apache.commons.lang"/> 
            <module name="org.apache.commons.collections"/> 
            <module name="org.apache.log4j"/> 
        </dependencies> 
</module>

终于成功了。 :) 感谢@lurscher 的评论。它激励我继续下去。

关于spring - JBOSS 7.1.1 javax.persistence.PersistenceException PersistenceProvider 在 'org.apache.openjpa.persistence.PersistenceProviderImpl 中找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10057921/

相关文章:

java - 无法使用 spring javamail 从服务器 heroku 发送电子邮件

java - Hibernate:将 toString() 类方法映射到 String db 列

docker - 哪个应用程序容器更适合 Docker 容器?

jsf-2 - Primefaces 4.0 资源压缩

java - 刚接触 Maven 我的 Spring jar 在哪里

java - Spring MongoDB 查询正则表达式

java - LocalDate 的 hibernate 模式验证失败 - 找到日期,但需要时间戳

java - 从 persistence.xml 注入(inject) PersistenceContext

java - 如何在 JPA 中保留原始时区

java - Jboss7 上的 COMODO SSL 证书