【问题标题】:Eclipselink static weaving in Java web application - EclipseJava Web 应用程序中的 Eclipselink 静态编织 - Eclipse
【发布时间】:2017-01-05 20:47:49
【问题描述】:

我目前正在开发 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 运行该应用程序(运行方式 -> localhost)

请有人告诉我现在应该如何继续?

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

可以请人分享一些热门歌曲吗?我在这方面完全是初学者——也许我错过了一些简单的方法。我的主要目标是拥有包含静态编织实体的 .war 文件,次要目标是自动在 tomcat localhost 服务器上进行部署,就像我现在从 Eclipse IDE 中所做的那样。

谢谢。

【问题讨论】:

    标签: java eclipse jpa ant eclipselink


    【解决方案1】:

    我只能代表 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-location。

    在您的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

    不过,我真的无法回答任何关于此的问题。

    【讨论】:

      猜你喜欢
      • 2011-10-25
      • 2012-05-30
      • 2013-08-31
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 2018-03-04
      • 2010-09-12
      • 2011-10-08
      相关资源
      最近更新 更多