Create sample XML message from XSD in Eclipse (Free solution!)

On an Oracle Service Bus project you are often supplied with XSD’s or WSDL’s when you’re integrating with clients. The customer or client expects you to test their web service but before you do, you might want to take a look at the XML which should be sent to make sure you’re sending compliant XML.
One way to do this is by importing the WSDL in SoapUI and creating sample test requests, this comes in quite handy when you are actually using a WSDL, but what if the customer only supplies an XSD? SoapUI does not support creating sample XML from an XSD element.
There are several commercial products which can solve this problem but if you’re only looking for generating sample XML messages from XSD, you might want to look at using Eclipse’s built in XML generating option:
First step is to import the XSD in your project, the right click the Schema and select “Generate” and then “XML”

Screenshot - Eclipse - Generate XML from XSD
Screenshot – Eclipse – Generate XML from XSD

You will be presented with a “New XML file” dialogue which lets you save your new XML sample. Choose any location you want, and click “Next”. Then you will be presented with the options for your new XML sample. Select the options you desire and press “Finish”
Screenshot - Generate XML - New file dialogue
Screenshot – Generate XML – New file dialogue

Your new XML file has been generated and ofcourse is compliant with your XSD right now!

How to start with Oracle Service Bus (OSB) development

This post is meant to explain the few steps you need to take to start with Oracle Service Bus (OSB) development on a Windows 7 laptop. The OSB version used is 11g, although these steps are also suitable for OSB 10gR3 and Aqualogic Service Bus (ALSB) as well.
There are as many ways of organizing a project as there are people, this is the way I have chosen and this by no means is meant as “the way to go“. It is merely meant as a guideline, (so please do adapt where you find it more suitable for your needs)
(You can find the installation instructions for an OSB 11g development environment in this blog post)
There are two OSB projects which you can create when you open the Oracle Enterprise Pack for Eclipse (OEPE):

  • Oracle Service Bus Project
  • Oracle Service Bus Configuration Project

An OSB Project contains the actual project which you will create. These are often functionally bound and represent a hierarchical structure similar to the structure on your hard disk.
An OSB Configuration Project represents one domain on which you will deploy your projects. These Configuration Projects contain common settings (like a pointer to an SMTP server)

Create an OSB Configuration Project

The first step in a every new OSB Workspace is to create a new configuration project. Later on when you create OSB projects you need to choose the Configuration Project to which they will belong.
Side note: OSB Configuration Projects can be used as pointers to a OSB Domain (or a local domain)
Within Eclipse, right click the empty space in the Project Explorer and choose “New” and then “Oracle Service Bus Configuration Project”. For now we will not use the advanced functions so name your Configuration project to a name suitable for you (for me that mostly means “OSB Configuration”) and press “Finish”
In a new Workspace you will get the question if you would like to switch to the “Oracle Service Bus perspective”, choose “Yes”.
The above steps are the same for every project. I keep my workspaces aligned with the domains to which I deploy.
This means a new workspace for each domain, I often work with common schema’s and services (e.g. loggers / mailers) which I place in a separate project. Although I do re-use a lot of services, I found it better to keep this lean and not to tightly coupled so I create a new Common Services project for each domain instead of creating ONE Project to rule them all.

Create an OSB Project

This paragraph will focus on creating an OSB Project and will contain a sample service.
Right click the empty space in the “Project Explorer” and choose “New” and then “Oracle Service Bus Project”
For the start of every new project you will create the following structure:

  • Project name (In this case “OSB Sample Project”)
    • Business Service
    • Proxy Service
    • Schema
    • Transformation
    • WSDL

This leads to this view:

Screenshot - OSB Eclipse - Project Explorer Sample Project
Screenshot – OSB Eclipse – Project Explorer Sample Project

This is the basis you need for creating Oracle Service Bus services. I will expand in further detail in later posts.

Create a local development OSB domain

If you do not have a development environment available or prefer to test your service locally you can also create a OSB domain on your local machine. The next paragraph leads you through the creation of a new OSB domain via Eclipse.
We will use the “Configuration Wizard” which will let us create a fresh new local Weblogic domain on our computer.
Press “Start” / the Windows button and enter “Configuration Wizard” which will show the start menu entry in the OSB menu folder:

Screenshot - Start Menu - Weblogic Configuration Wizard
Screenshot – Start Menu – Weblogic Configuration Wizard

If all went well, you will be presented with this choice:
Choose “Create a new Weblogic domain” and click “Next” to continue to the product selection:
Screenshot - Weblogic Configuration Wizard - Product Selection
Only select “Oracle Service Bus for developers – 11.1.1.6 [Oracle_OSB1]”, this will automatically select the dependencies as well. Click “Next” to continue to the Domain name and location screen:
Screenshot - Weblogic Configuration Wizard - Domain Name and Location
Tip: I tend to use a domain name which indicates that I am working on my own machine as well as states the product and version which is deployed on the Weblogic server. The domain name is quite visible in the web console and this way I’m sure I’m working on the correct domain.
Enter the domain name you wish and press “Next” to continue to the admin user name and password screens:
Screenshot - Weblogic Configuration Wizard - Admin user name and password
Since 11g the password is bound to rules which prohibit you from choosing a really simple password. So with this added difficulty make sure you pick one which you will remember!
When you’re done, click “Next” on every screen until you get to the configuration summary.
Screenshot - Weblogic Configuration Wizard - Configuration Summary
The configuration is done when you select “Create”, your domain will then be created, after which you will be presented with this summary:
Screenshot - Weblogic Configuration Wizard - Finished
Click “Done” to exit the configuration wizard. We will not start the Admin server yet.
We can now continue to configuring Eclipse to use this domain.

Add our local OSB domain to Eclipse

This paragraph explains how to configure an OSB domain in Eclipse. It is possible to configure a remote (DEV) domain here which is running on another server. I would advise to only configure local domains within your Eclipse, a DEV environment is often shared among colleagues and you might overwrite or tamper with your fellow colleague his or her services without knowing it.
As a guideline: Use the DEV environment to test project exports and see if those are working without problems.
Start Eclipse and choose your workspace.
First activate the “Servers” tab in the bottom window, as shown in the screenshot below:
Screenshot - OSB Eclipse - Servers tab
Then right click the empty space in the window and select “New” and then “Server”.
Just to make sure you don’t encounter strange behavior when you deploy to production, you should always choose and use the same version for development and deployment. In this example we choose “Oracle WebLogic Server 11gR1 (10.3.6)”:
Screenshot - OSB Eclipse - New local domain
Again: Although it is not necessary, I do like to rename the domain name (Server’s host name) to a value which will show me that I’m working local and on which version.
In the following examples we will also log into the Application server Weblogic via the web console. This Weblogic domain is also named “local_osb_11g” which again helps you to identify the domain when you’re shifting between local / DTAP environments.
For your consideration: Depending on your needs you can later on create several local domains. If you are working on two projects at the same time it makes sense to create two domains.
Most of the time I re-use one domain since you can redeploy all projects in your workspace within a minute. This way you are also absolutely sure that your local configuration is always the way you expect it to be.
In general: Most clients will use one configuration profile for all OSB domains.
After pressing “Next” you will be presented with the Domain Directory selection dialogue, where you will need to adjust three settings:

  1. Choose “Local” as “Server type”
  2. Choose your newly created domain via the dropdown and “Known Domains”
  3. Select “Always start Weblogic server in debug mode” to ease debugging later on

Screenshot - Eclipse Domain configuration - Directory Configuration
Press “Next” to select the resources which we will deploy on our local domain.
Screenshot - Eclipse Domain Configuration - Add resources
Add the Configuration Project you wish and click “Next” in the next three screens. Click “Finish” in the last screen to finalize your domain configuration:
Screenshot - Eclipse Domain Configuration - Finalize the config
If you are successful you should have a bottom window looking like this:
Screenshot - OSB Eclipse - Local OSB Domain
We are now ready to start this local server and deploy our newly created Projects.
Right click the top line (which stands for the domain) and select “Start”.
Side note: You can also start the domain via the start menu or straight through the command shell by using “startWeblogic.cmd”. In my installation, it is located at: C:\Oracle\middleware\osb11g\user_projects\domains\local_osb_11g\bin
The tab “Console” will activate and will show the details of the server starting. It will take a minute or two but when the local domain is started you will see the following line:

<10-jul-2012 1:20:47 uur CEST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>

Open a internet browser and go to the following URI to open the OSB web console to access your synchronized brand new OSB domain:
http://localhost:7001/sbconsole
After logging in with the user “weblogic” and the password you’ve chosen, it should look like this:
Screenshot - Chrome running SBConsole
You can see the OSB projects you’ve deployed to this server via the button “Project Explorer”.
Note: You can also develop new services via this SBConsole, most functions which are available via Eclipse also exist in the SBConsole.
That’s it! You are now fully equipped with a running OSB domain on your machine and can start developing and running your own web services.

Tabs are huge in Eclipse on Ubuntu

You might have noticed the tabs are a bit bigger in Eclipse than what you’re used to when running Eclipse in Windows.
(This is a minor annoyance, but more screen real estate is always welcome..!)
This is what it would look like before:

You can solve this by creating a custom gtkrc-2.0 file, which should be in your home folder.
Start up your terminal and execute the bold text:

joris@dipshit:~$ nano ~/.gtkrc-2.0

You’re in nano right now, insert the following text in .gtkrc-2.0:

style "compact-toolbar"
{
        GtkToolbar::internal-padding = 0
        xthickness = 1
        ythickness = 1
}
style "compact-button"
{
        xthickness = 0
        ythickness = 0
}
class "GtkToolbar"                              style "compact-toolbar"
widget_class "*<GtkToolbar>*<GtkButton>"        style "compact-button"

Press “CTRL+x” to close the file and press “Y” to save the edited contents.
Next time you’ll open eclipse, the tabs will look like this:

Black preview in GWT Designer in Eclipse on Ubuntu

Unfortunatly there’s a small snag when you’re using GWT designer on ubuntu with the libwebkit libs. When libwebkitgtk-1.0.so.2 isn’t found, the GWT designer will display a black field when you’re editing gui items, as shown on the example below:

GWT Designer on Ubuntu

You can easily solve this by symbolic linking to the already existing libwebkit library. Only execute the commands which are shown in bold:

joris@dipshit:~$ cd /usr/lib
joris@dipshit:/usr/lib$ ls -lhatr |grep libwebkit
-rw-r--r--   1 root root       19M 2011-04-20 14:52 libwebkitgtk-1.0.so.0.6.0
lrwxrwxrwx   1 root root        25 2011-08-12 19:14 libwebkitgtk-1.0.so.0 -> libwebkitgtk-1.0.so.0.6.0
joris@dipshit:/usr/lib$ sudo ln -s libwebkitgtk-1.0.so.0 libwebkit-1.0.so.2
joris@dipshit:/usr/lib$ ls -lhatr |grep libwebkit
-rw-r--r--   1 root root       19M 2011-04-20 14:52 libwebkitgtk-1.0.so.0.6.0
lrwxrwxrwx   1 root root        25 2011-08-12 19:14 libwebkitgtk-1.0.so.0 -> libwebkitgtk-1.0.so.0.6.0
lrwxrwxrwx   1 root root        21 2011-09-06 23:04 libwebkit-1.0.so.2 -> libwebkitgtk-1.0.so.0
joris@dipshit:/usr/lib$

Remark; This’ll create the symbolic link based on the link which Ubuntu already placed. If we would place it on 0.6.0, there might be a problem when we upgrade libwebkitgtk.
Happy designing!