rblog

What if your WebSphere application server won’t start?

There might be several reasons for that, most of them revealing themselves by information in the startServer.log. But earlier today when trying to start the deployment manager it just would not start, saying that I had to look into the startServer.log, but even if I tried several times no new info was to be found. “ps -ef | grep java” revealed no WebSphere processes running, so still no clues. So I gave up and wanted to create a PMR, thus needing to zip the logs-folder, but that process failed. So then I ended up issuing a df-command, realizing that due to some previous heap dumps there was no more disk space left, which caused the dmgr not being able to start. Cleared the disk and voila, back on track.

Then later I got a problem when applications would not install, the error message was

WASX7114E: Cannot create temporary file in directory “null”

Found this technote http://www-01.ibm.com/support/docview.wss?uid=swg21300016 which mentions the same message, but the solution is simpler than in this case. In fact the /tmp-folder was full with dump-files as well. So when cleaned up, application installation worked as a charm again.

Last week in Düsseldorf

Last week I attended the IBM WebSphere Technical Conference in Düsseldorf, Germany. As always a good event when it comes to the stuff I’m working with, and also good for networking.

Some pictures – first two from the airport train to Gardermoen

The first hotel room I got, missing something important…the bed

At Saturn trying 3D-TV. A bit cool, but if you ask me “Do you want it?” the question is no, just look how stupid the glasses are 🙂

Monday evening at Brauerei Schumacher trying the Schumacher Alt-beer

Traditional German food

Out walking next to the Rhein river

Sorting in Perl

I have had it with a menu in Build Forge – could not understand why the elements where not alphabetically sorted even though the Perl script generating the menu had a line like this

sort( @entries );

So Google to the rescue, I found this article about Perl Sorting Techniques http://www.perlfect.com/articles/sorting.shtml and just had to change the line of code to

@entries = sort { $a cmp $b } @entries;

Problem solved!

I am certified – RAFW

I am now allowed to call myself “IBM Certified Deployment Professional on Rational Automation Middleware Solutions“.

The Deployment Professional has extensive product knowledge of some or all of the IBM WebSphere family of products, IBM Rational Build Forge and IBM Rational Automation Framework for WebSphere and can independently perform configuration, training, and mentoring tasks on these products for deployment projects, with limited assistance from peers and vendor support services.

Extensive amount of RAFW usage the past few months and about two hours of preparations reading the Infocenter did the trick

Test Title: Test 000-055, Rational Automation for WebSphere
Start time: 10/14/2010 10:51:32 AM (GMT+0:00) (cst)
End time: 10/14/2010 11:21:41 AM (GMT+0:00) (cst)
Passing Score: 70%
Your Score: Pass (90%)

Xterm colors

If you are using Xterm I assume that every once in a while you get annoyed by the colors. Today I just had to do something about it and I found the script provided at http://www.steike.com/code/xterm-colors/ … lovely!!

WebGroup / virtual host not defined on WebSphere

Every once in a while I get the error
SRVE0255E: A WebGroup/Virtual Host to handle /KillerApp has not been defined
This is most often caused by me typing either the wrong port number (if no web server is configured) or a type in the context root of the web application. Currently following an internal course where I was supposed to deploy an app and find the url to it. According to what I know it should be http://localhost:9080/KillerApp since the WC_defaulthost of server1 was 9080. But after many minutes of struggle I kept getting the error again and again…so then Google…

IBM Redbook to the rescue, “WebSphere Application Server V6.1: Web Container Problem Determination“. It turned out to be a very simple, and also stupid solution on the problem. Stupid, since I had caused the problem myself. Some time ago I must have altered the default_host virtual host settings, so I had changed the host alias from 9080 to 9089.

This post at coderanch.com helped me find the info, see the last comment to the issue. It references the redpiece, not the redbook, so use my link instead.

How to format your Nokia

Use the code *#7370# to format your phone, resetting it to the fabric settings. Tried it on my Nokia E72 when the email application that comes along with the phone, and which my employee demands me to use in order to sync with Exchange, screwed up. Formatted and reconfigured, now it works as it should again. Nokia Support Forums to the rescue

Did also try out the Emoze messaging client http://www.emoze.com/. Works as a charm, but since the Exchange integration is based on Outlook Web Access (OWA) and not a directly Exchange-server integration, it is a violation of my employers email rules – and therefore not an option for me (it is blocked).

Shell script looping files in a directory, search and replace text in each file

Had to create a shell script that is looping through a set of XML files in a given directory. For each file it checks if the file has the attribute “CCSID“. It it does not have the attribute, it inserts the attribute just after the opening tag MQQueueConnectionFactory using Perl, and if it is there already it will update the value using a SED-command with a simple REGEX-pattern. Ok, I know that I could have used either SED or Perl for both, but I just borrowed from some other scripts I had, so that is the reason.

The REGEX-pattern ain’t no rocket science, but since I use REGEX only once in a while I find it quite hard to crate patterns, could not have done it without http://www.gskinner.com/RegExr/

  FILES=/path_to_directory/my-files*.xml
  for file in $FILES
  do
    # CCSID attribute present or not
    grep CCSID $file  >> /dev/null
    if [ $? -eq 1 ]
    then
      # Not present, insert
      perl -pi -e "s#<MQQueueConnectionFactory\s#<MQQueueConnectionFactory CCSID=\"1208\" #g" ${file}
    else
      # Present, update
      sed -i 's/CCSID="[0-9]*"/CCSID="1208"/' ${file}
    fi
  done 

Splitting text using Python

Created a script just to test how to split text using Python. First I have to split on the delimiter ‘__’, then on the ‘.’.

#!/usr/bin/python
propertyFilename="commons-ear__R01_INC_002.properties"
print propertyFilename
versionWithFileExt = propertyFilename.split('__')
print versionWithFileExt
version = versionWithFileExt[1].split('.')
print version
#And to get the final string
print version[0]

Not that hard, but what confused me when reading the Python documentation was that str.split() is deprecated. But as it turned out, that is in version 2.7, currently we are using 2.4, find out by issuing the command
ls -l /usr/bin/python*

From version 2.7 you should instead use stringObject.rpartition(sep), see more at about.com

Adding a description when installing an application using wsadmin

Using wsadmin to install an application I wanted to add a description to an application edition. Was not able to find any documentation telling me what are valid parameters to apply to the options string, so I just tried “-description”, returning the error

WASX7107E: Invalid options specified: "[description]"; valid options are:
CloneWorkClassClientTask
MapModulesToServers
BindJndiForEJBNonMessageBinding
BindJndiForEJBMessageBinding
MapEJBRefToEJB
MapWebModToVH
CtxRootForWebMod
EnsureMethodProtectionFor20EJB
MapSharedLibForMod
SharedLibRelationship
JSPCompileOptions
JSPReloadForWebMod
CustomActivationPlan
GetServerName
preCompileJSPs
nopreCompileJSPs
distributeApp
nodistributeApp
useMetaDataFromBinary
nouseMetaDataFromBinary
deployejb
nodeployejb
createMBeansForResources
nocreateMBeansForResources
reloadEnabled
noreloadEnabled
deployws
nodeployws
processEmbeddedConfig
noprocessEmbeddedConfig
allowDispatchRemoteInclude
noallowDispatchRemoteInclude
allowServiceRemoteInclude
noallowServiceRemoteInclude
useAutoLink
nouseAutoLink
usedefaultbindings
defaultbinding.force
allowPermInFilterPolicy
noallowPermInFilterPolicy
verbose
update
update.ignore.old
update.ignore.new
installed.ear.destination
appname
edition
edition.desc
reloadInterval
validateinstall
filepermission
buildVersion
blaname
asyncRequestDispatchType
deployejb.rmic
deployejb.dbtype
deployejb.dbschema
deployejb.classpath
deployejb.dbaccesstype
deployejb.sqljclasspath
deployejb.complianceLevel
deployws.classpath
deployws.jardirs
defaultbinding.datasource.jndi
defaultbinding.datasource.username
defaultbinding.datasource.password
defaultbinding.cf.jndi
defaultbinding.cf.resauth
defaultbinding.ejbjndi.prefix
defaultbinding.virtual.host
defaultbinding.strategy.file
filepermission
target
server
node
cell
cluster
contextroot
custom
installed.ear.destination

So, in order to get the information, just create an error 🙂

Hjem