views:

219

answers:

4

In order to satisfy customer requirements, we will need to let users exchange information among each other. The 'messaging system' does not have sophisticated back-end requirements and could be easily implemented with a few tables to store messages and message types.

The problem is that I believe that the requirements on the front-end are very high and usability is very important. In addition I expect this communication's part to become an important part of the system in the long run.

Is there anything that can be directly integrated into a Java web application and adapted to the application's design? What we need is the following interface

From service layer:

  • send message to user (header, subject)
  • reply to a message
  • notification on new message in user inbox (if possible: on current page)
  • interface to existing user management

Preferably, the component should already have a front-end with the following functionality:

  • message management (select, remove, reply, delete/restore, ...)
  • folders: inbox, sent, trash
  • tagging: message categories
  • show last x messages in a panel/div
  • styling to look like the application

If there is something reasonably stable, I would prefer using a component before implementing something like this into the application. The application runs on Wicket, but we are not tied to this framework for the messaging component.

Thank you, Kariem


In portal servers, you have the flexibility to add portlets that could do something similar to the component I am looking for; e.g. Liferay provides mail and message boards portlets.

As akf points out in a comment Jabber provides a solid basis for messaging. We are looking for something that can be integrated into a web application. If we have to build a lot of UI around Jabber, we cannot really consider it a good fit for our requirements.

A: 

I think a web-based IM client like SparkWeb can be useful in your scenario.

Tahir Akhtar
+1  A: 

If you are looking for opensource java email clients:

http://java-source.net/open-source/mail-clients

You may also want to have a look at Google Wave . With this you will have next generation communication and collboration tool. Please see some awesome videos about google wave on www.youtube.com

http://code.google.com/apis/wave/

http://code.google.com/p/wave-protocol/wiki/Installation

.

Updated solution... Web based email clients

http://java-source.net/open-source/web-mail

http://code.google.com/p/cubusmail/

http://www.zimbra.com/downloads/os-downloads.html

Gladwin Burboz
Could you provide pointers on how these can be integrated into a web application?
Kariem
http://code.google.com/p/cubusmail/wiki/Installation2
Gladwin Burboz
cubusmail is jee web application, you can customize it's look and feel to your needs.
Gladwin Burboz
A: 

Ok, it may be a bit surprising but what about giving the Google Wave a try ? If I review your criteria :

Is there anything that can be directly integrated into a Java web application and adapted to the application's design [...]

It can be as you will discover on this mini-tutorial : http://blog.zenika.com/index.php?post/2010/01/27/Google-Wave-Embedded-API-the-missing-tutorial (how interesting isn't it ?)

From service layer:

  • send message to user (header, subject)
  • reply to a message
  • notification on new message in user inbox (if possible: on current page)
  • interface to existing user management

Everything but the last point is offered by the Google Wave instance. The last point may be a bit harder to solve as you will require that all of your user have a googlewave account. Managing those accounts may become available through Google Apps, but atm it's not feasible. If it's absolutely mandatory you could plan to have your own instance since it is an open protocol but your goal was to have something already done for you, right ?

Preferably, the component should already have a front-end with the following functionality:

  • message management (select, remove, reply, delete/restore, ...)
  • folders: inbox, sent, trash
  • tagging: message categories
  • show last x messages in a panel/div
  • styling to look like the application

Great, all of this is ok with the Wave.

If there is something reasonably stable, I would prefer using a component before implementing something like this into the application. The application runs on Wicket, but we are not tied to this framework for the messaging component.

Ok Wicket is so trendy, you should love this solution :-) I acknowledge that is a bit 'avant-gardiste', I have never done such a thing myself but thought it could have broaden your vision as regard to your problem...

Hubert
I should have had a better look @Gladwin Burboz which proposed the same thing. Keep my answer for the tut link.
Hubert
Great pointers, Hubert. I am waiting for wave to mature into something easily embeddable. The only problem I have is that it is currently not really possible to integrate wave in a way so that it feels integrated into the application.
Kariem
As this is the only reply that tries to explain how the solution can be integrated (this is kind of the KO criterion), I will mark this as the accepted solution. Thank you, Hubert
Kariem
A: 

Using XMPP protocol for messaging is recommended because you can easily federate your server with other chat servers, such as GTalk and Jabber.

If you intend to embed the messaging server into your application, Tigase is a fast and reliable Java XMPP server which can be easily integrated because of being lightweight and having no third-party dependencies. It also scales to hundreds of thousands of users almost seamlessly.

For the client, you can use many available web-based XMPP clients such as emite which is a GWT-based web client that is both beautiful and AJAX.

Amir Moghimi