Conor, Wow, what timing. I was just going to embark on doing this myself. We are currently using 4.51, but as soon as Bea can fix some bugs we will be on to 5.1.
5.1 is a different game. DDCreator is gone. You no longer need to create a serialization of the deployment descriptor. Rather, the deployment information is stored in two or more .xml files. These files must be in the META-INF of the .jar. ejbc only works on a .jar file. It has the option to put the container generated classes into the same .jar file or an alternate. The manifest is no longer required. I'll have a look at what you have done. I would love to work with you to get you tasks to work with 5.1. Thanks for sharing. Todd -----Original Message----- From: Conor MacNeill [mailto:[EMAIL PROTECTED] Sent: Sunday, May 07, 2000 7:56 AM To: Ant-Dev Apache. Subject: Tasks for ejbc compile of weblogic EJBs Hi, Attached are two task definitions and a small set of patches to allow you to use ant to build weblogic EJBs. I developed these tasks for building EJBs here at Cortex and Cortex have agreed to let me give them to the ant project. The new code consists of two optional ant tasks: ddcreator and ejbc. ddcreator takes a set of deployment descriptor definitions according to the weblogic definition language and generates the serialised deployment descriptors, while ejbc takes the serialised deployment descriptor and generates the various EJB support files required by Weblogic, including the RMI stubs and skeletons. Both tasks only generate a result if it is out of date with respect to the source. Example usage of the ddcreator task would be <ddcreator descriptors="${dd.dir}" dest="${gen.classes}" classpath="${descriptorbuild.classpath}"> <include name="*.txt" /> </ddcreator> where descriptors is the directory where the text descriptor defintions are located dest is the directory where the serialised deployment descriptors are written classpath should include the weblogic tools and the classes containing the home and remote interfaces for the various EJBs The ejbc task is a little more complicated. <ejbc descriptors="${gen.classes}" src="${src.dir}" dest="${gen.classes}" manifest="${build.manifest}" classpath="${descriptorbuild.classpath}"> <include name="*.ser" /> </ejbc> where descriptors in this case is the directory where the serialised deployment descriptors are located src is the directory containing the source defining the home and remote interfaces dest is the directory where the generated support classes are written manifest is a generated jar manifest file defining all of the EJBs to be included classpath should again contains the weblogic tools plus the home, remote and bean classes. Both tasks are MatchingTasks and the include element is generally used to select the appropriate files. The implementation of these tasks supports the way we have been building EJBs at Cortex. In particular I set the ejbc options to those we currently use. If it doesn't fit with other organisations, let me know. Also this is geared to WebLogic 4.5. I have not yet looked at 5.1. The implementation details of the two tasks are worth looking at a little bit more closely. Both tasks are implemented as an ant task with a separate helper class which is executed in a separate JVM. This is done because I wanted to control the classpath under which the weblogic tools were executed. The weblogic tools generally require the classpath to include the class files for the home and remote interfaces of the beans you are developing. I did not want to have to startup ant with its classpath including the project it is compiling. Thus the ant tasks simply delegate all the work to the helper in a separate JVM. To create that JVM and have its output pumped into the project log, I used a Java task object. I needed to modify the ant Task object, however, to make the setProject method public so I could connect the project to the Java task. I also added a validateDirectory method which allows any task to validate that a given File object represents a directory and that the directory exists. This could probably be used by a few other tasks. Let me know what you think, especially if you are using WebLogic. Cheers Conor -- Conor MacNeill [EMAIL PROTECTED] Cortex ebusiness Pty Limited
