ProGuard v4.8 Released

Eric Lafortune has just released ProGuard v4.8.
http://proguard.sourceforge.net/

ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition.

Regards,
Roger Lacroix
Capitalware Inc.

Java, Open Source, Programming Comments Off on ProGuard v4.8 Released

Content Removed

Content Removed

Capitalware Comments Off on Content Removed

Fedora 17 Released

Fedora Project Contributors has just released Fedora v17.
http://docs.fedoraproject.org/en-US/Fedora/17/html/Release_Notes/index.html

Fedora is a Linux-based operating system, a suite of software that makes your computer run. You can use the Fedora operating system to replace or to run alongside of other operating systems such as Microsoft Windows or Mac OS X. The Fedora operating system is 100% free of cost for you to enjoy and share.

Regards,
Roger Lacroix
Capitalware Inc.

Linux, Open Source, Operating Systems Comments Off on Fedora 17 Released

Old Farts Know How to Code

Here’s a funny/serious posting by Nick Bradbury:
Old Farts Know How to Code

Regards,
Roger Lacroix
Capitalware Inc.

Programming Comments Off on Old Farts Know How to Code

Perl 5.16.0 Released

The Perl developers have just released Perl v5.16.0.
http://www.perl.org/get.html

Perl is a high-level programming language with an eclectic heritage written by Larry Wall and a cast of thousands. It derives from the ubiquitous C programming language and to a lesser extent from sed, awk, the Unix shell, and at least a dozen other tools and languages.

Regards,
Roger Lacroix
Capitalware Inc.

Open Source, Perl, Programming Comments Off on Perl 5.16.0 Released

How to be a Programmer

Here’s a good document that every programmer should read:
How to be a Programmer: A Short, Comprehensive, and Personal Summary

Regards,
Roger Lacroix
Capitalware Inc.

Open Source, Programming Comments Off on How to be a Programmer

Technical Document on Multicast in WebSphere MQ 7.1

IBM Support has release a technical document on how to use the new publish/subscribe functionality introduced in WebSphere MQ 7.1: Multicast.
http://www.ibm.com/support/docview.wss?uid=swg27024903

Regards,
Roger Lacroix
Capitalware Inc.

C, IBM MQ, Linux, Programming, Windows Comments Off on Technical Document on Multicast in WebSphere MQ 7.1

Discussion of Auditing of MQ

On the MQ ListServer, there has been a recent discussion that MQ does not have the built-in ability to audit what users and/or applications do when connected to a queue manager. Here is some of the comments:

Hubert said:

What’s about implementing an API exit? You could create a new MQ operator account (e. g. “mqoper”) which is able to read specific queues. The API exit then could report the change in a file or database, which is not readable by the mqoper account. Instead of such an API exit IBM could provide auditing events, to report such gets and puts.

Ian said:

On using an API exit, we had mooted writing an API exit to do just that. However management did not want a custom in-house solution to what is perceived as a blind-spot for the MQ product and possibly more importantly, an API exit can be disabled by the very person you are trying to audit. I think the idea of having an id such as mqoper would only work if you never allowed an MQ Administrator to switch to the real mqm userid.

Michael said:

same applies to reading/writing of messages by mqm, it’s all in the logs… when using circular logging mqm activity should be ‘kept/flagged’ as long as possible, to provide a meaningful audit trail. Lastly the log only contains information about persistent messages, for now I could live with that…

Ian said:

Thinking about this, I am more convinced than ever that any audit trail, if one is ever created, should be configurable at the queue level. One way of doing this was my suggestion to add an AUDIT attribute to the Queue definition. That would allow you to only audit particularly important queues. But there would be many ways of achieving the same functionality and the IBM Labs of course is the best place to decide how to do it.

I cannot comment on whether or not IBM will ever add auditing to MQ but many releases ago, IBM added API Exit functionality so that customers and/or 3rd party vendors could add auditing or other features to MQ. Capitalware’s MQ Auditor is one such product that makes full use of the API Exit functionality for auditing.

MQ Auditor is a solution that allows a company to audit/track all MQ API calls performed by MQ applications that are connected to a queue manager. MQ Auditor can log all API calls (MQCONN, MQOPEN, MQGET, MQPUT, etc..) issued by an application. It does not matter what application or UserID the user is using, by default, everything will be written to the MQ Auditor’s audit files.

MQ Auditor’s default behavior is to log all MQ API calls issued by all applications (users) but MQ Auditor can be tailored to only audit/track by Applications, UserIDs and/or Queues.

  • By Applications means that MQ Auditor will log all MQ API calls whose application name matches the filter value.
  • By UserIDs means that MQ Auditor will log all MQ API calls whose UserID matches the filter value.
  • By Queues means that MQ Auditor will log all MQ API calls whose queue name matches the filter value.

For a FREE 60-day trial of MQ Auditor on AIX, HP-UX, IBM i 5.4 & 6.1, i5/OS V5R3, OS/400, Linux x86, Linux x64, Linux on POWER, Linux on zSeries, Solaris or Windows, please send an email to support@capitalware.com to request a trial.

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, IBM i (OS/400), IBM MQ, Linux, MQ Auditor, Unix, Windows Comments Off on Discussion of Auditing of MQ

MQ Auditor’s new Audit Queue Off Load Application

I am always looking to tune Capitalware’s applications . After reviewing MQ Auditor, it occurred to me that I could save 8-12 ms (milliseconds) per audit record that MQ Auditor writes to the audit files. Now, 8-12 ms per audit record may not sound like a lot but if your queue manager is processing a million or more API calls per hour, milliseconds do add up.

So, I came up with a design for a new companion application for MQ Auditor called Audit Queue Off Load (AQOL). To use the new AQOL application, the user will activate the audit queue feature within MQ Auditor. Hence, all audit data will be written to the audit queue and will be processed by the new AQOL application.

Of course, everyone’s first thought is that “won’t putting all of the audit messages to a queue slow things down?”. Normally, I would say yes, but there are 2 reasons why in this case the answer is no.

  1. The messages with the audit data are non-persistent messages. Hence, they are not written to MQ’s log files. Also, if there is a consumer waiting to get a message then the messages are not written to the queue file either. Hence, the message data will only reside in memory.
  2. I designed the AQOL application to be a “massively parallel” application. The application is broken into 2 components: front-end (MQ Getter) and back-end (File Q) threads. The MQ Getter threads (default of 8 ) are used to get messages off the audit queue as fast as possible and place them on the internal queues. The File Q threads (1 per open file) processes the internal queue and writes the audit data to a particular file.

    Internal Object Relationships:

  • The relationship between the MQ queue (CAPITALWARE.AUDIT.QUEUE) and the front-end MQ Getter threads is one-to-many.
  • The relationship between the front-end MQ Getter threads and the internal queues is many-to-one.
  • The relationship between the internal queues and the File Q threads is one-to-one.
  • The relationship between the File Q threads and the actual audit files is one-to-one.

On low volume queue managers, 8 MQ Getter threads may be enough but for busy queue managers, the user may need 50 or 75 MQ Getter threads. The idea is to never allow messages to pile up on the MQ audit queue.

The File Q threads are totally controlled by the number of processes and threads that are connecting to the queue manager. If you have 100 processes connecting to the queue manager, then the AQOL application will have 100 File Q threads running to write the audit data to the 100 files. If, on a very busy queue manager, you have 1000 processes connecting to the queue manager, then the AQOL application will have 1000 File Q threads running to write the audit data to the 1000 files.

There is a timer thread within the AQOL application that is used to place an “inactivity message” on each internal queue. The inactivity message causes each File Q thread to check if there has been any file activity within the last 20 minutes (user changeable). If there has not been any file activity within the last 20 minutes, then the audit file is closed and archived.

The AQOL application has been designed to be used via the MQ Service, so that AQOL will automatically start and stop when the queue manager starts and stops.

As I said, the new AQOL application is a “massively parallel” application. 🙂

Does anyone want to beta test it?

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, IBM i (OS/400), IBM MQ, Java, Linux, MQ Auditor, Unix, Windows Comments Off on MQ Auditor’s new Audit Queue Off Load Application

ActiveMQ 5.6.0 Released

Apache ActiveMQ Project has just released ActiveMQ v5.6.0.
http://activemq.apache.org/activemq-560-release.html

Apache ActiveMQ is the most popular and powerful open source messaging and Integration Patterns server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License

Regards,
Roger Lacroix
Capitalware Inc.

.NET, C, C#, C++, Java, JMS, Linux, Open Source, Unix, Windows Comments Off on ActiveMQ 5.6.0 Released