Re: [wtp-dev] EAR Redeployment To OC4J
This sounds like the problem reported in Bug# 282228, which Konrad mentioned that could be the same as bug# 278291, probably caused by the changes in bug# 241466. I will take a look at this tonight. I think the patch in Bug# 283184 Comment #4, will fix the problem.
Mr. Angel Vera
Server Tools Developer for WTP and Rational
Lotus Notes: Angel Vera/Toronto/IBM@IBMCA
Tel: 905-413-5919 - E-Mail: arvera@xxxxxxxxxx
Those who think that something is impossible,
should not interfere with those who are willing to do it. - Angel Vera
george badu ---07/28/2009 04:31:05 AM---Hi I am using OC4J (version 10.1.3.4 standalone) with Eclipse 3.5 i.e. Galileo for
george badu <quophyie@xxxxxxxxx>
"General discussion of project-wide or architectural issues." <wtp-dev@xxxxxxxxxxx>
07/28/2009 04:31 AM
[wtp-dev] EAR Redeployment To OC4J
I am using OC4J (version 10.1.3.4 standalone) with Eclipse 3.5 i.e. Galileo for development and testing a J2EE Enterprise Application (EAR file) that contains an EJB and A client application that I'm working on. On a first run, I am able to build all the components and deploy it fine but if I make a change to any of the components e.g. make change to component the EJB and try to redeploy the EAR file, I get the following error:
C:\EclipseGalileo\eclipse\plugins\org.eclipse.jst.server.generic.oc4j_1.5.205.v200805140145\buildfiles\oracle.10.1.3.xml:97: Deploy error: Operation failed with error:
Unable to find/read file META-INF/application.xml in C:\product\OC4J_Standalone\j2ee\home\applications\BankEJB3.0EAR (META-INF/application.xml)
The only way that I can get the EAR to redeploy sucessfully is to make a change in all the components i.e. the Client App and the EJB, and then build it all again repackage into a new EAR file and then redeploy. It seems to me that Eclipse will only build, package and deploy components that have changed since the last build into a new EAR file and exclude the other components(in this case the clientpplication) that have not changed from the new EAR file. Hence the newly packaged EAR will contain only the EJB. Since OC4J deletes the and recreates the folder containing the application during redeployment i.e (OC4J_HOME\applications\<APP_NAME_FOLDER>), it essentially tries to redeploy part of EAR (i.e EAR containg only components that have changed since last deployment) and I think this is what causes the failure. After a few days spent trying to figure out what was wrong, I've finally found the culprit and it is to do with the publish process in eclipse (i.e. clicking on the publish button in eclipse server view). Essesntially, what happens when when you publish is , Eclipse jars up the updated component and places it in TEMP_FOLDERi.e. <ECLIPSE_WORKSPACE>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\<ARCHIVE_NAME>. Then using the build file found @ <ECLIPSE_HOME>\plugins\org.eclipse.jst.server.generic.oc4j_1.5.205.v200805140145\buildfiles\oracle.10.1.3.xml, eclipse creates an a archive (EAR) containg only the updated component(EJB) i.e.(components in the TEMP_FOLDER) and excludes all of the components that have not been updated (in this case the appclient) and tries to deploy this new "partial" Archive.
The deployment descriptor (application.xml) of this new "partial" archive will still however, have a reference to the compnonent which has not changed although that is not part of this new archive (i.e new Archive contains only the updated components). Oc4J then tries to deploy the new archive. However, during deployment, oc4j undeploys the older application(which contains all components) and tries to deploy teh new archive(which contains only the updated components). The redeployment fails because of the references(in application.xml) to the components that that are not part of the new archive.
I'm wondering if this is the expected behaviour and whether it will ever be fixed? Or is there a certain specifics steps to set up EAR projects for deployment to OC4J?
Any answers to these questions will be greatly appreciated
wtp-dev mailing list