如何阻止 Eclipse 上的 JPA Facet 一直更新?

Posted

技术标签:

【中文标题】如何阻止 Eclipse 上的 JPA Facet 一直更新?【英文标题】:How do I stop JPA Facet on Eclipse from updating all the time? 【发布时间】:2011-09-09 09:45:58 【问题描述】:

我在 Eclipse 中有一个 EJB2/EJB3 Java 项目。我最近启用了 JPA Facet,现在安装了 Dali 并配置了对包含实际表和数据的 mysql 数据库的访问。

问题是,在 IDE Java 编辑器中编辑实体 bean 变得慢了 100-1000 倍。写一个字,看到状态栏出现“Update JPA Project”,在高负载下等待30秒CPU,Eclipse完全无响应,然后继续写下一个字..

让JPA变慢的项目是中型的,不只是简单的网店,也不是企业级的。我数了 42 个无状态会话 Bean 和 49 个实体 Bean。我们实际上有更多的实体 bean,但它们中的许多还没有转换为 EJB 3,而是只映射到 EJB 2.1。

最长的会话 bean 跨越 20616 行,最长的方法是不到 2k 行。

JPA 的缓慢性非常严重,它也使得 打字 代码变慢。每 5-10 个字符后,Eclipse 会完全停止几秒钟,并且内容辅助几乎无法使用,因为它不断触发 Eclipse 的内部超时。

所以,问题是:我如何保持为项目启用 JPA Facet 并使其不落后于所有实际工作?一些简单的切换开关会禁用 JPA 部分,然后再重新启用会很可爱。

【问题讨论】:

您运行的是 Eclipse 3.7 Indigo 平台吗?我很好奇你的项目有多大,有多少实体?你的构建路径上有什么?只是想一想你的项目中可能是什么让 Dali 的速度如此急剧下降。 Eclipse Indigo,是的。该项目相当大,大约。 80 个实体 bean,其中一些有近百个字段和大约。 50 个会话 bean。许多引用的库,自然包括 Tapestry 3 和少数 Apache Commons 库,包括 MINA。但是尽管如此,项目在几秒钟内构建,无论是在 Eclipse 和命令行上,还是在增量式和清理后。唯一有问题的部分是 JPA 插件。 【参考方案1】:

我的一个朋友最近向我展示了一种在“Maven 更新”操作之后禁用持续“JPA Facet”更新的方法。

请试试这个:在菜单 Window >> Preferences >> Maven >> Java EE Integration

禁用“JPA 配置器”选项

【讨论】:

【参考方案2】:

我刚刚关闭了 Eclipse 通过Preferences > Validation > suspend all validators 进行的所有验证:

我不记得上一次需要验证是什么时候,或者一开始就认为这是一个有用的功能。如果您想帮助您的整个团队,您还可以在每个项目的.settings/org.eclipse.wst.validation.prefs 文件中签入以下文件:

DELEGATES_PREFERENCE=delegateValidatorList
USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.wsi.ui.internal.WSIMessageValidator;
USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.wsi.ui.internal.WSIMessageValidator;
USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationtrueversion1.2.600.v201501211647
eclipse.preferences.version=1
override=true
suspend=true
vf.version=3

这具有相同的效果,但可以签入版本控制。

突然间,CPU 散热器又变得异常安静。

【讨论】:

这个验证器是做什么的? @Niccolò:我可以简单地说“我不在乎他们做什么”吗? :) 好吧,我不能判断你个人是否不在乎,也不能强迫你在乎,但我想知道后果会是什么,我想我会去别处看看寻求答案【参考方案3】:

在 Juno 中,Dali 项目进行了多项性能改进,这应该有助于解决您的情况。我们还进行了更改,将我们的一些工作推送到后台线程并使用 Eclipse Jobs 框架。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=370407 https://bugs.eclipse.org/bugs/show_bug.cgi?id=377039 https://bugs.eclipse.org/bugs/show_bug.cgi?id=376787 https://bugs.eclipse.org/bugs/show_bug.cgi?id=336403

如果您仍然看到 Juno 的性能滞后,我非常感谢您向我们发送一些性能分析信息。 我可以尝试在我的工作中使用您的结果来提高性能(如果可能的话,在 Juno SR1 中)。我已经成功使用了 jdk1.6.0_31 中包含的 Java VisualVM。我将分析器 CPU 设置设置为“从类开始分析:”org.eclipse.jpt.**,取消选中“分析新的 Runnables”和“仅分析类:”org.eclipse.jpt.*。然后,您可以运行导致问题的用例之一并将生成的快照附加到 Eclipse 错误(WebTools-Dali Jpa 工具)。

【讨论】:

【参考方案4】:

您也可以在任何 org.eclipse.wst.common.project.facet.core.xml 文件中查找此条目

<installed facet="jpt.jpa" version="1.0"/>

并删除它

【讨论】:

【参考方案5】:

我正在使用 RedHat Code Ready Studio。我已禁用:

疼痛终于消失了......

【讨论】:

关闭所有这些验证器后是否遇到错误?

以上是关于如何阻止 Eclipse 上的 JPA Facet 一直更新?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用指定版本2.3的JSF Facet创建Eclipse动态Web项目?

我在 JPA Facet 平台中找不到 Hibernate 2.* 选项

如何在没有动态 Web 模块 3.0 facet hacks 的情况下将 jdk 9 maven spring boot 2 项目导入 eclipse ee 氧气?

eclipse Project facet Java version 1.8 is not supported.

如何将 JPA 添加到现有的 Eclipse 项目?

meclipse中project facet问题