Thursday 31 December 2015

Using unzip on Mac OS X with L-A-R-G-E files

Whilst trying to unpack a large >4 GB .ZIP file: -

unzip /Volumes/DaveHay/Software/ODM87/Fixes/Windows/8.7.1-WS-ODM_DC-WIN-FP001.zip 

I saw this: -

Archive:  /Volumes/DaveHay/Software/ODM87/Fixes/Windows/8.7.1-WS-ODM_DC-WIN-FP001.zip
warning [/Volumes/DaveHay/Software/ODM87/Fixes/Windows/8.7.1-WS-ODM_DC-WIN-FP001.zip]:  4294967296 extra bytes at beginning or within zipfile
  (attempting to process anyway)
file #1:  bad zipfile offset (local header sig):  4294967296
  (attempting to re-compensate)
   creating: 8700/


I'm using the stock unzip command that comes with Mac OS X 10.11.2: -

unzip -v

UnZip 5.52 of 28 February 2005, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;
see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.

Compiled with gcc 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1) for Unix on Jul 31 2015.

...

I've seen this before, albeit on AIX - I solved it then using the jar command, as shipped with IBM Java7.

As ever, the answer was online: -


I managed to unzip it with tar.

tar xzvf 2015-09-24-raspbian-jessie.zip

Requires no installation of additional software

I tried the same thing: -

tar xvzf /Volumes/DaveHay/Software/ODM87/Fixes/Windows/8.7.1-WS-ODM_DC-WIN-FP001.zip 

which worked a treat.

Thanks Internet :-)

IBM Installation Manager - 32 vs 64 bits

I see this from time to time, this time whilst scripting up an IBM ODM Rules installation on Windows.

During the installation process: -

"c:\IBM\Installation Manager\eclipse\tools\imcl.exe" -input z:\DaveHay\Software\Repo\Win\ResponseFiles\installWAS8555_WIN.rsp -acceptLicense

I see this: -

ERROR: The 32-bit IBM WebSphere Application Server Network Deployment package cannot be installed in a 64-bit package group.

even though I know that I've got the 64-bit version of WAS ready to install on a 64-bit OS.

As ever, the solution is simple :-)

Read my own blog, read my own notes, look at an existing response file, record a NEW response file.

This time around, I did the latter: -

"c:\IBM\Installation Manager\eclipse\IBMIM.exe" -record foobar.rsp -skipInstall c:\temp\foobar

which resulted in: -

<?xml version='1.0' encoding='UTF-8'?>
<agent-input>
  <variables>
    <variable name='sharedLocation' value='C:\IBM\IMShared'/>
  </variables>
  <server>
    <repository location='z:\DaveHay\Software\Repo\WAS\Product'/>
    <repository location='z:\DaveHay\Software\Repo\WAS\Fixes'/>
  </server>
  <profile id='IBM WebSphere Application Server V8.5' installLocation='C:\IBM\WebSphere\AppServer'>
    <data key='cic.selector.arch' value='x86'/>
  </profile>
  <install>
    <!-- IBM WebSphere Application Server Network Deployment 8.5.5.5 -->
    <offering profile='IBM WebSphere Application Server V8.5' id='com.ibm.websphere.ND.v85' version='8.5.5005.20150220_0158' features='core.feature,ejbdeploy,thinclient,embeddablecontainer,com.ibm.sdk.6_64bit'/>
  </install>
  <preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='${sharedLocation}'/>
  <preference name='offering.service.repositories.areUsed' value='false'/>
</agent-input>


I compared/contrasted the highlighted line: -

    <data key='cic.selector.arch' value='x86'/>

with the response file that I was trying to use: -

    <data key='cic.selector.arch' value='x86_64'/>

and changed it accordingly.

It's annoying when things are so simple, especially when it seems counter-intuitive i.e. if one is installing a 64-bit product onto a 64-bit OS, why would one NOT specify x86_64 :-)

Still, it all works now: -

"c:\IBM\Installation Manager\eclipse\tools\imcl.exe" -input z:\DaveHay\Software\Repo\Win\ResponseFiles\installWAS8555_WIN.rsp -acceptLicense

Installed com.ibm.websphere.ND.v85_8.5.5005.20150220_0158 to the C:\IBM\WebSphere\AppServer directory.

which is nice :-)

Integrate Docker in your IBM Operational Decision Manager environment

This is DEFINITELY something on my short-term reading list, as it's something with which I want / need to get to grips in the New Year: -

IBM® Operational Decision Manager (ODM) application developers who are new to Docker might consider adding Docker to their development process. This tutorial shows how to build a Docker image for an IBM ODM Rule Execution Server and Decision Center that run on a WebSphere Liberty server. You also learn how to run the Rule Execution Server and Decision Center in a container from the Docker image. This content is part of the IBM Business Process Management Journal.


It covers Docker, Liberty and ODM Rules in a single article. What's not to like ?

Wednesday 30 December 2015

Book Review - 57 Challenges to Develop Your Coding Skills by Brian P. Hogan

It's been a while since last I reviewed a book, so I wanted to end the year with … a review.

Our friends at The British Computer Society (BCS) kindly sent me a copy of Exercises for Programmers : 57 Challenges to Develop Your Coding Skills by Brian P. Hogan a few weeks back.

This is available on Amazon here but my ebook came via a different route, thanks to BCS.

The purpose of the book is to, via a series of exercises, teach the reader the fundamentals of computer programming. The book is language-neutral, so it makes no difference whether you choose to use C, Java, Python, Swift etc. as the focus is on teaching one how to solve a problem in code, rather than how to use a particular language.

Through a series of increasingly complex problems, the author coaches the reader in the art of problem-solving, demonstrating how one can output data, perform calculations, compare strings, develop re-usable functions, sort data, use public APIs etc.

This took me back to my student days, where the instructor would set an exercise e.g. write a programme to output the Fibonacci sequence, print Pi to 32 decimal places etc.

Whilst this is a useful way to teach one HOW to programme, I found the exercises to be a little repetitive, and overly frustrating, perhaps because I'm not the ideal target audience i.e. I first learned to write computer programs more than 30 years ago, and I don't program for a living.

Additionally, whilst the book does set out each problem clearly, it does not provide any example solutions, even for the most simple of problems. This means that there's no obvious feedback loop between teacher and student. Again, it's perhaps my bias, but I'd have preferred to see a few example solutions, showing how the problem might be solved.

Don't get me wrong - this is a very useful book, and one that I'd definitely recommend to students of computing, but I'm not wholly convinced that it'd be the right tool for every job.

Perhaps it's down to the different ways that we all choose to learn, but I'd have personally preferred fewer, longer exercises, focused upon teaching a few fundamental concepts in one fell swoop.

As an ebook, this comes in around 263 pages in length, comprising, quelle surprise, 57 discrete exercises ( challenges ), each increasing in complexity, building upon the preceding chapters.

So, in conclusion, whilst this is an excellent book, I'd definitely recommend that the reader either be completely new to computer programming, or, perhaps better still, read this in conjunction with other, more detailed, tutorials.

Out of 10, I'd give this 7, taking into account the reservations expressed previously.

Before I finish, I want to thank Becky Youe at BCS for kindly providing me with this book to review.

Things that make you go "Hmmmm" - Part 321

A few days ago, having watched an excellent programme about Aardman Animation, Wallace and Gromit, Nick Park etc. I decided to rent one of Aardman's most recent films, The Pirates! In An Adventure with Scientists from iTunes.

So the film is sitting in my iTunes library, waiting to be watched …..

Last evening, I decide to watch it …..

On my Apple TV ……

At that point, the wheels come off my wagon …

Alas I can't find the movie, or even the Rental tab, on Apple TV, although I could choose to re-rent the film from iTunes :-)

Long story short, I Google and find this: -


If you rented the movie on your iOS device or Apple TV, you can't move it to any other device.

which, as far as I can establish, means that I cannot simply rent a movie on iTunes on my iPhone and then expect to watch it on my Apple TV.

The same article does helpfully say: -

You can also stream a rented movie from your computer or your iOS device to your Apple TV using AirPlay after it's fully downloaded.

which is precisely what I did.

In case it was me mis-reading the article, I asked one of the iMore gurus, Serenity Caldwell, via Twitter, who responded: -

settern
@david_hay Yep. It's one of the most mind-blowingly stupid policies on the store.
29/12/2015, 20:02

which helps, although it's an annoyance.

I have raised this with Apple Feedback - we'll see what happens ;-)

Tuesday 29 December 2015

Fix list for the IBM Business Process Manager Version 8.5 products

Thanks Twitter :-)

IBM_BPM
IBM Fix list for the IBM #BPM Version 8.5 products (Dec update) https://t.co/BtyuN4h6f8
29/12/2015, 14:25




IBM Fix Level Recommendation Tool (FLRT)

I love the acronym, I love (even more) the functionality: -



Windows Update - Refuses to Update

I've had this problem a few times in the past.

I find that freshly-squeezed VMs running Windows Server 2008 R2 ( built on VMware Fusion using an ISO downloaded from Microsoft Developer Network - MSDN ) simply refuse to update.

I run the Windows Update tool, click the "Check for Updates" button and am immediately told that no updates are available i.e. that I'm up to date, even though I know that I'm using a piece of software that was released in 2009.

The solution ?

Google :-)

The solution ! 

Install an update to … Windows Update :-)

Found here: -


which is nice :-)

WebSphere - Support Technical Exchanges

Twitter reminded me to x-post this: -



Monday 21 December 2015

Learn Linux, 101: Customize and use the shell environment


Learn how to customize your Linux shell environment and write simple bash functions. You can use the material in this tutorial to study for the LPI 102 exam for Linux system administrator certification, or to learn for fun.

Overview

In this tutorial, learn to customize your Linux bash shell environment to meet user needs. Learn to:

• Modify global and user profiles
• Set environment variables when you log in or spawn a new shell
• Create bash functions for frequently used sequences of commands
• Maintain skeleton directories for new user accounts
• Set your command search path

Thursday 17 December 2015

Using watch to loop in Bash

I wanted to monitor a particular set of TCP/IP listeners, on an ongoing basis, and thought "I wonder how I do this?".

A quick Google led me here: -


specifically to the /usr/bin/watch command: -

       watch - execute a program periodically, showing output fullscreen

Here's my command: -

watch -n5 'netstat -a | grep db2'

which watches the output from the netstat command, and updates the display every 5 seconds, resulting in this: -

Every 5.0s: netstat -a | grep db2                                                                                                                                                   Thu Dec 17 13:29:07 2015

tcp        0   0 *:ibm-db2                   *:*                         LISTEN
tcp        0   0 bpm856.uk.ibm.com:39889     db2two.uk.ibm.com:60007     ESTABLISHED
tcp        0   0 bpm856.uk.ibm.com:39888     db2two.uk.ibm.com:60007     ESTABLISHED
tcp        0   0 bpm856.uk.ibm.com:39890     db2two.uk.ibm.com:60007     ESTABLISHED
udp        0   0 *:ibm-db2                   *:*


which is nice :-)

Tuesday 15 December 2015

Reminder - DB2 HADR and SQL1768N rc7

Reminder to self: -

If I see SQL1768N rc7 when attempting to use DB2 HADR, there's a good chance that I've forgotten to update /etc/hosts meaning that one/both hosts is returning the loopback / localhost address of 127.0.0.1 when attempting to connect to itself via hostname.

For the record, /etc/hosts should look similar to this: -

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.153.100 bpm856.uk.ibm.com bpm856
192.168.153.110 db2one.uk.ibm.com db2one
192.168.153.120 db2two.uk.ibm.com db2two

In other words, there must be no other hostname alongside the localhost entries.

Monday 7 December 2015

How to tune a guitar and a Business Process Manager (BPM) topology at the same time

I found this whilst searching for something pertaining to Java2 Security: -


<snip>

As such, here's a quick checklist of tuning tips that cover all areas of your IBM Business Process Manager (BPM) environment:

  • Use a 64-bit JVM for all servers.
  • Disable tracing, logging, and monitoring when possible.
  • Ensure all of your databases are well-tuned.
  • If security is required, use Application security, not Java2 security.
  • Use an appropriate hardware configuration for performance measurement (not notebooks or desktops).
  • If hardware virtualization is used, ensure that adequate processor, memory, and I/O resources are allocated to each virtual machine.
  • Minimize network latency and ensure sufficient network bandwidth between all systems in the configuration.
  • Do not run production servers in development mode or with a development profile.
  • Tune external service providers and external interfaces to ensure that they do not cause a system bottleneck.
  • Configure:
    • Message-driven bean (MDB) activation specifications.
    • Thread pool sizes.
    • Settings of data sources for connection pool size and prepared statement cache size.
  • Increase the maximum number of connections in the data pool to greater than or equal to the sum of all maximum thread pool sizes.


This list represents just the fundamental requirements for optimal performance. See IBM Business Process Manager V8.0 Performance Tuning and Best Practices, REDP-4935-00 for a complete list of tuning recommendations for all areas of your IBM Business Process Manager topology. 

</snip>

Sunday 6 December 2015

More textile manipulation with sed and bash

One of my colleagues was looking for a way to manipulate an XML file, using sed on Linux.

In essence, he wanted to remove an XML tag at the current end of the file, and insert a new line BELOW the current end of the file, making the new line the new end of the file :-)

Here's a mockup of my solution.

I used a file called foobar.bak as my input file, mainly so that I could quickly see/compare the changes between input and output.

Input file - foobar.bak

The quick brown fox
Jumped over the lazy dog
In the pouring rainfall


( Note the tab characters; they're there because my friends' XML file had tabs for pagination )

Script - replace.sh

#!/bin/bash
cp foobar.bak foobar.txt

file="foobar.txt"
replace="fall"
insert="That is all"
sed -i'' "$ s/$replace//g" $file
sed -i'' "$ a\ \t \t$insert" $file


In essence, I'm copying the foobar.bak file to foobar.txt each time I run the script, meaning that I preserve the original file :-)

I'm then setting some variables, one for the filename, one for the character to be replaced, and one for the new line.

I then use sed to replace ( remove ) the to-be-replaced string.

Finally, I again use sed to insert a new line - note that I'm using sed twice, mainly because I couldn't work out how to replace and then insert a blank line in sed I even messed about with ^M characters, but to no avail.

Output file - foobar.txt

The quick brown fox
Jumped over the lazy dog
In the pouring rain
    That is all


Again, note the tabs for pagination ( they're handled with \t above ).

*UPDATE*

I then thought about the two occurrences of sed again, and came up with this improvement: -

#!/bin/bash
cp foobar.bak foobar.txt

file="foobar.txt"
replace="fall"
insert="That is all"
sed -i'' "$ s/$replace/\n\t\t$insert/g" $file


which has the same effect, but does everything in a single sed statement :-)



Saturday 28 November 2015

Sharing - WebSphere Application Server Liberty Profile and Docker

I was tinkering with Docker this evening, and found this from an IBM colleague, David Currie


and, thanks to this, I'm now installing WebSphere Application Server Liberty Profile ( aka WAS Liberty Profile ) on Docker: -

docker run -e LICENSE=accept websphere-liberty

Unable to find image 'websphere-liberty:latest' locally
latest: Pulling from websphere-liberty
2332d8973c93: Downloading [===============>                                   ]    20 MB/65.67 MB
ea358092da77: Download complete 
a467a7c6794f: Download complete 
ca4d7b1b9a51: Download complete 
3e14d1c2650c: Download complete 
e3bc32d50851: Download complete 
745d07bf2ad2: Download complete 
495673ce32e6: Downloading [=========>                                         ] 20.53 MB/108.6 MB
050c02b24496: Download complete 
ee8038061e05: Download complete 
64f4a9295383: Download complete 
76917cbdc083: Download complete 
a9eaaa439e4f: Download complete 
a07b053d7434: Download complete 
d023c7386610: Download complete 
180d4e84d457: Download complete 
d14c17ab414e: Download complete 
6db629706d49: Download complete 
ff829fb7e487: Download complete 
35d2d9594700: Download complete 
cd570f0ee8f5: Download complete 
db13fa4f809e: Downloading [===============================>                   ] 19.99 MB/31.62 MB
6696612e0538: Download complete 
8c33ed5c2443: Downloading [==========================>                        ] 20.47 MB/39.36 MB
37a6052584a4: Download complete 
3f56975cb181: Downloading [=======================>                           ] 20.02 MB/42.28 MB


using Boot2Docker on the Mac, as per a previous post here: -

Back the past, again that's why I blog ...

I had cause to refer back to an old post: -


this afternoon, when I saw this exception, when using IBM Installation Manager : -

/opt/ibm/InstallationManager/eclipse/IBMIM 

java: cairo-misc.c:380: _cairo_operator_bounded_by_source: Assertion `NOT_REACHED' failed.
JVMDUMP039I Processing dump event "abort", detail "" at 2015/11/28 12:56:58 - please wait.
JVMDUMP032I JVM requested System dump using '/home/wasadmin/core.20151128.125658.17779.0001.dmp' in response to an event
JVMPORT030W /proc/sys/kernel/core_pattern setting "|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e" specifies that the core dump is to be piped to an external program.  Attempting to rename either core or core.18146.

JVMDUMP010I System dump written to /home/wasadmin/core.20151128.125658.17779.0001.dmp
JVMDUMP032I JVM requested Java dump using '/home/wasadmin/javacore.20151128.125658.17779.0002.txt' in response to an event
JVMDUMP010I Java dump written to /home/wasadmin/javacore.20151128.125658.17779.0002.txt
JVMDUMP032I JVM requested Snap dump using '/home/wasadmin/Snap.20151128.125658.17779.0003.trc' in response to an event
JVMDUMP010I Snap dump written to /home/wasadmin/Snap.20151128.125658.17779.0003.trc
JVMDUMP013I Processed dump event "abort", detail "".

I'm using IBM Installation Manager 1.8.1 : -

/opt/ibm/InstallationManager/eclipse/tools/imcl -version

Installation Manager (installed)
Version: 1.8.1
Internal Version: 1.8.1000.20141126_2002
Architecture: 64-bit

As before, the answer was to add: -

-Dorg.eclipse.swt.internal.gtk.cairoGraphics=false
-Dorg.eclipse.swt.internal.gtk.useCairo=false


to /opt/ibm/InstallationManager/eclipse/IBMIM.ini and retry.

For the record, I also saw the same problem earlier this year: -



Thursday 26 November 2015

Ask the Experts Replay: Understanding IBM HTTP Server (IHS) Administration using the WebSphere Admin console

Abstract

This Ask the Experts will discuss Information about Web Server Adminisrtion thru WebSphere Administraiton Console.

On October 13, 2015, IBM is hosting a panel discussion on understanding IHS Administration using the WebSphere Admin console.

The Panel of Experts have 5 questions that will answer at this session.

• What is 'Web Server Administration'?

• How does the WCT affect the configuration of the web server admin?

• What are the components of the web server admin?

• What is the difference between DMGR console and standalone WAS console?

• What are the common problems?





Wednesday 25 November 2015

Hmmm, USB and  Mac Mini - Not BFFs

I had a wee problem connecting a StarTech USB enclosure ( containing a 512 GB SSD drive ) to my Mac Mini this evening.


The drive never showed up in Finder, in Terminal ( under /Volumes ) or in Disk Utility.

Eventually, the enclosed would throw up a connection error.

In the logs ( sudo dmesg ) I saw: -

...
1642046.822691 EzLockDown@14900000: AppleUSBDevice::waitForInterfacesGated: timeout waiting for _interfacesMatched
1642046.822777 EzLockDown@14900000: AppleUSBDevice::waitForInterfacesGated: timeout waiting for _interfacesMatched
vmioplug: Warning: com_vmware_kext_UsbPortArbiter_14_1_4[fffffffffc5c018f]::updateDeviceByPort(14900000) resetDevice() failed: e00002bc
USBMSC Identifier (non-unique): 0000000000014905 0x4c5 0x2028 0x1, 3
1642116.059756 EzLockDown@14900000: AppleUSBDevice::waitForInterfacesGated: timeout waiting for _interfacesMatched
1642116.060507 EzLockDown@14900000: AppleUSBDevice::waitForInterfacesGated: timeout waiting for _interfacesMatched
vmioplug: Warning: com_vmware_kext_UsbPortArbiter_14_1_4[fffffffffc5c018f]::updateDeviceByPort(14900000) resetDevice() failed: e00002bc

I tried various things, including suspending a running VM and shutting down VMware Fusion 8, but to no avail.

In the end, I moved the drive from one USB port to another.


( the arrow indicates the from, the connected USB cable indicates the to )

Strange but true ;-)

IBM AIX Support Center Tools

I saw this earlier: -

AIX Support Center Tools provides information about widely used data gathering tools and recommendation tools that are used by AIX system administrators in conjunction with the IBM support center team. The gathering tools help reduce the amount of time spent during initial problem determination. The recommendation tools help provide health check reports or cross-product compatibility information.

Data gathering tools

zsnap

The zsnap utility delivers all the benefits of the standard snap command and captures additional debugging data in an easily understood format. IBM's world-class AIX support centers have teamed up to deliver a more fully integrated tool for data gathering, one that has already been proven to reduce the time needed to resolve customer problems. IBM recommends that you install zsnap before you call IBM technical support.

devscan

The devscan tool facilitates the debugging of storage problems by rapidly gathering a great deal of information about the SAN. It then displays the information in an easy-to-understand manner. You can run devscan from any AIX host, including VIO clients, or from a VIOS.

perfpmr

The perfpmr tool is used extensively by the AIX technical support centers. This package contains a set of tools and instructions for collecting the data needed to analyze performance problems. IBM may ask you to download and use this tool.

pdump

The pdump script extracts information from the running process using kdb command and other AIX tools.

snap

The snap command is included with the operating system. Snap captures system configuration information for AIX and PowerHA. Product technical support centers regularly request snap output to identify and resolve problems. Snap output can be delivered to IBM in portable archive exchange format (pax).

Tuesday 24 November 2015

Ask the Experts Replay: Understanding HA Manager, WLM, and ORB in WebSphere Application Server

The High Availability Manager (HA), Work Load Management (WLM), and Object Request Broker (ORB) component provide several core features in WebSphere Application Server. This session is open to discuss the concepts, issues, and best practices of each component.

Saturday 21 November 2015

Bash - Using Variables in Sed

Set a variable

export NAME=DAVID

Validate the variable

echo $NAME

DAVID

Initialise a file

echo "DAVE" > foobar.txt

Validate the file contents

cat foobar.txt

DAVE

Replace the contents of the file with the contents of the variable

sed -i'' "s/DAVE/$NAME/g" foobar.txt

Validate the file contents

cat foobar.txt

DAVID

This works with Bash 4.1.2(1)-release on RHEL 6.6.

Wednesday 18 November 2015

IBM ODM Rules 8.7 - Can you say "Doh" ?

I saw this exception today: -

The initialization of the model failed.
A resource provider error occurred during the loading.
Failed to load the repository.
null

ilog.rules.res.console.IlrConsoleException: The initialization of the model failed.
at ilog.rules.res.console.util.IlrModelManager.createRepository(IlrModelManager.java:546)
at ilog.rules.res.console.util.IlrModelManager.init(IlrModelManager.java:181)
at ilog.rules.res.console.util.IlrConsoleInitializer.consoleInitialized(IlrConsoleInitializer.java:86)
at ilog.rules.res.console.jsf.IlrRequestFilter.updateState(IlrRequestFilter.java:413)
at ilog.rules.res.console.jsf.IlrRequestFilter.doFilter(IlrRequestFilter.java:234)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:919)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)
at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881)
Caused by: ilog.rules.res.model.IlrResourceRuntimeException: A resource provider error occurred during the loading.
at ilog.rules.res.model.internal.IlrRepositoryFactoryImpl.loadRepository(IlrRepositoryFactoryImpl.java:179)
at ilog.rules.res.model.mbean.IlrJMXRepositoryFactoryImpl.createRepository(IlrJMXRepositoryFactoryImpl.java:58)
at ilog.rules.res.console.util.IlrModelManager.createRepository(IlrModelManager.java:544)
... 25 more
Caused by: ilog.rules.res.persistence.IlrDAOException: Failed to load the repository.
at ilog.rules.res.persistence.impl.IlrDAOLocalization.newIlrDAOException(IlrDAOLocalization.java:35)
at ilog.rules.res.persistence.impl.jdbc.IlrGenericRepositoryDAO.load(IlrGenericRepositoryDAO.java:127)
at ilog.rules.res.model.internal.IlrRepositoryFactoryImpl.loadRepository(IlrRepositoryFactoryImpl.java:177)
... 27 more
Caused by: java.lang.NullPointerException
at ilog.rules.res.persistence.impl.jdbc.helper.IlrRulesetsTable.load(IlrRulesetsTable.java:50)
at ilog.rules.res.persistence.impl.jdbc.IlrGenericRepositoryDAO.load(IlrGenericRepositoryDAO.java:115)
... 28 more


...
[18/11/15 15:26:45:078 GMT] 000000a7 sql           W   An error occurred when executing the SQL query.
                                 com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2INST1.RULEAPPS, DRIVER=3.68.61
...
com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;DB2INST1.RULEAPPS, DRIVER=3.68.61
...
com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;DB2INST1.RULEAPPS, DRIVER=3.68.61
...
[18/11/15 15:26:45:094 GMT] 000000a7 sql           W   An error occurred when executing the SQL query.
                                 com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2INST1.RULESETS, DRIVER=3.68.61

...
com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;DB2INST1.RULESETS, DRIVER=3.68.61
...

I realised that I was missing a table or two ( RULEAPPS and RULESETS to name but two ), but I was 100% sure I'd created everything.

I checked my notes: -

db2 connect to RESDB
db2 create bufferpool BP32K size 8000 automatic pagesize 32K
db2 -tvf C:\IBM\ODM87\executionserver\databases\trace_db2.sql
db2 -tvf C:\IBM\ODM87\executionserver\databases\repository_db2.sql
db2 -tvf C:\IBM\ODM87\executionserver\databases\xomrepository_db2.sql
db2 -tvf C:\IBM\ODM87\executionserver\databases\decisionrunner_db2.sql


( For the record, I'm installing ODM Rules 8.7.0.0 on Windows Server 2008 R2 )

Can you see what I did wrong ?

Yes, when I connected to DB2, I did not specify a user - on the Windows platform, the command will use the ID that's currently logged in - Administrator in my case - which means that all objects are created with the schema of ADMINISTRATOR rather than, as required, DB2INST1.

Once I realised what I'd done wrong, I dropped the DB: -

db2 drop db RESDB

and recreated everything BUT with the correct schema: -

db2 connect to RESDB user DB2INST1
db2 create bufferpool BP32K size 8000 automatic pagesize 32K
db2 -tvf C:\IBM\ODM87\executionserver\databases\trace_db2.sql
db2 -tvf C:\IBM\ODM87\executionserver\databases\repository_db2.sql
db2 -tvf C:\IBM\ODM87\executionserver\databases\xomrepository_db2.sql
db2 -tvf C:\IBM\ODM87\executionserver\databases\decisionrunner_db2.sql

I'm sure I could have also used this: -

db2 set current schema DB2INST1

but that's not important right now.


Tuesday 17 November 2015

Windows Server 2008 and Data Execution Prevention

I was trying to install a SQL Server component onto a Windows Server 2008 R2 VM, for self-enablement, but kept hitting blockers, most of which were due to missing dependencies, including the Microsoft .NET Framework.

I finally obtained an up-do-date version of the latter here: -


specifically NDP452-KB2901907-x86-x64-AllOS-ENU.exe.

Having downloaded this, when I attempted to install, Windows kept throwing up exceptions similar to: -

dotNetFx40_Full_x86_x64 setup has encountered a problem and needs to close. We are sorry for the inconvenience.

with detailed traces such as: -

Problem signature:
  Problem Event Name: APPCRASH
  Application Name: NDP452-KB2901907-x86-x64-AllOS-ENU.exe
  Application Version: 4.5.51209.34209
  Application Timestamp: 52bb74a6
  Fault Module Name: StackHash_0a9e
  Fault Module Version: 0.0.0.0
  Fault Module Timestamp: 00000000
  Exception Code: c0000008
  Exception Offset: 7695c0ea
  OS Version: 6.1.7600.2.0.0.274.10
  Locale ID: 2057
  Additional Information 1: 0a9e
  Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
  Additional Information 3: 0a9e
  Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt


Problem signature:
  Problem Event Name: VSSetup
  Problem Signature 01: Microsoft .NET Framework 4 Setup
  Problem Signature 02: 4.0.30319
  Problem Signature 03: 10.0.30319.1
  Problem Signature 04: 1
  Problem Signature 05: unknown
  Problem Signature 06: None_UI_Interactive_Crash
  Problem Signature 07: 0xc0000005
  Problem Signature 08: 0
  Problem Signature 09: unknown
  OS Version: 6.1.7600.2.0.0.274.10
  Locale ID: 2057

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt

From reading, it appeared that Data Execution Prevention (DEP) was getting in the way.

I read various posts online, and finally found this: -


which described how to disable DEP at boot-time: -


Once I did this, and rebooted, the .NET Framework installed without problems, which is nice.

Visual Studio Code - Wow 🙀

Why did I not know that I can merely hit [cmd] [p]  to bring up a search box allowing me to search my project e.g. a repo cloned from GitHub...