我正在使用一个使用EJB 2.1的旧企业应用程序。该应用程序是在2000年使用Eclipse和XDoclet 1.2.3构建的。
该应用程序由1个企业应用程序项目命名为AppEar
, 1个EJB项目命名为AppEjb
, 1个EJB客户端项目命名为AppEjbClient
, 1个实用程序项目命名为AppSrc
和1个动态Web项目命名为AppWeb
。
ejb-jar.xml
位于AppEjb
项目的ejbModuleMETA-INF
文件夹中,通过以下条目指向AppEjbClient
项目:
<ejb-client-jar>AppEjbClient.jar</ejb-client-jar>
我将应用程序升级到Eclipse Kepler(我的工作区是D:WORKWORKSPACE-eclipse-jee-kepler
)。但是我遇到的问题是XDoclet Plugin现在在ejb-jar.xml中设置了错误的ejb-client-jar。现在是这样设置的:
<ejb-client-jar>AppSrc.jar</ejb-client-jar>
所以不知何故,XDcolet插件现在认为AppSrc
是EJB客户端项目而不是AppEjbClient
。
我调查了一下,发现XDcolet插件运行ant脚本tempAnt.xml
,它位于工作区的.metadata.pluginsorg.eclipse.jst.j2ee.ejb.annotations.xdoclet
文件夹中。该文件夹还有一个build.properties
文件,该文件具有与EJB客户端模块相关的2个属性:
ejb.dd.clientjar = AppSrc.jar
ejb.client.module.src = D://WORKSPACE-eclipse-jee-kepler/AppSrc/src
我想我只需要在build.properties
文件中更改它们以指向正确的EJB客户端,所以我这样更改它们:
ejb.dd.clientjar = AppEjbClient.jar
ejb.client.module.src = D://WORKSPACE-eclipse-jee-kepler/AppEjbClient/ejbModule
保存build.properties
文件,然后再次执行clean并构建整个工作区。
但是在ejb-jar.xml中仍然得到相同的错误的ejb-client-jar。
检查.metadata.pluginsorg.eclipse.jst.j2ee.ejb.annotations.xdoclet
文件夹中的build.properties
文件,它通过删除我的更改被还原回来了。所以XDoclet Plugin会覆盖这个文件。
我如何解决这个问题,使它在ejb-jar.xml中选择正确的ejb-client-jar ?
我们最近刊登了同一期。克服这个问题的方法是从eclipse工作区中删除Utility Project,因为依赖项是通过maven插件解决的。
之后,Java EE Tools > Remove EJB Client
下的客户端(因此在ejb.dd.clientjar中)被正确设置。可能有类似的bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=122274.