我正在尝试使用 Maven 组织一个 GWT(准确地说是 GWT 平台)项目,该项目使用 Guice-persist 将我的数据对象从 Eclipse 映射回 MySQL。我没有运气。
我的代码基于 GWTP 基本示例的 Maven 配置,我能够开始工作。现在我将 Hibernate 依赖项添加到pom.xml
文件中,我似乎无法让它再次成功运行。目前,我收到以下错误:
1) Error injecting constructor, javax.persistence.PersistenceException: No Persistence provider for EntityManager named myappdb
at com.gwtplatform.samples.basic.server.ApplicationInitializer.<init>(ApplicationInitializer.java:8)
while locating com.gwtplatform.samples.basic.server.ApplicationInitializer
我在设置注入器时创建了我的 PersistModule,如下所示:
Injector inject = Guice.createInjector(new ServerModule(),
new DispatchServletModule(), new JpaPersistModule("myappdb"));
inject.getInstance(ApplicationInitializer.class);
我的持久文件如下所示:
<persistence 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" version="1.0">
<persistence-unit name="myappdb" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.gwtplatform.samples.basic.shared.Bird</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql://mydbserver.com/mydbname"/>
<property name="hibernate.connection.username" value="test123" />
<property name="hibernate.connection.password" value ="password123" />
<property name="show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<!-- Default is false for backwards compatibility. Should be used on all
new projects -->
<property name="hibernate.id.new_generator_mappings" value="true" />
</properties>
</persistence-unit>
</persistence>
我的pom.xml
文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.gwtplatform</groupId>
<artifactId>gwtp-samples</artifactId>
<version>0.7</version>
</parent>
<artifactId>gwtp-sample-basic</artifactId>
<packaging>war</packaging>
<name>GWTP Samples - basic</name>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<configuration>
<logLevel>INFO</logLevel>
<style>${gwt.style}</style>
<server>com.google.appengine.tools.development.gwt.AppEngineLauncher</server>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<copyWebapp>true</copyWebapp>
<appEngineVersion>${gae.version}</appEngineVersion>
<appEngineHome>${gae.home}</appEngineHome>
<runTarget>Gwtpsample.html</runTarget>
<module>com.gwtplatform.samples.basic.Gwtpsample</module>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<useProjectReferences>false</useProjectReferences>
<warSourceDirectory>war</warSourceDirectory>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
<additionalBuildcommands>
<buildcommand>com.google.gwt.eclipse.core.gwtProjectValidator</buildcommand>
</additionalBuildcommands>
<additionalProjectnatures>
<projectnature>com.google.appengine.eclipse.core.gaeNature</projectnature>
<projectnature>com.google.gwt.eclipse.core.gwtNature</projectnature>
</additionalProjectnatures>
</configuration>
<dependencies>
<dependency>
<groupId>com.gwtplatform</groupId>
<artifactId>gwtp-build-tools</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<!-- Google Web Toolkit dependencies -->
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
</dependency>
<!-- AppEngine dependencies
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
</dependency> -->
<!-- DI dependencies -->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-persist</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-servlet</artifactId>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assistedinject</artifactId>
</dependency>
<dependency>
<groupId>com.google.gwt.inject</groupId>
<artifactId>gin</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.6-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.6-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>3.5.6-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>
<!-- concrete Log4J Implementation for SLF4J API-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
</dependencies>
<profiles>
<profile>
<!-- Activate this profile to compile the sample
including just the adequate GWTP dependencies -->
<id>default-samples</id>
<activation>
<property><name>!gwtp-all</name></property>
</activation>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>gwtp-mvp-client</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>gwtp-dispatch-client</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>gwtp-dispatch-server-guice</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<!-- Activate this profile to compile the sample
using the compound GWTP dependency (gwtp-all) -->
<id>gwtp-all-samples</id>
<activation>
<property><name>gwtp-all</name></property>
</activation>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>gwtp-all</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
</project>
如您所见,单位名称匹配。此外,我将persistance.xml
文件保存在src/main/webapp/META-INF
项目目录中。我尝试使用该/src/main/webapp/
目录作为war文件的基础以及其中的匹配目录来运行项目/target/
,但都无法克服此错误。
任何指针将不胜感激!我已经盯着这个看了2天了。