Prototype trials in China, Australia & Singapore from Chariot Skates on Vimeo.
Thursday, 31 December 2009
Wednesday, 30 December 2009
Tuesday, 29 December 2009
Nexus One Launch jan 5
http://www.guardian.co.uk/technology/2009/dec/29/google-nexus-one
Nexus one by google, a game changer?
Monday, 23 November 2009
ssh key error
The invocation resulted in an error: com.sshtools.j2ssh.transport.kex.KeyExchangeException: The host key is invalid or was not accepted!.
Monday, 16 November 2009
log4j logging in weblogic 10g
WL_HOME
/server/lib/wllog4j.jar into domain/lib
Monday, 31 August 2009
Enable mack book pro to sync with Google contact
I didnt have IPhone so i I found following tutorial helpful:
http://www.zaphu.com/2008/05/29/how-to-enable-mac-address-book-syncing-with-googles-gmail-contacts-without-an-iphone-or-mac/
Also i dont have have ipod (yes its true)
so need to create a file in library/preferences with contents mentioned in the link
http://forums.macosxhints.com/showthread.php?t=90231
Sunday, 16 August 2009
Sync Google contacts calendar MAC and Nokia
I found following
Sync your Mac ICal
Nokia come with PC suite to back up the contacts on the phone, but i never liked the software and lets face it its a pain to back up manually, i rather spend my time doing something eles than backing up my mobile contacts.
so here is a solution keep your mobile and google contacts in sync
Sync your Nokia mobile
Sunday, 5 July 2009
Oracle service Bus on MAC
My mac machine had 1.5 installed when i went to update it to 1.6 i was surprised that all it asked was do want to install on Macintosh HD? Unlike windows no need to give a location and then changing environment variables, etc. Just go to utilities and Java preferences to set your default JDK, it handels multiple JDK most elegantly.
Once you are done with Java, download HP UX edition of oracle service bus and run it from terminal, as Mac is basically unix under the hood
Sunday, 28 June 2009
Mac book pro getting started
The default behavior in Windows stems from it's origins as a shell for running GUI apps. Since that time most Windows apps have been rooted in a main (root) window and closing that window closes the application.
This rooted application environment is actually a limitation of Windows rather than a feature. Other operating systems (some going back to the 80's) avoided this limitation, but it has followed Windows from it's earliest incarnations
Saturday, 27 June 2009
Going over board with chilies

Many times you hear people take on toll they are familiar with too far. We have many examples in It world, classic one is with XML, but today I was surprise by Indian Defense department using chilies in hand grenades. This is no funny matter BBC has it on their website.
This is supposed to be used for crowd control, but I sound more like crowd torture.
Sunday, 14 June 2009
Iphone3GS Andriod
Saturday, 23 May 2009
Weblogic UDDI and UDDI Explorer
UDDi registery is one such case. Weblogic server as well provides UDDI 2.0 registery and its started when weblogic is started.
Over the next few days i will be exploring this further and provides steps to utilize weblogic UDDI
Tuesday, 19 May 2009
Wolffam Alpha new serach engine
Today Wolffam Alpha was launched. It is in a way a game changer, mainstream search engines have been concentrating to provide best possible page based on query and its upto user to digest that.
Wolffam Alpha on the other hand tries to analyze the query and give answer rather than search result.
give it a try :)
Saturday, 2 May 2009
Google Andriod HTC Magic
Overall this phone had power to WOW users and appeal users in masses. IPhone has been iconic hit in US and Europe but has not made much inroads in India. The major adoption obstacle for IPhone in India is its entry price.
HTC magic phone currently being offered by vodaphone has potential to offer serious competition to IPhone as its Slim, very easy to use interface, much better than anything by Noika or samsung.
HTC Magic Review
you might be wondering am i try to write a phone review. nope lots of web sites do this fairly well. i being a developer i am curious about its architecture

1) user base is going to increase dramatically as new android based phone appear in market from various vendors.
2) Development on Windows platform compared to Mac Os. one of the reasons i haven't played with iPhone dev
3)Eclipse IDE is used for android development. virtually all JAVA, c++ developers
Friday, 1 May 2009
UDDI lookup based dynamic routing Oracle ESB
There is a scenario when a service request comes into the ESB (Enterprise Service Bus) and we need to look at the payload and determine which endpoint to route this service.
There are two ways
1) Look up in DB or XML file to dynamic route to a business service
2) End point lookup in UDDI and route message
End point lookup in UDDI and route message
Step 1
Create WSDL, that contains information based on which we can look up endpoints example version, brand country etc- not going into details :)
Step 2
Create proxy service for WSDL in step 1
Create Business service, based on end service implementation, its wsdl might be similar to step 1 sans added info to help us do routing
Create proxy service for UDDI Inquiry service.
Step 3
Retrieve routing information from message using XPath
Service calls out to get_serviceDetails or if one needs to find business first one can do it. Retrieve access point from response message via XPath
Step 4
Route to business service
Edit routing option for outgoing message, change url to access point retrieved in step 3 and voila
Tuesday, 28 April 2009
UDDI Oracle ESB
There are scenarios that one may need to Inquire UDDI repository. There are several options to our disposal to do in Oracle ESB, publishing endpoint to uddi is available out of the box.
To inquire one can use UDDI API, Java API for XML Registries (JAXR), or UDDI v3 web services. Over next few days i will be exploring these options. Uddi based lookup and routing details
Wednesday, 15 April 2009
Scheduling Oracle BPM and SSIS
Scheduling computational tasks is a very fundamental functionality, which is provided by most OS. Recently I was looking into scheduling tasks in SOA environment. There are several tools at ones disposal to schedule tasks they could be placed in one or more of following buckets
• Scheduling library, example Quartz
• Software Package, example job Scheduler
• Service Orchestration/ Choreography tools, example Oracle BPM
• Databases, primarily for database tasks
Scheduling library
This approach works best if one has to there is minimal UI required to for scheduling. Example picking up schedule from a property file etc
Software Package
COTS or Open source packages provide UI, with user management, ability to schedule various types of tasks. They are good at getting up and running rather quickly but their UI may not alight with UI for in-house applications. Also on has to take into account the business process surrounding scheduling tasks such as manager approvals.
Service Orchestration
Depending on the enterprise mix, and tasks that need to be scheduled this may fit the needs. In SOA environment BPM could easily be used to schedule services and sketch various scenarios.
I am looking into integration of Oracle BPM with Microsoft SSIS package. The
primary use for SSIS is data warehousing, as the product features a
fast and flexible tool for data extraction, transformation, and loading
(ETL).
In terms of integration, i plank to kick start, SSIS package from
Oracle BPM and have mechanism, so that SSIS package can provide
feedback as to when its completed successfully or failed. Also i want
to take action in BPM in case there is no feedback from SSIS after set
interval example 2 hours.
First start with BPM process
1)Initialization - Automatic activity
2)Place timer - to insure process proceeds at set schedule
3)Launch SSIS - Automatic activity.
4)Notification wait with due transition- so that process waits for sucess/faliure notification, if that dues not come it will preform (due) transition after set interval to next state
Tuesday, 7 April 2009
Add username password jax-ws
so all you gotta do is generale JAX-ws client (i use myeclipse for that)
Call the client from where ever you want by:
PapiWebService_Service papiService= new PapiWebService_Service();
PapiWebService papiPort=papiService.getPapiWebServicePort();
addUsernameTokenProfile(papiPort);
-------------------------------------------------------------------------------------------
private static void addUsernameTokenProfile(PapiWebService papiWebServicePort)
throws SOAPException {
try {
SOAPFactory soapFactory = SOAPFactory.newInstance();
QName securityQName = new QName(SECURITY_NAMESPACE, "Security");
SOAPElement security = soapFactory.createElement(securityQName);
QName tokenQName = new QName(SECURITY_NAMESPACE, "UsernameToken");
SOAPElement token = soapFactory.createElement(tokenQName);
QName userQName = new QName(SECURITY_NAMESPACE, "Username");
SOAPElement username = soapFactory.createElement(userQName);
username.addTextNode("3Support");//your username
QName passwordQName = new QName(SECURITY_NAMESPACE, "Password");
SOAPElement password = soapFactory.createElement(passwordQName);
password.addTextNode("3Support");//your password
token.addChildElement(username);
token.addChildElement(password);
security.addChildElement(token);
Header header = Headers.create(security);
((WSBindingProvider) papiWebServicePort).setOutboundHeaders(header);
} catch (SOAPException e) {
System.out.println("Could not configure Username Token Profile authentication");
e.printStackTrace();
}
}
---------------------------------
also i search and i found some fourms suggesting WSBindingProvider, but that didnt work for me
When i didnt set the username i was getting following error:
WSP0075: Policy assertion "{http://www.bea.com/wls90/security/policy}Identity" was evaluated as "UNKNOWN"
Tuesday, 24 March 2009
Improve Eclipse speed
http://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F
Jahia 6 improvements and drawbacks
Positive
- UI Improved quite a bit
- Portal engine JSR 168/268 compliant
- Fine grain user right
- JRule in order to automate file actions based on events sent by the DMS (post processing)
- built on top of Jackrabbit instead of Apache Slide(in old version)
- CIFS (shared drive)
- supports 6 languages
- No Web service integration
- Import/ export same(monolithic)
Monday, 23 March 2009
Agile Methodology principals
2) Working software over comprehensive documentation
3) Customer collaboration over contract negotiation
4) Responding to change over following a plan
Friday, 20 March 2009
Cloud computing and SOA
The most popular and successful player in cloud computing space has been Amazon . It provides storage, computing and other features. Meanwhile Microsoft has also jumped on the cloud bandwagon and is in process of releasing cloud computing platform/OS called Microsoft Azure. Since this is cloud platform it will be hosted by Microsoft with pay-as-you go payment plan. The developer hosting applications on Azure platform would be able to communicate using standard protocols HTTP, REST, SOAP, and XML.
Some have been quick to declare SOA is dead and Cloud computing is in. In fact if we examin cloud computing it is in fact an implementation of SOA. In cloud computing you are exposing Data services and custom business services running on rented infrastructure.
One must not confuse Cloud computing from Utility computing. The later is about providing on-demand infra structure where as cloud computing is about building applications on computing services hosted by cloud provider.
Cloud Computing in Plain English
Thursday, 19 March 2009
Liferay document management part2
- However it would require customization of document portlet to provide role based access and other features.
- Again if we require document conversion it could be done through customized portlet
- To provide document conversion in the background have a servlet that pools the directory (Really crapy solution)
- To do filling of documents based on meta data, have a corn job or windows schedule (error prone)
- Template application through Apache POI API
- There is a provision to use open office for document conversion, but i have not tried it out
Hmm my conclusion is why use liferay kick start java code, if i dont need liferay UI or its workflow?
Wednesday, 18 March 2009
Liferay as Document Management
In my previous post i highlighted strengths of Alfresco as document management tool. One might be tempted to use Liferay on its own as document management. This may serve well if your requirements are very basic, as saving to particular folder structure. for anything serious its recommended to use liferay with Alfresco.
Below are some key point
- Liferay Document management is pretty basic. It provides repository that you can add document to, remove document or upload a new version.
- There is a portlet to display documents (with a preset set of properties that you can only configure by changing the code). If you need more things out of doc. management you would better off with Alfresco.
- A common way to use Alfresco with Liferay is to manage the content in Alfresco and have workflows that publish the content to some type of file store from which Liferay can pull the content. The main reason for doing this is to be able to use Alfresco's CIFS and WebDAV interfaces, which are really useful and not matched by Liferay's broken webdav implementation. In the future, the processing rules you can attach to a folder in Alfresco will also be useful, and are not present in Liferay
Document management Alfresco Jahia and SharePoint
Below is a feature comparison between Alfresco, Jahia, and Sharepoint
Alfresco | Jahia | SharePoint |
| WEBDAV Support Collaboration happens via WEBDAV only
| WebDAV, virtual file system |
| Apache Lucene based Text Search Engine
| Open Search |
| Limited meta data extraction from files
| Automatic Meta data extraction |
| WebDAV Support
| WebDav, Web services, File system |
| Format conversion support | Format conversion service available also ability to use custom doc conversion service |
| Portal support (JSR 168),JSR 170 | WSRP port-lets consumer out of the box. Provider using customization/third party tools |
| n/a | n/a |
| n/a | Yes |
| n/a | yes |
| NO | User presence |
| ? | Email integration |
Tuesday, 10 March 2009
synchronize bookmarks
A great add-on for firefox that keeps your bookmarks synchronized across computers. check out
http://www.foxmarks.com/
schema xs int versus integer versus positive integer
Friday, 6 March 2009
World clock add on for firefox
FoxClocks :: Firefox Add-ons
Wednesday, 4 March 2009
online UML Sequence diagram utility
check it out:
Web-Based UML Sequence Diagram / MSC Generator
Also see umlet a open source UML tool. This is also available as eclipse plugin
http://www.umlet.com/
A standalone open source UMl tool
http://sourceforge.net/projects/staruml/
Tuesday, 3 March 2009
Oracle ESB IMAP error
com.sun.mail.iap.ProtocolException: No login methods supported!
It happens to be that exchange server was running on SSL on port 993. when i change the port to 993 it just times out and gives following error
com.bea.wli.sb.transports.TransportException: Connection reset
at com.bea.wli.sb.transports.email.EmailWorkPartitioningAgent.execute
i will update this post when i have a solution
Oracle ESB Send email via smtp
- Define SMTP server
- Create a business service with message type text. In transport select email and select smtp server defined in step 1
Thats it and now you should be able to send mail from bus.

Also check out chris blog for sending email with attachment
Monday, 23 February 2009
Enable Disable Registry editing
'Enable/Disable Registry Editing tools
'© Doug Knox - rev 12/06/99
Option Explicit
'Declare variables
Dim WSHShell, n, MyBox, p, t, mustboot, errnum, vers
Dim enab, disab, jobfunc, itemtype
Set WSHShell = WScript.CreateObject("WScript.Shell")
p = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\"
p = p & "DisableRegistryTools"
itemtype = "REG_DWORD"
mustboot = "Log off and back on, or restart your pc to" & vbCR & "effect the changes"
enab = "ENABLED"
disab = "DISABLED"
jobfunc = "Registry Editing Tools are now "
'This section tries to read the registry key value. If not present an
'error is generated. Normal error return should be 0 if value is
'present
t = "Confirmation"
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (p)
On Error Goto 0
errnum = Err.Number
if errnum <> 0 then
'Create the registry key value for DisableRegistryTools with value 0
WSHShell.RegWrite p, 0, itemtype
End If
'If the key is present, or was created, it is toggled
'Confirmations can be disabled by commenting out
'the two MyBox lines below
If n = 0 Then
n = 1
WSHShell.RegWrite p, n, itemtype
Mybox = MsgBox(jobfunc & disab & vbCR & mustboot, 4096, t)
ElseIf n = 1 then
n = 0
WSHShell.RegWrite p, n, itemtype
Mybox = MsgBox(jobfunc & enab & vbCR & mustboot, 4096, t)
End If
Distributed Transaction install XA Driver SQL Server
Install SQL Server 2005 and all required patches.
2. Select the authentication mode for this installation:
o Windows Authentication Mode
o Mixed Mode (Windows Authentication and SQL Server Authentication)
Either authentication mode allows the user who is specified as the database administrator in the wkplc_comp.properties file to log in to the SQL server. Mixed Mode authentication allows either a Windows user or a SQL server user, or both, to log in to the SQL Server.
3. In the SQL Server 2005 Setup panel, Components to Install, select the following components, which are required services for WebSphere Portal:
o SQL Server Database Services
o Integration Services
The option Integration Services, creates the directory DTS/Binn, where you will need to copy files when you install Microsoft SQL Server 2005 JDBC drivers and enable XA connections.
4. Complete the installation using SQL Server documentation as a guide.
5. Enable TCP/IP connectivity in the SQL Server Configuration Manager.
6. Install the JDBC driver using one of these methods:
o Installing DataDirect Connect for JDBC drivers on UNIX
o Installing DataDirect Connect for JDBC drivers on Windows
o Installing Microsoft SQL Server 2005 JDBC drivers and enabling XA connections
7. Network the connections for MSDTC in the Windows Component Services as described in Microsoft Help and Support.
8. Start SQL Server 2005.
Installing DataDirect Connect for JDBC drivers on UNIX
1. Purchase and download DataDirect Connect for JDBC and save file 360connectjdbc.jar in a temporary work directory.
2. To create the required files, run the following command from the directory that contains 360connectjdbc.jar:jar -xvf 360connectjdbc.jar:
3. Run ./Installer.sh in the same directory.
4. When installation is complete, change directory to /installation/lib, where installation is the directory in which you installed the DataDirect Connect for JDBC drivers.
5. Run the following command to change the permissions on the JAR files in the installation/lib directory:chmod 777 *.jar
6. Change the ownership and group of these files by running the following commands in the installation/lib directory:
7. chgrp system_grp *.jar
chown root *.jar
Where system_grp is the system group as labeled by your operating system.
Installing DataDirect Connect for JDBC drivers on Windows
1. Purchase and download DataDirect Connect for JDBC and save file 360connectjdbc.jar in a temporary work directory.
2. To create the required files, run the following command from the directory that contains 360connectjdbc.jar:jar -xvf 360connectjdbc.jar:
3. Run Installer.bat in the same directory.
Installing Microsoft SQL Server 2005 JDBC drivers and enabling XA connections
1. Download and install the Microsoft SQL Server 2005 JDBC driver.
2. Copy file sqljdbc_xa.dll from the xa subdirectory to the C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqljdbc_xa.dll directory of the SQL Server 2005 installation.
3. Start the database server.
4. Ensure that the Distributed Transaction Coordinator has been started. The status can be verified in the list of services in the Computer Management console.
5. Start the Microsoft SQL Server Management Studio and connect to the local database engine as the system administrator, sa.
6. Select File > Open > File and select xa_install.sql from the subdirectory of the downloaded and extracted JDBC driver.
7. Execute the script by selecting Query > Execute.
Note: Any warnings that appear in the messages section of the application window that say that stored procedures cannot be found can be safely ignored.
8. For Microsoft SQL Server 2005 JDBC drivers: If you are running Windows XP SP2, Windows XP 64-Bit Edition, or Windows Server 2003, refer to the Registry Entries Are Required for XA Transaction Support document for information on a new security constraint and how to set SQL Server 2005 on Windows XP SP2, Windows XP 64-Bit Edition, or Windows Server 2003.
Create a additional value in the Windows registry for WebSphere Portal by following these steps:
a. Open theWindows Registry Editor (regedit) and navigate to the element HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\XADLL
b. From the menu bar, select Edit > New > String Value to create a new parameter named sqljdbc_xa.dll in that element.
c. Change the value of the new parameter to the location of the sqljdbc_xa.dll file copied in Step 2 above, for example: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqljdbc_xa.dll
Enable XA Transactions in Windows Component Services
1. From your Windows desktop, follow these steps:
2. Click Start > Settings > Administrative Tools > Component Services.
3. Expand the tree view to locate the computer where you want to turn on support for XA transactions (for example, My Computer).
4. Display the context menu for the computer name and click Properties.
5. Click Options and tune the Transaction Timeout that suits your environment. (The recommended minimum is 180 seconds).
6. Click MSDTC and click Security Configuration.
7. Under Security Settings, select XA Transactions to enable this support.
8. Click OK to save your changes.
Note: The installation documentation for JDBC XA connectivity refers to two known problems, see the Microsoft support site for more information:
· KB899756: Windows 2003 only. MSDTC does not detect process termination, and MSDTC cannot set time-out values for XA transactions in Windows Server 2003.
Saturday, 21 February 2009
Save Object to Database Oracle BPM
eg.
1. You have database db and table mytable
2. Catalogue table ad say you name it MyTable
3. Right-click and select "Create Heir" and you name it MyTableObj
4. To use this:
Create an instance of this BMPObject type
myTable as MyTableObj = MyTableObj()
myTable.<some field> = .... to set some field value or
someVar = myTable.<some field> to read some field value
5. To save record in DB use: myTable.store()
WS-Addressing Tutorial
A good Overview by SUN
http://www.javapassion.com/webservices/wsaddressing.pdf
Friday, 20 February 2009
BPM Definations and Overview
So what definitions do you need to build an architecture?
The rules for mapping your organization into the BPM space
Criteria must be in place to translate the real organization into BPM, which includes defining the following things:
- Patterns for organizational units
- Patterns for organizational roles
- Patterns for groups
- Assignment of participants to OUs
- Assignment of participants in groups
- Assignment of organizational roles to participants and groups
The infrastructure components
The distribution of applications and services and the way they communicate is a critical part of the architecture. Actually, this is the technical architecture of the solution. Here is a basic list of applications you need to include and the type of configuration needed.
- BPM Enterprise Servers
- Type (Standalone, WebLogic)
- Configuration (Clustering, Location)
- Database configuration
- HiPer Workspace for BPM
- Configuration (Clustering, Location)
- Other modules
- Business process dependencies
- BPM Enterprise Servers
The process deployment topology
Business processes have to be inserted in the infrastructure and the organization: This is the deployment topology. The topology has a direct impact on the infrastructure and on the way people use the processes. The definitions are simple, but they need to be carefully defined based on the organization and the infrastructure.
- The mapping to the organization
- The OUs that the process will be deployed
- The mapping of process roles to organization roles
- The mapping to the infrastructure
- The enterprise server that will execute the processes
- The external resources required by the processes
- The mapping to the organization
Thursday, 19 February 2009
WS-Policy Tutorial
Name Spaces and prefix
* xmlns:wsp="http://www.w3.org/2006/07/ws-policy" – This represents the actual namespace used for elements from the WS-Policy language.
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" –
We will show some policy examples related to the WS-Addressing
language, which is why this namespace comes up here. How the referenced
WS-Addressing features actually work is covered in Chapter 18 and this particular policy assertion is further revisited at the end of Chapter 19.
* xmlns:wsrmp="http://docs.oasis-open.org/ws-rx/wsrmp/200702" –
This namespace corresponds to the WS-ReliableMessaging policy
assertion. Although WS-ReliableMessaging is not a technology covered in
this book, there are a few references to one of its policy assertions
in the examples.
* xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" –
There is a special type of schema that is referred to as a "utility
schema" in which generic and commonly used attributes are established.
One such attribute is wsu:Id, a
simple ID used to associate an identifier with an element. This and
other chapters make occasional reference to this attribute.
There are two ways of attaching policies to WSDL documents:
- The policy expression code can be embedded within the WSDL definition and then utilized via native references that can be attached directly to WSDL elements as child extensibility elements.
- Policy expressions can reside externally in a separate WS-Policy definition document, which is then referenced within the WSDL document via an external attachment mechanism.
Policy Attachment Points and Policy Subjects
Whatever part of a WSDL definition we attach a policy to is referred to as a policy attachment point. For example, we could have a policy attached to an operation element and then another to one of that operation's message elements.
Within WSDL 1.1, the following elements represent common policy attachment points:
- service element
- port element
- binding element
- portType element
- operation element
- message element
The policy attachment specification organizes these policy attachment points into the following four distinct policy subjects:
- Service (maps to service element in wsdl)
- Endpoint (maps to port, binding, portType)
- Operation (maps to Operation element in wsdl)
- Message
Note: This is work in progress more updates to follow
source:Thomas Erl- Web service Contract Design and versioning for SOA
Oracle Day 2009- IT Architects
Agenda
Tuesday, 17 February 2009
free Xpath XSLT plugin for notepad++
- Download the notepad++ binary installer
- Download the cml plugin. The zip file will contain a dll file that you need to place in plugin folder to install
restart notepad++ and in plugins menu there will be a xml tools sub-menu
cheers :)
Web Service Versioning
Service Version - This article is work in progress
There is no one versioning approach that is right for everyone. Because versioning represents a governance-related phase in the overall lifecycle of a service, it is a practice that is subject to the conventions, preferences, and requirements that are distinct to any enterprise.
Three known strategies:
Strict – Any compatible or incompatible changes result in a new version of the service contract. This approach does not support backwards or forwards compatibility.
Flexible – Any incompatible change results in a new version of the service contract and the contract is designed to support backwards compatibility but not forwards compatibility.
Loose – Any incompatible change results in a new version of the service contract and the contract is designed to support backwards compatibility and forwards compatibility
Scenarios
This paper(see link below) groups service versioning options into two categories:
- Message Versioning—Focuses on versioning the schemas used to describe messages processed by the service.
- Contract Versioning—Focuses on versioning the WSDL and contract information used to describe the service.
Message versioning
Message versioning implies XML Schema related versioning. There are several common techniques for XML versioning and extensibility techniques available:
- Namespaces
- Extension Elements
- Custom version attributes
Namespaces and Extension Elements
There are several options for versioning or extending a schema using XML Namespaces:- Use a new XML Namespace for major version releases
- Keep XML Namespace values constant and add an XML Schema version attribute
- Keep XML Namespace values constant and add a special element for grouping custom extensions
Design Principle #1:
Use targetNamespace to communicate major version releases
Rationale:
Major version releases are typically breaking changes.
Ease of implementation and support.
Judicious use of <xsd:any>
Adding <xsd:any> enable you to enter anything in that. Its good in that you could add any extra tag when required, but drawback of this is that it would not be validated with XML schema, so it could be used in short term quick changes scenario.Design Principle #2:
Judicious use of unambiguous wildcards can help minimize service versioning.
Rationale:
Extensible schemas adapt to meet changing user or service needs.
The W3C Web Services Description Working Group is developing a set of
Extensible schemas minimize versioning due to schema enhancements.
Adjuncts for WSDL 2.0. The Adjuncts will provide a set of predefined
extensions to WSDL 2.0 and will appear in Part 2 of the specification.
WSDL 2.0's predefined extensions were designed for message exchange
patterns, operation styles, and bindings. The extensions define a SOAP
Header Block that could be used to extend schemas by adding the new
data structures within the WSDL........ more on this later on
Contract Versioning
Contract Versioning implies WSDL versioning.
- Adding a new operation—Adding a new
operation to a service does not break existing consumers since they
will be unaware of the new operation's existence. Newer consumers can
then take advantage of these new operations without breaking existing
consumers. - Adding new data structures and data types—New
data structures and data types can be added as long as the old ones are
preserved. New, optional structures and data types added to the end of
messages sent to services will not break existing consumers since they
will be unaware of the new data structures. Services can also expand
the range of possible data values or types they can accept without
impacting existing consumers (assuming a doc-literal encoding style is
utilized). - Adding a new interface for an existing operation—Once
again, existing consumers will be unaware of the new interface and will
be unaffected by it. Newer consumers will have a choice of interfaces
to utilize. - Remember the First Tenet—The
first tenet of Service Orientation tells us that boundaries are
explicit. A boundary represents the border between a service's public
interface and its internal, private implementation. Service internals
can be modified, evolved, or totally rewritten as long as the contract
for that service remains unchanged. When service implementation details
leak into the service boundary this freedom is lost and the contract
becomes much more fragile. - Type restriction in response messages—Response
messages cannot, for the most part, be modified without breaking
existing consumers. Services may restrict the range of possible types
sent as a response without breaking the contract, depending on how a
given consumer has been developed. Consumers will most likely still
expect a given range of response values without realizing that the
range of possible responses has just been reduced in scope. - Use <wsa:Action>—ASMX
uses the soapAction header to perform message dispatching by default.
This enables service operation names to change without impacting
consumers because the soapAction remains constant. soapAction is only
valid over HTTP because the WSDL specification restricts its usage to
HTTP. Luckily, WS-Addressing's <wsa:Action> element can be used to communicate intent across any protocol (even HTTP). - Use a Service Broker—A
service broker serves as a front-end to the targeted service,
redirecting the request to the appropriate version of the service,
based upon the content of the request itself. Service brokers are
available as commercial products or can be specialized services
designed to serve as façades for existing systems.
Design Principle #4:
When adding new data structures, make them optional and add them to the end of service request messages.
Rationale:
Existing consumers remain unaware of the new data structures.
Design Principle #5:
Changing service response messages (other than type
restrictions) are breaking changes and will require a new version of
the service.
Rationale:
Existing consumers cannot serialize unexpected data structures.
Conclusion
Six design principles were identified to summarize best practices
for service versioning. This is not a static list and will likely grow
as the Web services specifications continue to evolve:
- Use targetNamespace to communicate major version releases.
- Judicious use of unambiguous wildcards can minimize service versioning.
- Extensions must not use the targetNamespace value.
- When adding new data structures, make them optional and add them to the end of service request messages.
- Changing
service response messages (other than type restrictions) are breaking
changes that will require a new version of the service. - Adopt a one-to-one relationship between interface versions and UDDI tModels.
http://msdn.microsoft.com/en-us/library/ms954726.aspx
Monday, 16 February 2009
Facebook test
I am just using atom feed to start off. After playing with several applications on facebook, including one from typepad, the most stable one is blog/rss import on facebook wall. I am also experimenting with "Simplaris blogcast" this adds Box on profile displaying bog contents, its automatic refresh feature has been reported to be bit flaky in past.
So conclusion stick with blog/Rss import on facebook wall :)
if you got any suggestions let me know.
Oracle Aqualogic ESB Dynamic Routing Step By Step
This was achieved using dynamic routing as described in Oracle message flow guide. In the guide two methods are specified for dynamic routing, one static xml and another one is storing routing table in database and fetching routing endpoint using XQuery.
Below is a screen shot of proxy routing.
- First routing destination is determined by inspecting the payload (using XPath).
- Using XQuery respective business service is determined from the DB
- Routing Data is deleted from payload as business service does not need this info
- Dynamic service call
Over All Flow
Step 1 and 2
- First routing destination is determined by inspecting the payload (using XPath).
- Using XQuery respective business service is determined from the DB

ER Diagram of the routing database
Step 3
- Routing Data is deleted from payload as business service does not need this info

Last Step

Wednesday, 11 February 2009
Oracle ESb Dynamic routing error
Response Document | |
| |||||||||||||||||||||||||||||||||||||||
|
If i look under the Invocation tree, Under the Message context
Message Context Changes
| added $outbound |
<con:endpoint | name="BusinessService$dynaRouting$BS$bondSearchBS" xmlns:con="http://www.bea.com/wli/sb/context"> |
<con:service/> |
<con:transport> |
<con:uri> |
http://172.16.113.231:8080/WebApp/SearchService |
con:uri> |
<con:mode>request-responsecon:mode> |
<con:qualityOfService>best-effortcon:qualityOfService> |
<con:request | xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
<tran:headers | xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports"> |
<http:Content-Type>text/xml; charset=utf-8http:Content-Type> |
tran:headers> |
<tran:encoding | xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8tran:encoding> |
con:request> |
<con:response | xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
<tran:headers | xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports"> |
<tran:user-header | name="X-Powered-By" value="Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5"/> |
<http:Connection>closehttp:Connection> |
<http:Content-Type>text/xml;charset=utf-8http:Content-Type> |
<http:Date>Wed, 11 Feb 2009 15:11:47 GMThttp:Date> |
<http:Server>Apache-Coyote/1.1http:Server> |
<http:Transfer-Encoding>chunkedhttp:Transfer-Encoding> |
tran:headers> |
<tran:response-code | xmlns:tran="http://www.bea.com/wli/sb/transports">2tran:response-code> |
<tran:response-message | xmlns:tran="http://www.bea.com/wli/sb/transports">Internal Server Errortran:response-message> |
<tran:encoding | xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8tran:encoding> |
<http:http-response-code>500http:http-response-code> |
con:response> |
con:transport> |
<con:security> |
<con:doOutboundWss>falsecon:doOutboundWss> |
con:security> |
con:endpoint> |
| changed $body |
<soapenv:Body | xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
<soapenv:Fault> |
<faultcode | xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPActionfaultcode> |
<faultstring>no SOAPAction header!faultstring> |
soapenv:Fault> |
soapenv:Body> |
This error was resolved by adding Transport level SoapAction header when doing dynamic routing. SoapAction was set to empty string, this resolved the error as service then looks for operation details in soap body