Java Web应用程序中的Eclipselink静态编织 - Eclipse

时间:2017-01-05 20:47:49

标签: java eclipse jpa ant eclipselink

我目前正致力于开发Java Web应用程序的项目。我使用IDE Eclipse。

作为数据层,我使用EclipseLink(2.6)JPA。 Web应用程序在Tomcat webserver(7)上运行。现在我意识到由于性能问题,我需要为我的实体使用LAZY抓取。

经过一些研究后我发现我需要使用“静态编织”,根据手册页,我发现我有3种可能性:Ant,Maven或使用命令行。

由于我没有使用Ant,Maven或命令行选项的经验,所以我现在不知道如何继续。我想选择最简单的解决方案,这是Ant(从我的角度来看)。你能建议吗?

我的项目分为两个项目:

  • JPA项目,具有持久性实体和数据库操作
  • 使用servlet和JSP的Java应用程序,该项目包含JPA项目的链接

我运行该应用程序:

  • 远程Tomcat服务器 - 然后我生成包含两个项目的.war文件,然后我将其上传到服务器
  • localhost - 然后我直接从Eclipse运行该应用程序(Run As - > localhost)

请有人告诉我我现在该怎么办?

我应该指定Ant构建的两个步骤,首先从我的JPA项目创建.jar,然后进行静态编织并继续构建Web项目到.war?到目前为止,我发现只有生成.jar应用程序的Ant构建,不确定它与Web应用程序的区别。那里有任何教程吗?

可以请某人分享点击数吗?我在这个领域是完全的初学者 - 也许我错过了一些简单的方法。我的主要目标是让.war文件包含静态编织的实体,次要目标是在tomcat localhost服务器上自动部署,就像我现在从Eclipse IDE那样。

谢谢。

1 个答案:

答案 0 :(得分:0)

我只能代表Maven方面的事情,因为那是我经历过的事情。

pom.xml内,在plugins下,您必须添加maven staticweave插件:

<plugin>    
  <groupId>de.empulse.eclipselink</groupId>         
  <artifactId>staticweave-maven-plugin</artifactId>
    <executions>
      <execution>
        <phase>process-classes</phase>
            <goals>
                <goal>weave</goal>
            </goals>
        <configuration>             
           <persistenceXMLLocation>META-INF/persistence.xml</persistenceXMLLocation>>
        </configuration>
      </execution>
    </executions>           
</plugin>

您可能需要调整persistence.xml - 位置。

persistence.xml内,你需要激活静态编织:

<properties>
<property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.H2Platform" />
            <property name="eclipselink.weaving" value = "static"/>
            <property name="eclipselink.weaving.internal" value="true"/>
            <property name="eclipselink.weaving.lazy" value="true" />
            <property name="eclipselink.weaving.changetracking" value="true" />
            <property name="eclipselink.weaving.fetchgroups" value="true" />
            <property name="eclipselink.weaving.eager" value="false" />
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <property name="eclipselink.ddl-generation.output-mode" value="database" />
            <property name="eclipselink.logging.level" value="FINEST" />
 </properties>  

同样,您可能需要更改平台,所需的日志记录级别和其他参数。 如果您遗漏所有eclipselink.weaving.* - 参数,则它们将具有默认值。

在编译阶段之后,静态编织发生在maven生命周期的process-classes阶段。如果您将包装设置为war,您将获得一个*.war文件,然后您可以将其部署。

如果你真的宁愿通过ant-task来做,你应该看一下 https://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving#Use_the_weave_Ant_Task

尽管如此,我无法回答任何问题。