Donnerstag Sep 18, 2008

RichFaces & Maven - easy setup!

The last days I read a lot about RichFaces and saw this cool live demo. RichFaces sparks my interest. As the JSF Framework RichFaces from JBoss supports much more components as other frameworks and also really cool Ajax features, I started to build my first jee web module using RichFaces.
First I read this quick guide which shows how to build a JEE Webmodul using RichFaces in general. But as I planed to integrate my first example into an existing JEE project build on maven I search a lot to find out how to setup a Maven Web module with RichFaces Support.

Here is my personal quick guide to setup a maven web app with RichFaces:

1.) Add the JBoss Maven repository to your Maven Installation:

first you need to add the following repository description into your setup.xml file located in your Maven root directory:

 	<!-- JBoss RichFaces Repository -->
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
<id>repository.jboss.com</id>
<name>Jboss Repository for Maven</name>
<url>
http://repository.jboss.com/maven2/
</url>
<layout>default</layout>
</repository>
</repositories>

So later maven will be able to download the necessary components. (I don't know why this framework is not included into the standard maven repository)

2.) Add the RichFaces Dependencies

the next (and final) step is to add the RichFaces Dependencies into your Maven Web Module (I assume that you know how to build a web module with maven).
To find out the right dependencies takes me the most time as I did not found an example on the JBoss RichFaces Homepage. But finally I found these dependency configuration which works fine:

   <dependencies>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-ui</artifactId>
<version>3.2.1.GA</version>
</dependency>
</dependencies>

So add these three dependencies into your pom.xml.

That's really all!

I completed my first integration test with the Simple Ajax Echo example at it works perfect !

Now I begin to love RichFaces :-)

Samstag Aug 23, 2008

Turbo Eclipse

These days I started a new Eclipse Project: Turbo Eclipse

The idea behind turbo eclipse is to provide a small and easy to use eclipse distribution for maven developers based on Eclipse Ganymede. 

The goals of Turbo Eclipse are

  • minimum amount of Plugins
  • Full Maven support using Maven IDE Plugin
  • Full Subversion support using subclipse
  • Facelets Support using the Eclipse Facelets Project

The Project is hosted at dev.java.net:

https://turbo-eclipse.dev.java.net/

Feedback and Tips are welcome. If you would like to join the project contact me or request a project role on dev.java.net


Mittwoch Jul 09, 2008

Eclipse Ganymede - Maven

Today I installed new Eclipse version Ganymede. The Update Center have changed and I need Subversion Team support and also maven2 for my projects.

So these are the steps I go through plugin installation:

Subversion Team Support

Eclipse supports now subversion integration ”subversive”. You can install this additional plugins using the update manager

 

Switch to the tab "Available Software" and expand the "Ganymede" section. There you will find the "SVN Team Provider Plugin" under "Collaboration Tools"

I need further (maybe as I am using Linux ?) to follow these instructions:

http://blog.punchbarrel.com/2008/06/30/using-the-new-subversion-integration-in-eclipse-ganymede/

So I installed the SVNKit 1.1.7 - this works perfect. I don't think that this step is necessary under Windows.

Maven2 Plugin

The next part for me was to add Maven2 Plugin support into my Eclipse.

General Informations about this Plugin can be read here:
http://m2eclipse.codehaus.org/

As the Maven Plugin Repository is not included in the Update Manager per default you need to add the Update Site manually.

So in the Update Manager switch to the tab "Available Software" and add the following Update Site to the Update Manager using the function "Add site"

http://m2eclipse.sonatype.org/update/

 

You can now select the following Features from this Update Site:

  • Maven Integration
    • Maven Integration for Eclipse
    • Maven POM XML Edtior
    • Maven: The Definitive Guid book
  • Maven Project Configurators
    • Maven Integration for WTP
  • Optional Components 
    • Nexus index for Centra Maven repository

After that you need a additional plugin to checkout Maven Projects from a Subversion Repository (using the  context menu "check out as maven project"). These Subversive Integration is not included in the sonatype upates site. But it can be taken from the following update URL:

http://www.polarion.org/projects/subversive/download/integrations/update-site/

Again you need to add the Update Site manually.

 

After that you can add the Plugin

  • "Subversive Integration for the M2Eclipse Project"

to your eclipse IDE.

After all my new Eclipse Ganymede seems to be very cool.  Maven and Subversion works as perfect.

It's a pity that Eclipse Ganymede dos not integrate the Maven Plugin more easily....


Samstag Jun 28, 2008

Maven: How to exclude EJB jars from a War Module

It happened to me that when I build my multi-module maven project and deploy it to my glassfish server I receifed server errors like this:

[#|2008-06-28T23:26:31.815+0200|SEVERE|sun-appserver9.1|javax.enterprise.system.tools.deployment|
_ThreadID=14;
_ThreadName=Timer-7;_RequestID=dffabadc-2951-492d-9b98-88ada568fd33;
|Annotations processing failed for
/opt/glassfish/domains/domain1/applications/j2ee-apps/org.imixs.shareyourwork.ear-0.7.3/
org.imixs.shareyourwork.ejb-0.7.3_jar|#]
[#|2008-06-28T23:26:32.218+0200|SEVERE|sun-appserver9.1|javax.enterprise.system.tools.deployment|
_ThreadID=14;_ThreadName=Timer-7;_RequestID=dffabadc-2951-492d-9b98-88ada568fd33;
|Class org.imixs.workflow.jee.ejb.WorkflowServiceManagerImplementation is annotated with
@WebService and @Stateless but is packaged in a WAR. If it is supposed to be an EJB endpoint,
it should be packaged in a JAR; Deployment will continue assuming this class to be just a POJO
used by other classes in the WAR being deployed symbol: javax.jws.WebService

 This happens because the EJB modules which are included using a dependency tag in my war module are also added into the WEB-INF/lib directory.

And this is not allowed or necessary because the EJB jars are available in the EAR / EJB modul.

So the solution to avoid this error message was to add the folling tag to the dependency tag of the war module:

<scope>provided</scope>    

This means that the JARs of this dependency are not included into the /lib folder of the war module. So the deployment process will proceed without error messages.

Sonntag Jun 22, 2008

Eclipse - JavaServer Faces - Configuration

In some cases it can happen that your Eclipse Web Project did not support code completion in a JSP or JSF page.
This happens to me in a JSF Project with MyFaces and Facelets Support. I build up the project using Maven so the project build was sucessfull and the project works well on my server but typing code with Eclipse JSP Editor war extreamly annoying as Eclipse did not support my with code completion.

The reason was that the project facets for my project where broken and also MyFaces Support was not added to Eclipse correctly. Indeed it is necessary to configure the myfaces support in Eclipse manually and I am not sure if I was not intelligent enough or the Eclipse WTP is not so easy to use as I should be.

So follow these steps if you run into a similar problem  :

  1. create a MyFaces Folder localy on your computer (e.g: /home/user/myfaces)
  2. move the MyFaces libs and tomahawk libs into a subfolder lib/ (e.g:/home/user/myfaces/lib)
    • commons-beanutils-x.x.x.jar
    • commons-codec-x.x.x.jar
    • commons-collections-x.x.jar
    • commons-digester-x.x.jar
    • commons-discovery-x.x.jar
    • commons-logging-x.x.x.jar
    • myfaces-api-x.x.x.jar
    • myfaces-impl-x.x.x.jar
    • tomahawk-x.x.x.jar
  3. move the tld Files for myfaces and tomahawk in a /tlds subfolder (e.g./home/user/myfaces/tlds)
    • myfaces-impl-x.x.x-tlddoc.jar
    • tomahawk-x.x.x-tlddoc.jar
  4. Edit the JavaServer Faces LIbraries
    1. open Window->Preferences
    2. go to Web and XML > JavaServer Faces Tools > Libraries
    3. add a new library "MyFaces" with all the jar files moved before to your myfaces/lib folder
    4. add a new library "MyFacesTLD" with all the jar files moved before to myfaces/tlds folder
  5. Next edit the Project Facets of your Web Project (Select your project and open >Project Properties  > click modify )
    1. if there is allready available a JavaServerFaces Support - remove JavaServerFaces 1.2
    2. add JavaServerFaces 1.2. support and press "next" button
    3. select option "Sever supplied JSF Implemenation" and add the component libraries configured before in the right part of the selection. This is the importend part! And I did not found this dialog after clicking on "finish"

 After this stepps code competion works for my JSF Project. Notice that I work with maven and Maven integration in Eclipse is currently not the best. But maybe this instruction will help you...

Samstag Jun 21, 2008

Maven EAR Artefacts - web modul missing

I build a new Maven multi modul project with EJB, WEB and EAR Artifacts.

I was sure that I have added all necessary dependencies to my pom.xml files. But each time I try to install my EAR Artefact I receifed an error like this one:

....
Error message: Missing:
----------
1) org.imixs.myproject.web:jar:1.0.0
----------
1 required artifact is missing.
.....

The reason was that maven searches per default for a .jar artifact even if you try to add a WEB Modul! 

So the solution was to change the dependency in my pom.xml of my ear artifact. I just added the <type> tag to the dependency with the value "war".

Also make sure that you add the type "ejb" to each ejb artifact you add to your ear artifact!

Now maven build succeeds :-)