我目前正致力于开发Java Web应用程序的项目。我使用IDE Eclipse。
作为数据层,我使用EclipseLink(2.6)JPA。 Web应用程序在Tomcat webserver(7)上运行。现在我意识到由于性能问题,我需要为我的实体使用LAZY抓取。
经过一些研究后我发现我需要使用“静态编织”,根据手册页,我发现我有3种可能性:Ant,Maven或使用命令行。
由于我没有使用Ant,Maven或命令行选项的经验,所以我现在不知道如何继续。我想选择最简单的解决方案,这是Ant(从我的角度来看)。你能建议吗?
我的项目分为两个项目:
我运行该应用程序:
请有人告诉我我现在该怎么办?
我应该指定Ant构建的两个步骤,首先从我的JPA项目创建.jar,然后进行静态编织并继续构建Web项目到.war?到目前为止,我发现只有生成.jar应用程序的Ant构建,不确定它与Web应用程序的区别。那里有任何教程吗?
可以请某人分享点击数吗?我在这个领域是完全的初学者 - 也许我错过了一些简单的方法。我的主要目标是让.war文件包含静态编织的实体,次要目标是在tomcat localhost服务器上自动部署,就像我现在从Eclipse IDE那样。
谢谢。
答案 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
尽管如此,我无法回答任何问题。