Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为ObjectDB部署ejb模块失败:找不到PersistenceProvider_Java_Maven_Ejb_Wildfly_Objectdb - Fatal编程技术网

Java 为ObjectDB部署ejb模块失败:找不到PersistenceProvider

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、数据库实

我有两个几乎相同的项目(都是用maven创建的,都非常简单),其中一个部署没有任何问题,另一个给我一个PersistenceException:

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的依赖项包含在内,我终于可以毫无错误地部署它了。谢谢大家的关心:)