Close WebSphere Integration Developer when updating Fixpacks for WebSphere Process Server

April 17th, 2008 dan Posted in Business Integration Tips, WebSphere Enterprise Service Bus, WebSphere Integration Developer, WebSphere Process Server No Comments »

I was attempting to install WebSphere Process Server v6.0.2.3 on the server installed with WebSphere Integration Developer. The install kept failing on me with an exception:

Caused by: com.ibm.ws.install.ni.framework.fileactions.NIFFileActionIOException:
The file java/jre/lib/charsets.jar could not be replaced.
at com.ibm.ws.install.ni.framework.fileactions.ReplaceFileActionPlugin.execute
(ReplaceFileActionPlugin.java:108)
at com.ibm.ws.install.ni.framework.fileactions.FileActionPlugin.executeFileAction
(FileActionPlugin.java:54)
at com.ibm.ws.install.ni.updi.component.was.ComponentFileActions.execute
(ComponentFileActions.java:95)
at com.ibm.ws.install.ni.updi.component.was.ComponentDeployAction.execute
(ComponentDeployAction.java:48)
at com.ibm.ws.install.ni.updi.component.was.UpdateComponent.execute
(UpdateComponent.java:93)
at com.ibm.ws.install.ni.framework.component.ComponentAction.executeComponentActions
(ComponentAction.java:215)
at com.ibm.ws.install.ni.framework.component.ComponentAction.executeComponentActions
(ComponentAction.java:75)
at com.ibm.ws.install.ni.framework.install.NIFPackageApplicationPlugin.performUpgrade
(NIFPackageApplicationPlugin.java:548)
... 16 more

I forgot to close my WebSphere Integration Developer. Once I closed it, the upgrade completed successfully.

Related Posts

AddThis Social Bookmark Button

Tip: Agree To Concrete WSDL Definitions before Development Begins

April 16th, 2008 dan Posted in Best Of DZ.com, Business Integration Tips, Design Decisions No Comments »

If you are a provider or a consumer about to enter development on a web service, you should have an understanding with your counterpart of the WSDL that defines the service. It should be very well ‘baked’ and changes once development begins should be minimial.

Major things like name spaces and object names should rarely change once development begins. Name spaces and object names are treated as a key by mapping tools. If either of them change, expect to waste time refactoring your development artifacts to use the new definitions.

Your WSDL file is a contract. A contract that describes what data I can expect from an invocation. How can you expect to perform a development exercise without a strongly defined contract?

Also, the runtime that you are going to use to implement your service is irrelevant. I received three WSDLS that were completely different because the developer was switching between runtimes and I assume just autogenerating the WSDL from the tooling.

Good anti-pattern and a solid reason why these kinds of projects miss deadlines.

Related Posts

AddThis Social Bookmark Button

WMVare – Shrink the Dynamic Disk To Retain Performance

April 15th, 2008 dan Posted in Business Integration Tips No Comments »

Yesterday, I talked about the benefits of installing IBM products into VMWare. Today, I just want to mention a quick tip about how to retain the performance of your virtual machines.

When a hard drive is created in VMware, you have the option to specify whether the space should be allocated dynamically or ‘all at once’. If you allocated the disk all at once, there is nothing to shrink. If you do it dynamically, what you will see is that your disks grow and grow and grow until they reach their maximum size. They land up being much much larger than the sum total of the files inside the machine. This is due to some techno-babble about how operating systems mark files as deleted.

What the ‘Shrinking’ process does is wipe all of these deleted file allocations with zeros and then re-organize the disk to put the remaining files in order, thus, eliminating all the gaps (the extra wasted space). You will find at the end of the process that your VM is substantially smaller.

Also, because the disk is substantially smaller, it’s easier to VMWare to find the files being accessed inside the virtual disk.  I had a VM (WebSphere Integration Developer v6.0.2) that was chugging along very slowly. After I had defragmented and shrunk the disk, it was back to being lightning fast (and about 30% smaller).

I’m not sure what a good guideline is for shrinking your disks, but if you uninstall or reinstall a large software suite, I recommend doing it then. It will take about 20-30 minutes but you’ll get that back that time in faster responses.

Related Posts

AddThis Social Bookmark Button

Install your WebSphere Software into a Virtual Machine (VMWare)

April 14th, 2008 dan Posted in Business Integration Tips No Comments »

This is something that I’ve been doing for such a long time that I forgot what a great tip it is. VMWare allows you to run a whole other operating system on your machine without affecting your host operating system. This can allow you to run multiple version of the same product stack on a single machine, including those times when one-level will search, uninstall and reinstall older levels.

I currently have around 3-4 Virtual machines. One for the v6.0.2 stack, One for the v6.1 stack, One for personal use and one that just includes a ‘fresh install’ of an operating system. I use the fresh install to start new VMs if I’m installing new software to play around with.

I like VMWare because it allows me to install products without bloating my host windows registry. At the end of the day, I can ‘pause’ the VM and write the memory contents to a file. When I come back the next day, I ‘resume’ and I’m at the exact same place that I left off. No splash screens for me!

I’m currently running my VMs on a T60 widescreen thinkpad with 3 gigs of ram and a Centrino Duo core. I don’t notice any performance impacts when working within WebSphere Integration Developer and still having iTunes, Trillian and Notes open.

The VMware server is a free download. It’s up to you to have the installable discs for whatever operating system you’d like to use (Windows/Linux etc).

Related Posts

AddThis Social Bookmark Button

WebSphere Enterprise Service Bus – Mediation Flow Component: No Refactoring for WSDL Faults

April 10th, 2008 dan Posted in Business Integration Tips, WebSphere Enterprise Service Bus No Comments »

I have a solution that I’m working on that involves Mediation Flow Components. Recently, the namespace of a service I consume changed. This service throws two known faults whose namespace also changed.

When I modified by Mediation Flow Component to ‘Synchronize Interface/References from component TO implemenation’ it didn’t bother to update the fault terminals. In addition, the ability to change the fault terminal types in the mediation flow editor is disabled.

As it’s currently designed, I have to recreate my entire mediation module from scratch. Visual Snippets, primitives, the works.

Since I there isn’t enough willpower in the world to get me to do this for something as trivial as the namespace of my faults, I just opened up the .mfc file in a text editor and changed it myself. The same task that the tool should have done for me. Everything works fine.

Just another reason why I dislike WebSphere Enterprise Service Bus v6.0.2 and point my clients to WebSphere Process Server.

Related Posts

AddThis Social Bookmark Button

Adding JMS or MQ/JMS Custom Header Attributes

April 9th, 2008 dan Posted in Business Integration Tips, WebSphere Enterprise Service Bus, WebSphere Integration Developer, WebSphere Process Server 5 Comments »

If you need to add a custom header to your JMS (default messaging) or MQ/JMS message in WebSphere , you have two options. You can specify it as a custom header on the import component in the assembly diagram, or you can use a Medation Module.

You can add the custom header property in the assembly diagram by: Clicking the MQ/JMS Import Component. Click the Method binding in the propreties view. Scroll to the Custom Header table and add the name/value pair. It should be noted that you can only do this for static values. If you need to assign the value of your custom property based on the data from your Business Object, you MUST use a Mediation Flow. Sadly, the ‘Value’ column is not an XPATH expression like it should be.

To do this in a mediation module, you do your normal modification of the /header, nothing special.

Related Posts

AddThis Social Bookmark Button

WebSphere Adapter for FTP – Missing Information in User Guide

April 2nd, 2008 dan Posted in Business Integration Tips, Humor, WebSphere Enterprise Service Bus, WebSphere Integration Developer, WebSphere Process Server No Comments »

Sometimes you have to chuckle at the titles of PMRs. I came across this one today:

Information not included in the user guide for IBM WebSphere Adapter for FTP V6.0.2

Where they admit they forgot very minor details like the fact you have to create all the directories manually or the ftp location where inbound events will actually get picked up from.

More interesting, it looks like you can expect an outage once every four years:

The default parser provided by Commons Net API v1.4.1 fails to handle files with Feb 29 as the creation date.

and of course, you know when WebSphere Integration Developer tells you that it aborted something? Oh, you should just ignore that:

4. When using the enterprise service discovery wizard, the following informational message is displayed in the log: ‘Aborting DataBinding Generation type specified is not a DataBinding Generator: com.ibm.j2ca.ftp.FTPFileDataBinding’.
You can ignore this message and continue working.

If it’s an ignorable warning, why is it generated in the first place?

Related Posts

AddThis Social Bookmark Button

SCA, BPEL, Websphere Adapter for JDBC and Transactionality

March 31st, 2008 dan Posted in Business Integration Tips, WebSphere Integration Developer, WebSphere Process Server 6 Comments »

Consider the following module:

We have a Web Service Export connecting to a BPEL process which invokes the WebSphere Adapter for JDBC. The BPEL process has two invocations to insert two rows into the database. I have a business requirement that either both rows get inserted or no rows.

Now in the success case, when I invoke this module I will see that two rows are written to the database.

If I modify my BPEL to throw an exception in-between the two invokes then the BPEL process transaction will rollback. What do I now see in the database? The first row inserted into the database. It didn’t participate in the transaction spawned by the BPEL process/SCA container, therefore, it didn’t get rolled back. This has broken the business requirement.

Why did the BPEL transaction not propagate to the WebSphere Adapter for JDBC Import? The answer lies in the interface qualifier for the import.

You can find this by clicking on the interface icon on the import and looking in the properties view. Click the ‘Qualifiers’ tab and click the ‘Add’ button. There is a property called “JoinTransaction”. This property tells SCA that this component wants to “Join the transaction of the calling component”, ie transaction propagation. When “joinTransaction” is false, the SCA runtime interprets this as “This component should be run in it’s own local transaction”. By default when ‘joinTransaction’ is not specified, it behaves as FALSE.

If I change this property to TRUE and re-run my BPEL throwing a fault, I will see neither row inserted into the database.

The interactions between transactions is something that you need to pay attention to when developing your modules. Unfortunately, theres no graphical representation of transactions in the assembly diagram to make this job easier.

There is a hidden ‘gotcha’ in this scenario. Inside of a BPEL process, you have the ability to specify when a transaction should be committed. This is represented in the radio buttons “Commit Before, Commit After, Requires Own or Participates”. Be aware that these settings only apply to a LONG RUNNING PROCESS. Short running processes only exist in a single transaction from start to finish, so they either completely finish or completely rollback. There’s no ‘halfsies’ allowed. If you are using a short running process, then you have to ‘fiddle’ with the transactions as defined on the interface qualifiers.

Related Posts

AddThis Social Bookmark Button

CWSIP0311E: A user is not authorized to delete a durable subscription

March 28th, 2008 dan Posted in Business Integration Tips, Other Business Integration Products No Comments »

When attempting to start an ear after application install on WebSphere v6.1, the following exception occurred:

[28/03/08 9:50:46:673 EST] 00000028 MBeanHelper   E   Could not 
invoke an operation on object:
WebSphere:name=ApplicationManager,process=server1,
platform=dynamicproxy,
node=txuxu-was007Node01,version=6.1.0.15,
type=ApplicationManager,mbeanIdentifier=ApplicationManager,
cell=was007Node01Cell,spec=1.0 because
of an mbean exception:
com.ibm.ws.exception.RuntimeWarning:
javax.resource.ResourceException: CWSIV0900E:
The exception
 com.ibm.wsspi.sib.core.exception.SINotAuthorizedException:
CWSIP0311E: A user  is not
authorized to delete a durable
subscription SUBNAME##SUBID on
destination Default.Topic.Space. was thrown w
hile attempting to
create a listener for destination
Default.Topic.Space on
bus SomeBus using
connection com.ibm.ws.sib.processor.impl.ConnectionImpl@86eef6.

Naturally I turn to google and see that the exception is of format:

CWSIP0311E: A user {0} is not authorized to delete a durable subscription {1} on destination {2}.

Now, it’s probably very hard to see on the internet, but there are two spaces between the words ‘user’ and ‘is’ in the CWSIP0311E: message. This extra space told me that the Authentication Alias used in the EAR was set to a single blank and not ‘null’. We asked the developer to check the field in the deployment descriptor and sure enough, the field was a single space.

We remove the space, re-generated the ear and deployment to our secured server was successful.

It would have reduced our problem determination time is IBM would mandate that all variable values in an exception were surrounded by quotes.

Related Posts

AddThis Social Bookmark Button

IBM Support Flashes

March 24th, 2008 dan Posted in Business Integration, Business Integration Tips No Comments »

If you deal with IBM software, one of the things that you need to keep up with are the APARs and PMRs that IBM releases over the week. If you are on the latest level of software it’s good to know what you may or may not run into.

IBM provides a service from its website that will send you an email about information that becomes available based on a set of products you select. I get this sent to my inbox every sunday night.

Check it out at: http://www.ibm.com/support/mysupport.

Sample content:

WebSphere Process Server

Downloads and drivers

2008-03-15 JR28515: Large Object sent to FFDC logging causes errors and crash

http://www.ibm.com/support/docview.wss?uid=swg24018608

2008-03-14 JR27757: 6.0.2.1: Version information missing in administrative console

http://www.ibm.com/support/docview.wss?uid=swg24018206

Problem solving information

2008-03-12 J2CA0056I: Application containing business rules results in a java.lang.NullPointerException

http://www.ibm.com/support/docview.wss?uid=swg21225859

****************

Another place you can find this information on a continually updates basis is www.WebSphereToday.com a WebSphere aggregation.

Related Posts

AddThis Social Bookmark Button

SIBus Explorer

March 18th, 2008 dan Posted in Business Integration Tips, WebSphere Enterprise Service Bus, WebSphere Process Server 5 Comments »

Service Integration Bus Explorer is tool provided by IBM that allows you to browse the queues on your WebSphere Application Service. You can see individual messages, internal queues, clear queue points etc. The path to get this information requires so many clicks, that SIBus Explorer will quickly become an indispensable tool.

There is a similar product out there for MQ (and other providers) called HermesJMS but I’m not sure if anyone has gotten it to work in WAS v6, so YMMV.

Related Posts

AddThis Social Bookmark Button

How not to migrate your server – Internal Database Copying

March 18th, 2008 dan Posted in Business Integration Tips, WebSphere Process Server No Comments »

Please, for me, never just think you can migrate a server from one profile to another by asking your admin to copy the internal table structure from one database to another.. and then clearing all the rows from these tables. Theres a ton of magic that goes on behind the scenes by WebSphere into it’s internal databases. I call it magic because we (as users) are never supposed to know whats going on in there. Any solution to a problem that involves your admin poking around these tables is wrong.

Related Posts

AddThis Social Bookmark Button

Interop between BOXMLSerializer and JMSDataBindingImplXML

March 17th, 2008 dan Posted in Business Integration Tips, WebSphere Process Server No Comments »

I stumbled onto a technote about the interoperablility between the way XML is serialized by the BOXMLSerializer and the  format expected by JMSDataBindingImplXML. This is a concern if you serialize data from a business object and then put that data into a JMS Text message and choose ‘Text Message with DataObject Binding’ in the export.

Basically, they say to use the element (xsd:element name=”x”) declaration instead of the type (xsd:type name=’x').

Related Posts

AddThis Social Bookmark Button

How to emit a Common Base Event in Java

March 13th, 2008 dan Posted in Business Integration Tips, WebSphere Enterprise Service Bus, WebSphere Integration Developer, WebSphere Process Server No Comments »

A quick tip on how to emit a CBE. I usually put this block of code into a utility java project and add it to my module’s dependency editor so I can emit events in my modules.

  ECSEmitter emitter = new ECSEmitter("com/ibm/events/configuration/emitter/Default", null);

// create common base event

eventCommonBaseEvent cbe = emitter.createCommonBaseEvent(null);

// Work your CBE setting magic then

emitter.sendEvent(cbe);

// emit the CBE.

emitter.close();

// make sure to close the emitter when done to be safe.

The workhorse is the ECSEmitter. The Default JNDI for the default emitter is as above. It’s highly unlikely that your admin changed this.

Business Integration Server has extended CEI by adding an Event Correlation Sphere (ECS) facade to it, which provides access to CEI through an ECSEmitter class. Compared to CEI APIs, the advantage of using ECSEmitter is that it preserves the event context. ECSEmitter automatically adds two context elements — the current and parent context — to the events that are sent using this emitter.

For some reason, most of the docs about ECSEmitter are from the v5.1 product days but the information contained is perfectly relevant today. The context information it is referring to is meta-info about which component/module/operation emitted the event. This can be very useful for tracing purposes if you use CEI in that manner.

Related Posts

AddThis Social Bookmark Button

Console – Removing Auto-Focus & Output Line Limit

March 13th, 2008 dan Posted in Business Integration Tips, WebSphere Integration Developer No Comments »

Cheers to David Currie for pointing out how to disable the focus grabbing ability of the console view in WID (and Eclipse). I’d just like to add that in the property page where you turn off the auto-focus, you can also either disable or greatly increase the size of the scroll back buffer. I usually turn the option off and manually clear the console view. This ensures that I keep all the SystemOut information I need while I’m developing. As we all know, exceptions from the server can be very long.

Related Posts

AddThis Social Bookmark Button