Java 为ObjectDB部署ejb模块失败:找不到PersistenceProvider
我有两个几乎相同的项目(都是用maven创建的,都非常简单),其中一个部署没有任何问题,另一个给我一个PersistenceException:Java 为ObjectDB部署ejb模块失败:找不到PersistenceProvider,java,maven,ejb,wildfly,objectdb,Java,Maven,Ejb,Wildfly,Objectdb,我有两个几乎相同的项目(都是用maven创建的,都非常简单),其中一个部署没有任何问题,另一个给我一个PersistenceException: javax.persistence.PersistenceException: JBAS011466: PersistenceProvider 'com.objectdb.jpa.Provider' not found 我只是不知道我在这里错过了什么 正在工作的项目是web应用程序。我从报纸上得到的。我有一个简单的jsp页面、servlet、数据库实
javax.persistence.PersistenceException: JBAS011466: PersistenceProvider 'com.objectdb.jpa.Provider' not found
我只是不知道我在这里错过了什么
正在工作的项目是web应用程序。我从报纸上得到的。我有一个简单的jsp
页面、servlet、数据库实体和实体的无状态bean
当我部署它时,我可以调用jsp,输入一些示例数据,这些数据将传递给servlet,然后servlet再次使用bean和相应的实体将数据写入ObjectDB数据库。简单
不工作项目应该是一个ejb模块,只有实体
和无状态bean
但是,当我尝试在本地WildFly服务器上部署它时,会出现上述错误。
我还注意到,编译的ejb.jar
只有几千字节,而web应用程序war
文件使用1.4MB。所以我猜它包含了必要的objectdb.jar
库。但是我可以让ejb.jar包含库
下面是我的mavenpom.xml的工作web应用程序(抱歉,太长了):
com.me
ObjectDBMavenTest
2.01.1-00001
战争
ObjectDBMavenTest
${project.build.directory}/project
UTF-8
com.objectdb
对象数据库
2.6.1_06
爪哇
javaeewebapi
7
假如
对象数据库
ObjectDB存储库
http://m2.objectdb.com
org.apache.maven.plugins
maven编译器插件
3.1
1.7
1.7
${annowed.dir}
org.apache.maven.plugins
maven战争插件
2.3
假的
org.apache.maven.plugins
maven依赖插件
2.6
验证
复制
${annowed.dir}
真的
爪哇
javaee认可的api
7
罐子
作为比较,not工作ejb项目的pom.xml:
com.me
数据库
2.01.1-00001
ejb
数据库
${project.build.directory}/project
UTF-8
com.objectdb
对象数据库
2.6.1_06
爪哇
javaeewebapi
7
假如
对象数据库
ObjectDB存储库
http://m2.objectdb.com
org.apache.maven.plugins
maven编译器插件
3.1
1.7
1.7
${annowed.dir}
org.apache.maven.plugins
maven ejb插件
2.3
3.1
org.apache.maven.plugins
maven依赖插件
2.6
验证
复制
${annowed.dir}
真的
爪哇
javaee认可的api
7
罐子
坦白地说,我看不出有什么区别,只是一个是战争文件,另一个是罐子
如果有什么区别的话,下面是我的两个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="ObjectDBMavenTestPU" transaction-type="JTA">
<provider>com.objectdb.jpa.Provider</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="$objectdb/db/guests.odb"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="password"/>
</properties>
</persistence-unit>
</persistence>
<?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="MyDatabase" transaction-type="JTA">
<provider>com.objectdb.jpa.Provider</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="$objectdb/db/myDatabase.odb"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
com.objectdb.jpa.Provider
和不工作
<?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="ObjectDBMavenTestPU" transaction-type="JTA">
<provider>com.objectdb.jpa.Provider</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="$objectdb/db/guests.odb"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="password"/>
</properties>
</persistence-unit>
</persistence>
<?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="MyDatabase" transaction-type="JTA">
<provider>com.objectdb.jpa.Provider</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="$objectdb/db/myDatabase.odb"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
com.objectdb.jpa.Provider
有人能看出我做错了什么吗 Wow在这里写下它帮助我找到了错误:)我只需要强迫maven包含所有依赖项。这可以通过在
pom.xml
中包含以下插件来实现:
<plugins>
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
...
maven汇编插件
包裹
单一的
带有依赖项的jar
现在,所需的objectdb.jar
库作为ejb.jar的依赖项包含在内,我终于可以毫无错误地部署它了。谢谢大家的关心:)