我在Eclipse中有一个EJB2 / EJB3 Java项目。我最近启用了JPA Facet,现在安装了Dali并配置了对包含实际表和数据的MySQL DB的访问。
问题是,在IDE Java编辑器中编辑实体bean变得慢了100-1000倍。写一个字,看状态栏上出现“更新JPA项目”,高负荷等待30秒CPU,Eclipse完全没有响应,然后继续写下一个字..
使JPA变慢的项目是中等规模的,不仅仅是一个简单的网上商店,也不是企业级的。我统计了42个无状态会话豆和49个实体豆。实际上我们有更多的实体bean,但其中许多尚未转换为EJB 3,而是仅使用EJB 2.1进行映射。
最长的会话bean跨越20616行,最长的方法是头发低于2k行。
JPA的速度太慢,它也使输入代码变慢。在每5-10个字符后,Eclipse完全停止几秒钟,内容辅助几乎无法使用,因为它会一直触发Eclipse的内部超时。
所以,问题是:我如何为项目启用JPA Facet并仍然使其不落后于所有实际工作?一些简单的拨动开关,只是禁用JPA部分,然后重新启用将很可爱。
答案 0 :(得分:21)
我的一位朋友最近向我展示了一种在“Maven更新”操作后禁用常量“JPA Facet”更新的方法。
请尝试此操作:在菜单窗口>>上偏好设置>> Maven>> Java EE集成
答案 1 :(得分:7)
我刚刚通过Preferences > Validation > suspend all validators
关闭了Eclipse的所有验证:
我不记得上一次我需要验证,或者认为它首先是一个有用的功能。如果您想帮助整个团队,您还可以在每个项目中查看以下文件。 .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散热器再次非常安静。
答案 2 :(得分:5)
在Juno,Dali项目已经进行了多项性能改进,可以帮助您解决问题。我们还进行了更改,将我们的一些工作推送到后台线程并使用Eclipse Jobs框架。
如果您仍然看到Juno的性能滞后,我将非常感谢您向我们发送一些性能分析信息。 我可以尝试在我的工作中使用您的结果来提高性能(如果可能的话,在Juno SR1中)。我使用jdk1.6.0_31中包含的Java VisualVM取得了成功。我将探查器CPU设置设置为'从类开始分析:'org.eclipse.jpt。**,取消选中'Profile new Runnables'和'Profile only classes:'org.eclipse.jpt。*。然后,您可以运行导致问题的一个用例并将生成的快照附加到eclipse错误(WebTools-Dali Jpa Tools)。
答案 3 :(得分:1)
您也可以在任何 org.eclipse.wst.common.project.facet.core.xml 文件中查找该条目
<installed facet="jpt.jpa" version="1.0"/>
并删除
答案 4 :(得分:0)