As of Version 3.0.5 Exadel on its web foundation layer is now based on WTP 0.8. All the former blocking bugs regarding the web application structure are now gone, you now can add a webcontent dir later and also rename the it to your needs.
Therefore a detailed description for this version now is given to this excellent Eclipse extension.
Exadel from all low cost solutions based on Eclipse probably currently has the best integration of various wizards and code artefacts. It allows drag and dropping of various code artefacts between the various editors, and also allows visual and semi visual editing of html pages, utilizing the Mozilla Gecko engine. For simple JSF editing it can be highly recommended, it comes at the current state with MyFaces 1.0.9 included and has an excellent extensible tool palette with all the needed tags of MyFaces 1.1.0 included.
If you are in need for a low cost solution which allows easy deployment and project creation you could make worse choices than this plugin collection. Exadel tries to concentrate on a handful of technologies, you wont get an extensive coverage of platforms and web frameworks as in MyEclipse_IDE but those plugins Exadel delivers are usually more advanced.
You also can drag and drop between various artefacts and editors, for instance, you can drag and drop a backend bean into a form, or you can drag a locale entry into a form. Thus coding amount is reduced significantly and also errors.
One main advantage besides extensive drag and drop, of Exadels solution is, that the JSP Visual Editing part works across platforms.
Creation and Editing of new JSF Projects
Exadel simplifies this, you just have to chose a new JSF Project and you will get the entire infrastructure up to MyFaces 1.1.0 delivered automatically. If you need higher patch levels simply dump the config files from one of the generated wars into the generated webapp infrastructure and adjust the library settings
There are extensive tutorials hosted on the Exadel website:
Compiling and Building of MyFaces within Exadel Exadel/Pro
The checkout of an existing project is identical to the checkout in a normal Eclipse environment, simply check out the project from the SVN tree as Java Project!!! project. Once the checkout is done, ant can be used to build MyFaces just like under any other Eclipse Environment.
- Editing and Compilation witout ANT from an existing Java Project
Now Exadels extensive JSF and Web infrastructure can be used to reduce the amount of ant cycles and to add various helpers to the building process. Following steps have to be performed to add Web
- now create a dummy webapp structure as described in the image below
- Add a web.xml to the project, this can be done via right clicking on the project
NEW->Other->Web Descriptor (see image below)
- The dialog asks you several parameters about servlet version etc...
- for the folder chose the /WebRoot/WEB-INF dir, the name is web.xml
- Once this is done Exadel asks you if you want to add a jsf nature, here you should say yes, to save
work later on
follow the wizard and chose MyFaces 1.1.0 as implementation
Note alternatively to these steps you might be able to check out the project directly as jsf project
and thus get delivered the webapp structure automaticall. In this case simply checkout the project as JSF Project and skip the webapp creation part, simply check it out.
- Once this is done, replace the config files and libs with the ones from the blank webapp or one of the other
generated war files
- In case of a Tomcat 5.5+ also delete the jsp2.0 and commons el files
- If you have done everything correctly you should now be able to see a picture like that in the
Now we can add all the source dirs of MyFaces to our project so that we can edit the form, check
in the project settings that Exadel has all the WEB-INF/lib jars in your build path and the WEB-INF/classes as target directory and then add one by one the sources dirs you want to edit and debug.
- You now should be able to edit the sources and get all the benefits of Eclipses and Exadels infrastructure
for deployment you can use the Exadel interal WTP Application server deployment facilities.
Exadel pre 3.0.5 and WTP 0.7.x
Editing and compiling MyFaces with Exadel
This part is very tricky, Exadel is very rigid in the creation of the needed web application structure. Exadel basically enforces an upfront creation of a webapp, with a given webcontent dir under the name /WebContent/, this however collides with the enforced checkout as project function by the subclipse plugin.
According to the Exadel Support forum, this problem seems to be related to a limitation of the underlying WTP toolkit, which will be relaxed in the near future. Therefore the WTP in its current incarnation might have the same problem. For now there is no really clean Eclipse only solution to bypass the problem, neither in Exadel, nor probably in WTP. However, there are workarounds.
Several workarounds to this conflict of functions, are possible.
The first one would be to use the dump the source folder into the project structure approach as described in the Eclipse_IDE page. That way however the possibility to sync with the server is lost.
Another viable approach would be to omit the Subclipse plugin and use a different svn client, that approach probably would be the fastest clean way to get things up and running, and indeed it often was used in the "distant" past by many developers at the time when subclipse either was unavailable or in beta state.
But for now there seems to be no clean eclipse only way to merge the two codebases within one project and keep the possibility of being able to edit the files and sync with the svn server from within subclipse. This problem might be relaxed in the future, but due to limitations within Exadel and the subclipse plugin it currently is not possible.
Therefore if you want to edit the codebase from Exadel, either use the dump the files approach or use a svn client which syncs the files from outside of Eclipse. Under Unix a symlink approach also might be possible, to symlink the MyFaces project into the web application codebase.