JVx with Exchange Servers

Post to Twitter

The integration of Exchange servers is or could be very important for ERP applications. If you use Exchange to manage your contacts, appointments, task, etc. wouldn't it be great to manage or integrate your data in your application(s), directly without copying?

The problem is not the integration in your application, the problem is how you get data from your Exchange server. There are some commercial Java products available but you don't need commercial products since Microsoft offers EWS Java API. The API is very simple and communicates via SOAP to your Exchange server. The documentation is good for a quick start but you have to read source code if you want to know some details.

We made it simple for your JVx applications to integrate an Exchange server, because we did implement storages for Contacts and Contact folders (more will follow). With our storages it's a breeze to enrich your application. Create a storage in your life-cycle object like all other storages:

public IStorage getContacts() throws Exception
{
        ContactsStorage contacts = (ContactsStorage)get("contacts");
       
        if (contacts == null)
        {
                contacts = new ContactsStorage();
                contacts.setURL(<url>);
                contacts.setUserName(<username>);
                contacts.setPassword(<password);
                contacts.open();
               
                put("contacts", contacts);
        }
       
        return contacts;
}

That's enough to read and write contacts.

If you work with contact folders, simply use our storage for it:

public IStorage getFolders() throws Exception
{
        ContactsFolderStorage folders = (ContactsFolderStorage)get("folders");
       
        if (folders == null)
        {
                folders = new ContactsFolderStorage();
                folders.setURL(<url>);
                folders.setUserName(<username>);
                folders.setPassword(<password);
                folders.open();
               
                put("folders", folders);
        }
       
        return folders;
}

Our storages support load-on-demand and filtering via Exchange functionality. The folder storage supports shared folders!

It's straight forward to create a master/detail relation between folders and contacts. We developed a simple sample application.

Exchange Contact Management

Exchange Contact Management

And the best for last: Our storages are licensed under Apache 2.0.

The source code is available in our new project: JVx Storages.

A "thank you" from our customer

Post to Twitter

CEGH, SIB Visions

CEGH, SIB Visions

  We work hard for our customers and we do our best to be as professional as possible. But how do you know if your customers are really happy?

The best way is direct feedback from your customers, but that is not self-convident.

We are very happy that one of our customers has given us extremly direct feedback and we want to share this feedback with you.

Just enjoy.

(Text: Thanks to the excellent support of SIB Visions GmbH, the launch of the new gas market model on 01.01.2013 could be successfully realized. Central European Gas Hub - the board)

JVx Maven Archetype project

Post to Twitter

If you want to know how we created our Maven Archetype for JVx, simply check the source code. The project is Open Source and licensed under Apache 2.0.

The project contains a simple ANT build with two important targets. The first is start.complete. This target creates the archetype archive and deploys it to our sonatype repository. The second target is start.recreate. This target is very cool because it cleans the archetype project (mvn clean), installs the archetype in your local repository (mvn install) and creates a new project based on the installed archetype (mvn archetype:generate).

Usually, you have to use scripts, the command-line or external tools to do all your tests. We automated the whole process. Our build uses the maven integration for ant.

The integration tasks were a little bit strange but after some tests we made it working. The trick was that the build.xml and pom.xml files must be stored in separate folders. Otherwise project creation based on an archetype didn't work.

JVx' Maven Archetype

Post to Twitter

JVx is available in all public Maven repositories and we added a JVx Application Archetype that creates the whole project structure for you. Use our archetype and you'll get a full configured JVx' Application - in few seconds.

The archetype:

  GroupId   com.sibvisions.jvx
  ArtifactId   jvxapplication-archetype
  Version   1.1.5
  Repository   http://repo1.maven.org/maven2/

Use your preferred IDE to create your JVx project. The archetype will create 4 new Maven projects. The first project is the master project. It references 3 modules. The first module is the client, the second one is the server and the third one is a war module.

The client module/project contains all UI relevant classes like Application and Screens. The server module/project contains the business logic of your application. The war module/project creates a full functional web application archive (war) and allows you to publish your application with Eclipse WTP.

The client project contains a preconfigured JVx Application with one simple work-screen. It contains the class MainApplication which contains a main method. Simply start MainApplication and login with username (admin) and password (admin). The application doesn't need a database because it uses a XmlSecurityManager and an AbstractMemStorage. It only is an example application and not for production use!

Use the war project to create deployable war files. We've used it successfully with e.g. Tomcat. After deployment, simply open the application URL - http://localhost/firstapp - (replace firstapp with your application name) and login. The application is also available via JNLP - http://localhost/firstapp/application.jnlp.

If you want to test your desktop application with your application server, e.g. Tomcat with Eclipse WTP, simply change the connection in your application. The default connection is a DirectServerConnection. This means that client and server run in the same VM. If you change the connection to HttpConnection, a remote server will be used. An example is available in the application source code.

The JVx Application Archetype creates a full functional 3tier application. It's preconfigured to run as desktop application and with an application server like Tomcat. Don't think about project creation and directory conventions. It simply works!

Have a look at an example project:

Standard application

Standard application

 
Eclipse projects

Eclipse projects

Watch following video to see how it works:


JVx' Maven Archetype