Using GlassFish / Payara 5 with Eclipse Oxygen

If you want to try GlassFish or Payara 5 with one of the current Eclipse versions (Oxygen, which includes JBoss Developer Studio), you run into the problem that the GlassFish Tools plugin checks the GlassFish version and refuses to work with the current release.

As a workaround edit the manifest of glassfish-api.jar located in the modules directory of your GlassFish installation and change the Bundle-Version to 4.0.0.

After this modification you can connect GlassFish 5 to Eclipse via GlassFish Tools, run the server and deploy applications as usual.

See you in our Java EE trainings in Berlin, Bielefeld or at your site: gedoplan-it-training.de/


 

Advertisements

JPA-Metamodell-Generierung in Eclipse automatisch konfigurieren

Die Erzeugung des statischen Metamodells für JPA-Entities wird vom (normalen) Java-Compiler ab Java 6 automatisch erledigt, wenn ein entsprechender Metamodell-Generator im Classpath ist, z. B. hibernate-jpamodelgen. Ein Maven-Projekt braucht dazu nur die folgende Konfiguration:

<project …>
  …
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
          <generatedSourcesDirectory>
            target/generated-sources/annotations
          </generatedSourcesDirectory>

        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-jpamodelgen</artifactId>
      <version>1.3.0.Final</version>
      <scope>provided</scope>
      <optional>true</optional>
      <exclusions>
        <exclusion>
          <groupId>org.hibernate.javax.persistence</groupId>
          <artifactId>hibernate-jpa-2.0-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
</project>

Statt der Dependency javax:javaee-api würde natürlich eine ausreichen, die nur JPA umfasst.

Mit dieser Projektkonfiguration wird zu einer Entity-Klassen Xyz in target/generated-sources/annotations eine Metamodellklasse namens Xyz_ erzeugt und kompiliert.

Um dieses Projekt auch in Eclipse bearbeiten zu können, muss vor dem Import des Projektes in der Workspace-Einstellung Maven -> Annotation Processing die Option Automatically configure JDT APT aktiviert werden. Diese Einstellung gehört zum Plugin m2e-apt, das seit einiger Zeit Bestandteil von Eclipse mit Maven-Integration ist, also bspw. im JBoss Developer Studio 7, aber auch bei Bedarf aus dem Marketplace nachinstalliert werden kann. Wird das Projekt dann als Maven-Projekt in Eclipse importiert, werden die Projekteigenschaften Java -> Compiler -> Annotation Processing und Java -> Compiler -> Annotation Processing -> Factory Path automatisch gefüllt, sodass auch bei der Bearbeitung durch Eclipse Metamodellklassen generiert werden.