Sunday Apr 25, 2010

Exercising a Resilient Java CAPS 6 HL7 v2 Repository Solution

From time to time prospective clients ask for a proof that Java CAPS will not loose HL7 messages in the event of machine or network failure.

In this Note a heterogeneous, non-clustered collection of hosts will be used to implement and exercise Java CAPS 6/Repository HL7 v2 based solutions. The environment consists of two independent “machines”, which are not a part of an Operating System Cluster. Each “machine” hosts a GlassFish Application Server, which is the Java CAPS 6 runtime. Application Servers are independent of one another and are not clustered. This is to demonstrate that HL7 processing components, and solutions based on these components and other standard components in the Java CAPS infrastructure, can be designed and implemented in such a way that message loss in the event of typical failure and disruption scenarios is avoided.

This note discusses an exercise involving an example healthcare environment processing HL7 v2 messages. Discussion includes customization of a generic Java CAPS 6.2 VMware Virtual Appliance for a specific HL7 exercise and deploying ready-made Java CAPS 6/Repository-based solutions. The exercise for HL7 eWay and HL7 Inbound and Outbound projects, processing HL7 v2.3.1 messages, will be conducted and discussed.

The reader will be convinced that a resilient Java CAPS solution can be configured and that it will process messages in the face of typical failure and disruption scenarios without message loss or duplication.

Note that this article is not introductory in nature. It assumes that the reader has a fairly good working knowledge of the Java CAPS 5 or Java CAPS 6/Repository product and a good working knowledge of related areas, such as HL7 messaging, virtualisation and suchlike. These matters are not explained in this article.

The original article is available as a blog entry "Exercising a Resilient Java CAPS 6 HL7 v2 Repository Solution" at http://blogs.czapski.id.au/2010/04/exercising-a-resilient-java-caps-6-hl7-v2-repository-solution

Saturday Apr 24, 2010

Installing Java CAPS 6.2 Runtime on the Basic JeOS Appliance for HL7 Resilience Testing

From time to time prospective clients ask for a proof that Java CAPS will not loose HL7 messages in the event of machine or network failure.

This note walks through the process of installing a Java CAPS 6.2 runtime on the Base OpenSolaris-based VMware Virtual Appliance, discussed in the Blog Entry “GlassFish ESB v2.x Field Notes - Preparing Basic JeOS Appliance for GlassFish ESB LB and HA Testing” at http://blogs.czapski.id.au/?p=15.

At the end of the Note we will have a Java CAPS 6.2 VMware Appliance with Java CAPS 6.2 Runtime infrastructure, ready to use for reliability testing, or any other purpose for which a Java CAPS 6.2 runtime appliance might be appropriate.

The blog article is at my personal blog site - "Installing Java CAPS 6.2 Runtime on the Basic JeOS Appliance for HL7 Resilience Testing".

Wednesday Jan 13, 2010

GlassFish ESB v2.2 - Processing Explicit HL7 v2 Accept Acknowledgements

The HL7 v2 standard mandates the use of acknowledgments to ensure message delivery, critical in Healthcare. There are the “Original Mode” acknowledgements and “Enhanced Mode” acknowledgements. Within the enhanced mode acknowledgements there are “Accept Acknowledgements” and “Application Acknowledgements”.

This Note walks through development of two BPEL Module-based solutions that cooperate in generating and processing Enhanced Accept Acknowledgements using HL7 v2.3.1 messages. This discussion should apply to any v2.x, greater then v2.2, where the Enhanced Mode acknowledgements were introduced. In addition, the solutions are used to illustrate receiving HL7 BC ACK generation, when receiving an invalid HL7 message.

The blog article and the related material are available at http://blogs.czapski.id.au/2010/01/glassfish-esb-v2-2-processing-explicit-hl7-v2-accept-acknowledgements

Saturday May 16, 2009

Java CAPS Book - a Kindle edition

I am tickled pink. I just found out, in a very round-about way, that the Java CAPS Book is now available in a Kindle Edition. Check it out: http://www.amazon.com/Java-CAPS-Basics-Implementing-ebook/dp/B0015DYM3M

Friday May 08, 2009

Right tools for the job? - Interesting discoveries when processing large volume of data

Just now I had an occasion to work with an integration solution intended to process lots of records. By lots I mean over 1 million smallish records. My customary platform to experiment on is Windows XP. Lots of reasons for that, most of them historical – I have tools I know and like and so on. While trying to work with such a volume of data I noticed a number of “interesting” things, which I thought I should share. These things are related to both the platforms (Windows vs. Linux), the tools and the architectural decisions.

I needed lots off data to test the solution I was contemplating, which involved XML processing, to see how constructing and parsing XML affects solution performance. To make it easier to compare timing differences I though I should use lots of records.

The discoveries are discussed in Right tools for the job.pdf.

Monday May 04, 2009

Sending Secure Electronic Mail (S/MIME) in Java (CAPS) the Easy Way

Every now and then one needs to secure communications between parties. Some would say it is necessary to do that all the time and perhaps it is. The issues are the complexity and expense. The complexity comes from having to configure a bunch of tools to support things like encryption and digital signatures for more then a single party. The expense comes from typically having to purchase cryptographic instruments from well known Certification Authorities, and keep on purchasing them all over again every 1 or 2 years. This discussion introduces a class library that offers a set of simple methods for constructing and sending secure electronic mail using the Secure Multipurpose Internet Mail Extensions (S/MIME), the Bounce Castle Cryptographic Libraries and the Java programming language. The intent is to allow a Java CAPS developer, or a Java developer, to add Secure Electronic Mail functionality quickly and easily, and without having to make too much of a time investment learning about PKI-based security and related matters. This addresses the complexity issue. The expense issue is addressed in my Blog Entry, “Producing Free, Private X.509 Certificates for use with PKI-based Solutions”, at http://blogs.sun.com/javacapsfieldtech/entry/producing_free_private_x_509. That blog discusses how to roll out a private Certification Authority and obtain X.509 Certificates., and other cryptographic objects, for free.

This document discusses the use of cryptographic software and manipulation of cryptographic objects. Using or discussing cryptography software is illegal in some parts of the world. It is you responsibility to ensure that you comply with any import/export and use laws that apply to you.

SendingSecureEMailUsingJavaCAPS.pdf


Saturday Feb 28, 2009

Java CAPS Quick Note 001 - Split file into multiple files

This Quick Note discusses a solution to the use case provided by Richard Kuiter.

An input file contains the following records:

H100000000000014099120ASN00507  
L1140991200000008261850826185738
L1140991200000008261850826185738
L1140991200000008261850826185738
L1140991200000008261850826185738
L1140991200000008261850826185738
L1140991200000008261850826185738
H100000000000014099126ASN00531  
L1140991260000008262690826269662
L1140991260000008262690826269662
L1140991260000008262690826269662
L1140991260000008262690826269662
L1140991260000008262690826269662

It is required that each block of records starting with the H1 (header) record and containing all the following L1 (line) records, be written to a different file.

The solution involves the use of:
1.    Batch Inbound eWay to locate the input file and provide its name and location to a Java Collaboration Definition
2.    Batch Local File eWay to provide an Input Stream to the Batch Record eWay
3.    Batch Record eWay to break up the input stream into records delimited by carriage return+new line
4.    Batch Local File eWay to write each block of records to a file with a distinct name

Brief steps to implement this solution are given in the full Quick Note at http://mediacast.sun.com/users/Michael.Czapski-Sun/media/QuickNote_001/details. The collaboration code will work in Java CAPS 5 and 6 Repository.

Monday Feb 23, 2009

Java CAPS 6 - Providing Policy-driven Web Services Security support using a XML Security Gateway

Securing web services, to be invoked over the Internet, is both essential and difficult. Using appropriate tools and technologies makes it easier to accomplish the task. Developer-dependent solution, where security is embedded directly into consumers and providers, is inflexible and labour-intensive. Gateway-based solutions are more flexible, more dynamic and easier to manage. In this note Java CAPS 6-based web service consumer and provider pair are developed. The solutions are exercised first without, then with the web services security gateway. This enables demonstration of how web services can be secured, how policies can be developed and propagated and how WS-Security-mandated XML markup can be dealt with outside the development shop. The Layer 7 SecureSpan XML Gateway, and its oft forgotten companion, the SecureSpan VPN Client, are used to explore the topic. The reader should be able to acquire enough knowledge to obtain and deploy the SecureSpan XML Gateway, and to use its basic functionality to implement gateway-mediated secure web services solutions.

The full text of this Note is available from: http://mediacast.sun.com/users/Michael.Czapski-Sun/media/WS-Security_for_Java_CAPS_the_Gateway_Way_1.0.pdf/details

Saturday Feb 14, 2009

Java CAPS 6 Update 1 - Invoking MTOM Web Service using Java CAPS Classic Web Service Client

If we overlook the fact that using web services to transfer large payloads is a very stupid idea, we will be faced with the need to implement the optimisation mechanisms to make transfer of large payloads using web services a little less inefficient from the stand point of the size of the over-the-wire data to be transferred. The standardised, supported mechanism for this is the Message Transmission Optimisation Method (MTOM), http://en.wikipedia.org/wiki/MTOM. Java CAPS Repository-based Web Services don’t offer a convenient mechanism to provide MTOM support.

This note walks through the implementation of a Java CAPS Repository-based, eInsight-based web service consumer and the implementation of the EJB-based Web Service Wrapper Consumer for this service, which provides support for MTOM. The Note discusses how to exercise the wrapper service using the NetBeans web services testing facilities, how to trigger the Java CAPS Repository-based web service invoker and how to observe on-the-wire message exchanges. The invoker implementations discussed in this Note will invoke the web service providers discussed in an earlier Note, “Java CAPS - Exposing MTOM-capable Java CAPS Classic Web Service”, http://blogs.sun.com/javacapsfieldtech/entry/java_caps_exposing_mtom_capable.

The note is available at http://mediacast.sun.com/users/Michael.Czapski-Sun/media/Invoking_MTOM-WS_using_Java_CAPS_Classic.pdf/details

Friday Feb 13, 2009

Java CAPS - Exposing MTOM-capable Java CAPS Classic Web Service

If we overlook the fact that using web services to transfer large payloads is a very stupid idea, we will be faced with the need to implement the optimisation mechanisms to make transfer of large payloads using web services a little less inefficient from the stand point of the size of the over-the-wire data to be transferred.

The standardised, supported mechanism for this is the Message Transmission Optimisation Method (MTOM), http://en.wikipedia.org/wiki/MTOM. Java CAPS Repository-based Web Services don’t offer a convenient mechanism to provide MTOM support.

This note walks through the implementation of a Java CAPS Repository-based, eInsight-based web service and the implementation of the EJB-based Web Service Wrapper for this service, which provides support for MTOM. The Note discusses how to exercise the services using the NetBeans web services testing facilities and how to observe on-the-wire message exchanges.


The note is available at http://mediacast.sun.com/users/Michael.Czapski-Sun/media/Exposing_MTOM-capable_Java_CAPS_Classic_Web_Service.pdf/details

Saturday Jan 24, 2009

Tom's CEC 2008 Java CAPS and GlassFishESB Tutorials are available

I have been making references  to Tom Barrett's tutorials in my blog entries, screencasts, and writeups, but without providing the links to them. Now, courtesy of Tom, I am able to do so. See below for the link and the description of Tom's tutorials.


++++
The three tutorial documents from CEC 2008 are posted at:
http://wikis.sun.com/display/OpenESBTutor/Tom+Barrett%27s+Open+ESB+and+Mural+Tutorials


See the following section:

Sun Customer Engineering Conference (CEC) - Three Tutorials

The following three tutorials were developed for customer-facing
systems engineers at Sun and at Sun partners. They were delivered at
CEC 2008 held in Las Vegas in November, 2008. The goal of these three
tutorials is to document the steps necessary to create, from scratch,
three demonstrations that were delivered in Java CAPS/GlassFish
ESB/Open ESB-related sessions at CEC 2008.


1. Exploring GlassFish ESB (V 1.1) - 90 pages - November 6, 2008

This tutorial is based upon an Internet store front scenario where
customers purchase items and purchase orders (POs) are generated and
forwarded to the "backend" Purchaser. The Purchaser, in turn,
collaborates with the Supplier which coordinates shipping and generates
a delivery notices (DNs). DNs are returned to the Purchaser and the
Purchaser matches up DNs with POs before forwarding instructions to
Finance for further processing.


Specific technical topics include:


Custom encoder to marshal XML to delimited records and unmarshal
delimited records to XML

BPEL: looping, predicates and correlation

Service Engines: BPEL

Binding Components: HTTP, File, JMS

2. Exploring Sun ESB Suite: Open ESB Technology (V 1.1) - 51 pages -
November 18, 2008

This tutorial explores a health care scenario that analyzes HL7 ADT
(Admission Discharge Transfer) records to identity patient length of
stays that have exceeded an average threshold set by management.  The
Intelligent Event Processor (IEP) computes a moving average and
identifies ADT records that note an exceptional patient length of
stay.  IEP generates an alert for each excessive length of stay
detected.


Specific technical topics include:


Intelligent Event Processor (IEP) (Time-Based Window, Relation
Aggregator, Correlator / Filter)

BPEL orchestration

File BC for ADT record input

BPEL process invokes IEP via HTTP binding component

IEP uses File BC for output

Service Engines: BPEL, IEP

Binding Components: HTTP, File

3. Exploring Sun MDM Suite: Open ESB and Mural Technology (V 1.0) - 111
pages - November 6, 2008

This tutorial explores a health care scenario where multiple patient
master databases exist containing duplicate and inconsistent patient
information. A patient master index is defined and a patient
application is generated that stores its master index in MySQL,
provides a web-based interface to maintain index records, surfaces web
services that can be called by other applications to do programmatic
access to the index records and supports a JMS topic to broadcast
master index changes to other hospital applications.


Specific technical topics include:


Defining patient data model

Establishing MySQL tables

BPEL process feeding index via web service call

BPEL process "listening" on JMS topic for index updates

Using Master Index Data Manager web app

Service Engines: BPEL

Binding Components: File, JMS

Errata:  If you have trouble with this version of the tutorial, please
see these errata notes.  Thanks to all who have provided feedback. I'll
address these issues/comments in the next version of the tutorial.


--- Tom Barrett

Wednesday Nov 19, 2008

Using Hermes JMS with Java MQ in Java CAPS 6, OpenESB and GlassFishESB

It has been a while. I was busy. One of the things that kept me busy was putting together demonstrations for the CEC 2008 in Las Vegas, then delivering them. As an offshoot of that work I have a fair bit of material to share, which will take some time to put together into a form that can be posted in the blog.This piece is the first one.


Whereas Java CAPS 6 supports interaction with the Java MQ infrastructure through the Enterprise Manager, neither OpenESB nor GlassFishESB include the 'Enterprise' class functionality found in the Java CAPS 'classic', GUI for interaction with the JMS being one of example.


Here is a step-by-step on how to configure Hermes JMS (http://www.hermesjms.com/) for use with Java MQ, distributed as part of the OpenESB, GlassFishESB and Java CAPS 6. <- This link points to the original post.


The updated post, inclduing material frm the comments below, is available at http://mediacast.sun.com/users/Michael.Czapski-Sun/media/HermesJMS_Configuration_for_JavaMQ/details and should be used instead.

Wednesday Aug 27, 2008

Java CAPS 6, Using MySQL with JDBC eWay (Repository) - Configuring MySQL Connectivity


In a number of blog entries I used Oracle 9i as the database against which solutions under
discussion were executed. This is dandy for people who have Oracle, which is a
payware piece and quite expensive. For these who don’t have Oracle the examples
would have been less useful. To remedy this situation, and take advantage of
availability of Sun MySQL Community Server as a Free, Open Source software, I
resolved to use My SQL in all blog notes, which require a database, which I
will be developing from now on. For these who care, MySQL is the third most
used RDBMS in the World. Some of the largest web sites in the World use it.See
my blog at http://blogs.sun.com/javacapsfieldtech/entry/mysql_community_server_and_gui
for discussion of how to obtain, install and configure MySQL Community Server
on Windows.


This note discusses how to configure the Java CAPS 6 JDBC eWay (Repository) to connect to
the MySQL Community Server both in XA and non-XA mode. In particular, the note points out an
additional, critical configuration item that is undocumented and is bound to
trip plenty of people. I hope this will save you the time and the trouble of
working out for yourself what the correct incantations are.


 The entire note is contained in Java CAPS 6 JDBC eWay _Repository_ MySQL Configuration.pdf

Sunday Jun 15, 2008

Java CAPS 6/JBI Note 3 - File-2-File with CSV to XML Decode/Encode

The attached document briefly explores the Encoder aspect of Java CAPS 6/JBI and OpenESB. It walks through the process of creation, deployment and execution of a simple File-to-File integration solution that reads comma-delimited record from a text file, ‘decodes’ then into XML and writes the XML-equivalent records into a file. The project is then extended to ‘encode’ XML records back to CSV format on output.


The focus is the practice of using JBI components not the theory of JBI.


This document addresses the integration solution developers, not developers of Service Engines or Binding Components.


The project uses JBI components only, that’s why it is just as good for OpenESB exploration as it is for Java CAPS 6/JBI exploration.


JBI (Java Business Integration) is not discussed to any great extent. JBI artifact names are used in discussion but not elaborated upon. Explanations are provided where necessary to foster understanding of the mechanics of developing integration solutions using JBI technologies in OpenESB and Java CAPS 6/JBI.


Java CAPS 6 and OpenESB are two of a number of toolkits that implement the JBI specification (JSR 208). When I use an expression like “In JBI …” I actually mean “In JBI as implemented in Java CAPS 6 and OpenESB …”. The same things may well be implemented differently in other JBI toolkits.


Java CAPS 6 “Revenue Release” is used and shown in illustrations. OpenESB can be used instead however the appearance of components shown in illustrations may vary somewhat.


I use Windows to develop these solutions and make no effort to verify that the solutions will run on other platforms.


The complete walkthrough is here.

Thursday May 15, 2008

Java CAPS 5.1, Implementing WS-Security 1.0 (2004) with JAX-RPC

A couple of years ago I worked out how to supplement WS-Security infrastructure in Java CAPS 5.1.1 with additional services that WS-Security 1.0 (2004) supports, namely SOAP Message Security, X.509 Certificate Token Profile and Timestamp Token Profile. Together these provide Java CAPS solutions with XML Digital Signatures, XML Encryption, Sun Access Manager-mediated Username-based authentication and Timestamp support.


The attached document is 1 and a half years old. It makes statements about Username Token support in Java CAPS 5.1.1 being broken. Java CAPS 5.1.3 supports Username Token just fine so these statements are no longer true. Java CAPS 5.1.3 U2 adds a mechanism for hooking SOAP envelope handlers into the Java CAPS Web Services framework so what I did and described in the document can now be done differently – perhaps better and more transparently. I have not tried.


This material is provided on request on “all care but no responsibility” basis. Sun Java CAPS Support will not support this and neither will I. JAC-RPC from WSDP 2.0, which is at the heart of the implementation, is deprecated and has long since been replaced by WSIT/JAC-WS/Tango. Still, here it is if anyone is interested.


JCAPS with JWSDP 2.0, Implementing WS-Security_1.1_JCAPS5.1.1.pdf” – discussion paper


Supporting materials are over 40Mb so I can’t post them to the blog. If anyone is interested says so.


Well, someone said so. The archive, WSSecSampleProject_1.2_JCAPS5.1.1.zip, is posted. Please understand that this is "all care and no responsibility" material. I don't have the time to spend working through issues with individual people. It all worked at the time I put it together and on occasions since. It ought to work for you as well :-)



About

In this Blog I post abstracts of articles / writeups / notes on various aspects of Java CAPS and SOA Suite including solutions, discussions and screencasts. The links to the referenced material are included in the bodies of the abstracts.

Search

Categories
Archives
« March 2015
SunMonTueWedThuFriSat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    
       
Today