29 September 2017

JBAS015009: Scan found incompletely copied file content for deployment on JBoss 6.x

Seems I got back in business, so that means....new material to share!

While developing application packaged as .war and using some automation for app deployment to remote JBoss instance (be it somewhere in the cloud or local virtual machine), you might run into this error reported in JBoss console log.

JBAS015009: Scan found incompletely copied file content for deployment

I assume that you are using auto-deploy feature in your Jboss, when it is supposed to pick up changed artifact on the fly.

The error basically might mean two things: that your file might have got corrupted while transferring (which is rather unlikely, but worth checking) or just JBoss sees it "corrupted".

The latter can be caused by your .war file exceeding some threshold size, which triggers this awkward dependency: your automation starts transferring file, JBoss notices the changed file but as it hasn't finished transferring, auto-deploy recognizes it as "corrupted" and drops the ball (at least that happens in EAP Version 6.3.2.GA which I'm using) and never attempts to deploy again.

In my case this started happening when .war size jumped from 7.5M to 18M (adding some 10M heavy dependencies).

The way around this problem was increasing scan interval value from 5sec to 15sec in your Core -> Deployment scanners -> default setting screen:

which, I believe, gives enough time for complete scp file transfer between my IDE and JBoss virtual machine. Ever since, it has been working for me like a charm.

Hope this helps, good luck!


14 September 2015

Application on a separate custom port - Webspher Application Server 8.5

I've just spotted a question on developerworks forum whether it's possible to run one of the applications on Websphere Application Server on a separate, custom port. There's a way to achieve this and in this post I'm going to show how to do it.

1. First, we need to define a new port for our server. Go to Application servers -> your server -> Ports, anc click New....


Type in non-standard value (eg. 9081) and a custom name (WC_customPort)
Click OK and save the changes, and you will see your newly added port on the list:
But there's a small culprit now - we got the port, but "No associated transport" means that nothing really listens on the requests on this port. That's why we need to define a new transport chain for our port.

2. The new transport chain will essentially be identical to existing default transport chain. To create it we need to  go to Application servers -> Web container -> Web container transport chains:

Click New... and create on from webContainer template:


Click Next, and pick the existing port created in step 1. (as you can see, WAS could have made this for us in this place)

Confirm the data on the last screen and click Finish, save changes and you should have your new transport chain on the list:


We're almost ready: we've got the port and transport associated with it, but we still have no way to map our application to a different port, because we only have one default virtual host defined for standard 9080 port:


3. Let's create a new virtual host then:




Now, go again into custom_host, and go to Mime Aliases screen and define it to be 'any' (*) host, port 9081:


Click OK, save changes. The only thing remaining now is to map the application you want to use on custom port to this new virtual host. Go to Enterprise Applications > Your application > Virtual hosts and map it to custom_host:



All necessary changes have been made, so be sure you save them to server's config and restart the server. And there we go, after server reboot, we have two different applications on two different ports:



In this post I showed how to make J2EE application running on Websphere Application Server 8.5 use custom, non standard port along with other applications running on default web container port. I hope this helps you and if you have any questions, feel free to post it in comments.

Good day, and good luck to you!

11 March 2015

Eclipse (Rational) stuck on cleaning/building workspace forever

..or at least seems so.

Sometimes - usually with complex projects including mutiple sub-projects open in RAD/Eclipse - your IDE gets stuck on Building workspace or even Cleaning projects at various stages (in my case it was 100%) and despite Progress bar showing undergoing work, it would never end. Also, you are unable to close the IDE in a normal manner, only killing the process can end it and after restart, build/clean re-starts automatically up to no avail, to get you stuck again.

There a few things you can do about it:


  1. level: NEAT
    try starting RAD/Eclipse with -clean -clearPersistedState flags. it will cause removal of unused artifacts and rebuild the indexes
  2. level: ROUGH
    go to .metadata/.plugins/org.eclipse.core.resources/.root/.indexes and delete all contents (3 files) and restart your IDE. it will see indexes physically wiped so will rebuild them from the scratch
  3. level: VILLAIN
    go to .metadata\.plugins\org.eclipse.ui.workbench and rename workbench.xml to other name, like workbench.xml.bak . It will remove all existing workspace-lifetime artifacts and will revert you to default perspective after re-launch, but it seems to do wonders in terms of unblocking existing zombie artifacts
Just be careful, always do backups when messing with .metadata files in case IDE throws any nasty errors at you at the next re-start (yeah, it happens)

Good luck!

12 January 2015

Obscured by the cloud - why google hides functions in API docs ???

Just a quickie. I need to make a few Google Sheets scripts for some side projects, and struggle finding some basic low-level tools in Google API docs. For instance, you can't find String object documented....but it's still in there.

So I managed to successfully use function such as

toDateString
substring
indexOf

wondered why, and probable answer (not obvious to me) is that they are supported as a part of JavaScript which you can use in Google Script editor. Seems google just went so abstract in what they want developers to use form Google API services and apps that they dropped maintaining documentation for generic stuff like above. It causes some confusion, at least for me (I haven't been following any updates for devs from g's side).

Next time I will just remember.

Anyway, if you want to convert a cell contents which behind the scenes is stored by the sheet as:

Thu Dec 11 2014 01:00:00 GMT+0100 (CET)

to some more human readable form

use toDateString which yields

Mon Jan 12 2015

straight from JS: http://www.w3schools.com/jsref/jsref_todatestring.asp

or put his bit of code:

var month = data[row][col].getMonth() + 1;
var neatDate = data[row][col].getDate() + "/" + month +"/" + data[row][col].getFullYear();


good luck!




28 August 2014

ADMU3007E: Exception com.ibm.websphere.management.exception.AdminException: ADMU3027E: An instance of the server may already be running

So, I didn't went very far away from WebSphere in this one. Just yesterday one of my colleagues asked me for help while attempting to start nawely installed WAS on newly installed Linux OS.

He was getting standard "specified port busy" message and exceptions in the logs:

[8/27/14 13:17:48:979 CEST] 00000001 AdminTool     A   ADMU3028I: Conflict detected on port 8879.  Likely causes: a) An instance of the server dmgr is already running  b) some other process is using port 8879
[8/27/14 13:17:48:980 CEST] 00000001 AdminTool     A   ADMU3029I: Conflict detected on port 8879 for endpoint SOAP_CONNECTOR_ADDRESS of the server dmgr 
[8/27/14 13:17:48:980 CEST] 00000001 AdminTool     A   ADMU3027E: An instance of the server may already be running: dmgr
[8/27/14 13:17:48:981 CEST] 00000001 WsServerLaunc E   ADMU3002E: Exception attempting to process server dmgr
[8/27/14 13:17:48:981 CEST] 00000001 WsServerLaunc E   ADMU3007E: Exception com.ibm.websphere.management.exception.AdminException: ADMU3027E: An instance of the server may already be running: dmgr
at com.ibm.ws.management.tools.WsServerLauncher.runTool(WsServerLauncher.java:318)
at com.ibm.ws.management.tools.AdminTool.executeUtility(AdminTool.java:269)
at com.ibm.ws.management.tools.WsServerLauncher.main(WsServerLauncher.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.ws.bootstrap.WSLauncher.main(WSLauncher.java:277)

Usual (for the case) check of netstat -an | grep 8879 and ps -ef | grep dmgr didn't show any rogue or orphaned processes running in the system, so initially the cause was not apparent. But, I tried to start the server with -trace flag which gives you (sometimes) a lot of additional information on server startup process and.....we found the culprit:

[27.08.14 15:11:36:362 CEST] 00000001 ConnectorHelp >  getOpenConnectorPorts: false Entry
[27.08.14 15:11:36:362 CEST] 00000001 ConnectorHelp 3   testing host: fully_qualified_hostname, port: 8879
[27.08.14 15:11:36:362 CEST] 00000001 ConnectorHelp 3   trying host: fully_qualified_hostname, port: 8879
[27.08.14 15:11:36:366 CEST] 00000001 ConnectorHelp 3   determined host: fully_qualified_hostname, port: 8879  in use
[27.08.14 15:11:36:366 CEST] 00000001 AdminTool     A   ADMU3028I: Wykryto konflikt na porcie 8879.  Możliwe przyczyny: a) Instancja serwera dmgr została już uruchomiona.  b) Port 8879 jest używany przez inny proces.
[27.08.14 15:11:36:366 CEST] 00000001 AdminTool     A   ADMU3029I: Wykryto konflikt na porcie 8879 dla punktu końcowego SOAP_CONNECTOR_ADDRESS serwera dmgr
[27.08.14 15:11:36:367 CEST] 00000001 AdminTool     A   ADMU3027E: Możliwe, że działa już instancja tego serwera: dmgr
[27.08.14 15:11:36:367 CEST] 00000001 WsServerLaunc E   ADMU3002E: Wyjątek podczas próby przetworzenia serwera dmgr
[27.08.14 15:11:36:368 CEST] 00000001 WsServerLaunc E   ADMU3007E: Wyjątek com.ibm.websphere.management.exception.AdminException: ADMU3027E: Możliwe, że działa już instancja tego serwera: dmgr

so, only after using -trace those two key log lines appear, telling you what exactly host your jvm is trying to use to open sockets. Being sure no process occupies port 8879, I checked /etc/hosts and found there only:

127.0.0.1 localhost

entry. So there was no way WAS could resolve port 8879 on fully_qualified_hostname! I simply added:

127.0.0.1 fully_qualified_hostname 

there, saved, and the very next attempt to start the server was successful:

[27.08.14 15:11:36:371 CEST] 00000001 AdminTool     A   ADMU0111E: Program zakończył pracę z błędem: com.ibm.websphere.management.exception.AdminException: ADMU3027E: Możliwe, że działa już instancja tego serwera: dmgr
at com.ibm.ws.management.tools.WsServerLauncher.runTool(WsServerLauncher.java:318)
at com.ibm.ws.management.tools.AdminTool.executeUtility(AdminTool.java:269)
at com.ibm.ws.management.tools.WsServerLauncher.main(WsServerLauncher.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.ws.bootstrap.WSLauncher.main(WSLauncher.java:277)

[27.08.14 15:11:36:372 CEST] 00000001 AdminTool     3   Returning from auxiliary method issueMessage with return code: 111
[27.08.14 15:11:36:372 CEST] 00000001 AdminTool     A   ADMU0211I: Szczegóły dotyczące błędu można znaleźć w pliku: /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/logs/dmgr/startServer.log
[27.08.14 15:11:36:372 CEST] 00000001 AdminTool     3   Returning from auxiliary method issueMessage with return code: 211
[27.08.14 15:11:36:373 CEST] 00000001 AdminTool     3   Returning from executeUtility method with return code: -1
************ Start Display Current Environment ************
Host Operating System is Linux, version 3.10.0-123.el7.x86_64
Java version = 1.6.0, Java Compiler = j9jit26, Java VM name = IBM J9 VM
was.install.root = /opt/IBM/WebSphere/AppServer
user.install.root = /opt/IBM/WebSphere/AppServer/profiles/Dmgr01
Java Home = /opt/IBM/WebSphere/AppServer/java/jre
ws.ext.dirs = /opt/IBM/WebSphere/AppServer/java/lib:/opt/IBM/WebSphere/AppServer/classes:/opt/IBM/WebSphere/AppServer/lib:/opt/IBM/WebSphere/AppServer/installedChannels:/opt/IBM/WebSphere/AppServer/lib/ext:/opt/IBM/WebSphere/AppServer/web/help:/opt/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime
Classpath = /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/properties:/opt/IBM/WebSphere/AppServer/properties:/opt/IBM/WebSphere/AppServer/lib/startup.jar:/opt/IBM/WebSphere/AppServer/lib/bootstrap.jar:/opt/IBM/WebSphere/AppServer/java/lib/tools.jar:/opt/IBM/WebSphere/AppServer/lib/lmproxy.jar:/opt/IBM/WebSphere/AppServer/lib/urlprotocols.jar
Java Library path = /opt/IBM/WebSphere/AppServer/java/jre/lib/amd64/compressedrefs:/opt/IBM/WebSphere/AppServer/java/jre/lib/amd64:/opt/IBM/WebSphere/AppServer/lib/native/linux/x86_64/:/opt/IBM/WebSphere/AppServer/bin::/usr/lib
Orb Version = IBM Java ORB build orb626-20130112.01
Current trace specification = *=info
************* End Display Current Environment *************
[27.08.14 15:14:17:349 CEST] 00000001 ManagerAdmin  I   TRAS0017I: Początkowy stan śledzenia: *=info.
[27.08.14 15:14:17:402 CEST] 00000001 AdminTool     A   ADMU0128I: Uruchamianie narzędzia w oparciu o profil Dmgr01
[27.08.14 15:14:17:406 CEST] 00000001 AdminTool     A   ADMU3100I: Odczyt konfiguracji serwera: dmgr
[27.08.14 15:14:17:416 CEST] 00000001 ImplFactory   W   WSVR0072W: Niezadeklarowane przesłonięcie interfejsu com.ibm.websphere.cluster.topography.DescriptionManager implementacją com.ibm.ws.cluster.propagation.bulletinboard.BBDescriptionManager jest ignorowane
[27.08.14 15:14:17:563 CEST] 00000001 ModelMgr      I   WSVR0801I: Inicjowanie wszystkich modeli konfiguracji serwera
[27.08.14 15:14:19:761 CEST] 00000001 WorkSpaceMana A   WKSP0500I: Funkcja sprawdzania spójności konfiguracji obszaru roboczego: wyłączone.
[27.08.14 15:14:19:914 CEST] 00000001 AdminTool     A   ADMU3200I: Serwer został uruchomiony. Oczekiwanie na status inicjowania.
[27.08.14 15:14:41:275 CEST] 00000001 AdminTool     A   ADMU3000I: Serwer dmgr został otwarty dla e-biznesu. Identyfikator procesu to 29871


Hope this helps! Good luck!

30 June 2014

JavaScript [1] - Limiting text input to numbers only

As I have changed my professional direction a little bit, I'm finding new interesting topics to blog about. Namely, I've been moved to J2EE development project, vast mix of pure Java, Chordiant, ILOG, WAS and Oracle. Hence, I'm now focusing on code issues more than WebSphere&Security integration issues.

For the sake of continuity I'm not going to change blog name - I'm anyway "somewhere around" the original topic, and probably I will be back to it someday.

So, here's my first JavaScript hint - if you need to limit text input in your HTML form to numbers (decimals, with decimal point) only, you can do it like this:


  1. put together a nice piece of javascript validating what is being input:

  2. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script>
    $('#in').bind('input propertychange', function() {
        var text = $(this).val();
        var t2 = text.replace(/[\\A-Za-z!"£$%^&\-\)\(*+_={};:'@#~,Š\/<>\" "\?|`¬\]\[]/g,'');
        $(this).val(t2);
                                // line below is purely for presentation purposes - set value of paragraph named "result" to the valid input value
        $('#Result').text(t2); 
       
    });
    </script>
  3. test it out in a piece of complete HTML page to see how it works. important thing is you need to put the <script> part AFTER you put your input field into the document - otherwise the script won't be "bound" to the input:
<html>

<body>
<p>try the input</p>
<input type="text" id="in"><br>
<label id="Result"></label>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>

$('#in').bind('input propertychange', function() {
    var text = $(this).val();
    var t2 = text.replace(/[\\A-Za-z!"£$%^&\-\)\(*+_={};:'@#~,Š\/<>\" "\?|`¬\]\[]/g,'');
    $(this).val(t2);
$('#Result').text(t2);
 
});
</script>

</body>
</html>

Good luck! hope you will find this useful!

21 January 2014

DSRA0302E: XAException. Error code: XAER_RMERR (-3). Exception:

It's been published in several places, I guess but for the sake of simplicity:

Websphere 8.5, Oracle 11.2, datasource and transactions. You start your WAS server and see this in the logs:

[20.01.14 13:36:43:670 CET] 0000004f WSRdbXaResour E   DSRA0304E:  Wystapil wyjatek XAException. Tresc i szczególy wyjatku XAException: The cause is               : null.
[20.01.14 13:36:43:671 CET] 0000004f WSRdbXaResour E   DSRA0302E:  Wystapil wyjatek XAException.  Kod bledu: XAER_RMERR (-3).  Wyjatek: <null>
[20.01.14 13:36:43:671 CET] 0000004f XARminst      E   WTRN0037W: Usluga transakcji napotkala blad w operacji xa_recover. Zasób: com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@c6a9f4fb. Kod bledu: XAER_RMERR. Dane sledzenia stosu wyjatku: javax.transaction.xa.XAException
at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:709)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:1116)
at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:141)
at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:716)
at com.ibm.tx.jta.impl.PartnerLogTable.recover(PartnerLogTable.java:431)
at com.ibm.tx.jta.impl.RecoveryManager.resync(RecoveryManager.java:1534)
at com.ibm.tx.jta.impl.RecoveryManager.performResync(RecoveryManager.java:2267)
at com.ibm.ws.tx.jta.RecoveryManager.performResync(RecoveryManager.java:117)
at com.ibm.tx.jta.impl.RecoveryManager.run(RecoveryManager.java:2220)
at java.lang.Thread.run(Thread.java:772)

the key is:

javax.transaction.xa.XAException
at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:709)

as there are some pending, unrecoverable transaction in the transaction log. there are two ways to deal with it:
- start your server, nevermind your business applications not working, go to console, Application servers > server1 > Transaction service, then to Runtime tab and there you can see some options to manually manage pending troublesome transactions:


- or alternate: stop server, go to <profileroot>/tranlog/(respective path)/tranlog & partnerlog, delete tranlog and partnerlog files. start server.

Now, the way no. 2 is advisable for development systems, where any data loss is irrelevant. For production, proceed with care and try way no.1 first. Should it fail, go hardcore and delete tranlog.
Good luck.

29 November 2013

TSPM 7.1 installation - ADFS0124 Error occurred during upload to: upload/cells/nullNode01Cell/rtss/security-services.xmi. Exception: java.net.UnknownHostException: null

So, this time something about powerful security tool from IBM - Tivoli Security Policy Manager 7.1. This software let's you manage your security policies (surprisingly :) on various servers from single point of authoring and distribution (PAP, PDP). It can manage multiple policy enforcement points (PEPs) on the online and offline basis (online means pushing policies to PEPs on-the-go, while offline means that you can author policies on PAP and distribute them asynchronously, or even over portable memory (when your PEP is in DMZ or something like that). Above features are very well described on IBM pages, so let's cut this here.

The problem I had with installation was a bit surprising (believe me, I overcame numerous problems with this product before, that included temporarily giving up on installing TSPM 7.1 on 64bit Linux - which is possible only after adding 32bit compatibility libraries), so when this time it went smooth, up to some point, I was very disappointed to see it failed again.

Quick look in the log and voila:

AUDIT: ADFS0124
Nov 15, 2013 4:25:31 PM com.tivoli.am.fim.rte.config.impl.RuntimeConfigurationImpl putConfiguration
INFO: com.tivoli.am.fim.rte.config.exception.RuntimeConfigurationRepositoryException: +null
        at com.tivoli.am.fim.rte.config.impl.RuntimeConfigurationImpl.putConfiguration(RuntimeConfigurationImpl.java:491)
        at com.ibm.tspm.installer.platform.actions.ConfigReposUtils.putConfiguration(Unknown Source)
        at com.ibm.tspm.installer.platform.actions.ConfigReposUtils.putConfiguration(Unknown Source)
        at com.ibm.tspm.installer.platform.actions.ConfigReposUtils.pushFiles(Unknown Source)
        at com.ibm.tspm.installer.platform.actions.ConfigReposUtils.install(Unknown Source)
        at com.ibm.tspm.installer.platform.actions.ConfigReposUtils.run(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:618)
        at com.ibm.cic.agent.core.commonNativeInstallAdapter.Invoke$InvokeRunnable.run(Invoke.java:189)
        at java.lang.Thread.run(Thread.java:810)
Caused by: java.security.PrivilegedActionException: com.ibm.websphere.management.exception.RepositoryException: com.ibm.websphere.management.filetransfer.client.TransferFailedException: Error occurred during upload to: upload/cells/nullNode01Cell/rtss/security-services.xmi. Exception: java.net.UnknownHostException: null
        at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:4265)
        at com.tivoli.am.fim.rte.config.impl.RuntimeConfigurationImpl.putConfiguration(RuntimeConfigurationImpl.java:487)
        ... 11 more
Caused by: com.ibm.websphere.management.exception.RepositoryException: com.ibm.websphere.management.filetransfer.client.TransferFailedException: Error occurred during upload to: upload/cells/nullNode01Cell/rtss/security-services.xmi. Exception: java.net.UnknownHostException: null
        at com.ibm.ws.management.repository.client.JMXRemoteConfigRepositoryClient.upload(JMXRemoteConfigRepositoryClient.java:195)
        at com.ibm.ws.management.repository.client.JMXRemoteConfigRepositoryClient.create(JMXRemoteConfigRepositoryClient.java:204)
        at com.tivoli.am.fim.rte.config.impl.PrivilegedConfigCreateAction.run(PrivilegedConfigCreateAction.java:41)
        at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:4253)
        ... 12 more
Caused by: com.ibm.websphere.management.filetransfer.client.TransferFailedException: Error occurred during upload to: upload/cells/nullNode01Cell/rtss/security-services.xmi. Exception: java.net.UnknownHostException: null
        at com.ibm.ws.management.filetransfer.client.FileTransferClientImpl.uploadFile(FileTransferClientImpl.java:275)
        at com.ibm.ws.management.repository.client.JMXRemoteConfigRepositoryClient.upload(JMXRemoteConfigRepositoryClient.java:189)
        ... 15 more
Why would it have problem with hostname when I'm installing locally? Of course! Quick glance on /etc/hosts revealed that only loopback address has been defined, so no hostname could be resolved to any ip address, except for localhost. What is this needed for? Behind the scenes of Installation Manager, there's some work done over wsadmin (WAS administrative client), which essentially needs network infrastructure working fine, that includes possibility to resolve system's own hostname. If that fails, wsadmin has no point to connect to. 

Adding machine's own ip and hostname (both fully qualified and short) to /etc/hosts solved the issue.

Now, one interesting thing to add here is that problem can be seen even by looking oin WebSphere cell name. It is:

nullNode01Cell

and it is very wrong - it usually (by default, at least) should contain hostname - which in that case was missing and replaced by null. Of course you may fancy naming your machine "null" but that was not the case.

Ok, so good luck installing TSPM 7.1. 


05 November 2013

Android SDK - AVD virtual SDcard image for download (mksdcard Windows 7 x64)

I started some experiments with Android SDK recently, and came against the problem with creating virtual sdCard image for usage by the AVD (Android Virtal Device). Unfortunately mksdcard utility kept either returning errors or just doing nothing, I had to go some lengths and try to create sdcard image on linux 32bit. I did not find any relevant hits on google how to work around my issue (create virtual sd card on Windows 7 64bit with mksdcard).

Anyway, here it's - available for you to download, it has just 120Megs to be handy.

sdcard.img 

30 October 2013

CRIMA5096821AE during WebSphere 8 update/fixpack or other Installation Manager operations

You might happen to be updating your WAS 8 installation with a fixpack, and more, you may want to do it with iclm tool, instead of IM GUI.

First of all, you need to be sure which package you are choosing from the repo, and to be sure you need to read the content of the repository with:

./imcl listAvailablePackages -repositories source_repository1,source_repository2

also, you need to be sure what is the exact signature of the packages you have installed:

 ./imcl listInstalledPackages -features -long

After you make sure you pick the ones you have and need, you do this (exemplary packages):

./imcl install com.ibm.websphere.ND.v80_8.0.7.20130725_2248 -installationDirectory /opt/IBM/WebSphere8/AppServer -repositories /opt/was8inst –acceptLicense

And, you might run into that error (exact paths vary from your system):

CRIMA5096821AE ERROR: Error updating.

CRIMA5096821AE ERROR: Error getting file for installation: 'jar file com.ibm.was.backup.nsf_8.0.4.20120410_0000' not found in /var/tmp/IBM/IMShared..

CRIMA5096821AE 'jar file com.ibm.was.backup.nsf_8.0.4.20120410_0000' not found in /var/tmp/IBM/IMShared.

In that case, you might start to worry, because most probably somebody deleted IMShared directory from your filesystem. And this is very bad thing, since Installation Manager needs this to operate on already installed packages. It stores vital data for IM operation, such as sychronization repos, libraries etc.
DO NOT REMOVE IT or you won't be able to use your IM with existing installation (to be precise: particular software packages for which this particular IMShared directory was chosen, as this may vary between packages, using the same always is a default).

There's nothing but one thing you can do about it - if you happen to work in multiple machine environment, you might have different machine with identical software set installed (like prod/dev/test systems). In that case, you might try to copy IMShared directory from other machine with identical set and in MIGHT work. Not guaranteed, but sometimes it's a last resort.

Good luck!

Couple of links on the topic:
http://www-01.ibm.com/support/docview.wss?uid=swg21444138
http://pic.dhe.ibm.com/infocenter/install/v1r2/index.jsp?topic=/com.ibm.cic.agent.ui.doc/topics/c_install_location.html

02 October 2013

WAS 8.5 Trace missing - SLF4J: Class path contains multiple SLF4J bindings

It's been quite long since I posted here. Yet I have one new tip for you today:

The problem was that WebSphere 8.5 server did not recognize components to trace after application deployment, and after finally appearing in the traceable components tree did not log all expected output to trace log. As a result we wasn't able to troubleshoot the installation, not to mention that some of the log output was required by defined use cases of the designed solution.


After some search, asking here and there, a colleague of mine (thanks, Agnieszka!) noticed the following entries in the SystemOut.log file of the server when the troublesome application was deployed:


10/2/13 13:42:10:331 CEST] 00000042 SystemErr     R   SLF4J: Class path contains multiple SLF4J bindings.
[10/2/13 13:42:10:331 CEST] 00000042 SystemErr     R   SLF4J: Found binding in [bundleresource://243.fwk-1319487885:1/org/slf4j/impl/StaticLoggerBinder.class]
[10/2/13 13:42:10:331 CEST] 00000042 SystemErr     R   SLF4J: Found binding in [wsjar:file:/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/installedApps/localhostNode01Cell/xxxxx/lib/slf4j-jdk14-1.6.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
[10/2/13 13:42:10:332 CEST] 00000042 SystemErr     R   SLF4J: Found binding in [wsjar:file:/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/installedApps/localhostNode01Cell/xxxxx/lib/slf4j-log4j12-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
[10/2/13 13:42:10:332 CEST] 00000042 SystemErr     R   SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
[10/2/13 13:42:10:357 CEST] 00000042 SystemErr     R   SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]

and apparently this was causing the server to make wrong class pickup the logging (and hence missing output as that class missed appropriate configuration).

I came up with the idea of removing one of the conflicting classes from ear with console option "Remove file" and selecting whole jar (lib/slf4j-log4j12-1.7.2.jar). After application restart logging started to work as expected!


Good luck!


Env: WebSphere 8.5.0.2 ND, Linux rhel 6 64bit, application build with Maven (some predefined class includes defined).

29 May 2013

my technote has been published!

So, the single most popular post from my blog has been accepted as IBM Support technote.

You can ssee it here: User cannot log into console due to SRVE0260E error

Not a big thing, but still, nice :)

21 May 2013

CRRTC3505E: The following fetch destination cannot be deleted - Rational Build Engine

If you happen to have problem running your build in RTC and your builds end up with:


2013-05-21 10:29:15 [Jazz build engine] Deleting fetch destination "/db2data/BuildWorkspace" before fetching ...
com.ibm.team.build.common.TeamBuildException: CRRTC3505E: The following fetch destination cannot be deleted: "/db2data/BuildWorkspace". For more details, open the help system and search for CRRTC3505E.
at com.ibm.team.build.internal.engine.JazzScmPreBuildParticipant.preBuild(JazzScmPreBuildParticipant.java:218)
at com.ibm.team.build.internal.engine.BuildLoop.invokePreBuildParticipants(BuildLoop.java:881)
at com.ibm.team.build.internal.engine.BuildLoop$2.run(BuildLoop.java:685)
at java.lang.Thread.run(Thread.java:738)

try to kill existing engine process and restart it anew:

ps -ef | grep jbe

kill -9 <pid from above>

Good luck, leave a comment!

15 May 2013

libXm.so.3: cannot open shared object file & libXm.so.3: wrong ELF class: ELFCLASS64 (RRDI 2.0.1 installation)

Just today I wanted to install Rational Reporting for Development Intelligence (RRDI) 2.0.1 on 64bit SuSE 11. I got my repository, I got Installation Manager 1.6 (it's a must!) uznipped and started the ride.

The first error IM thrown at me was "Installation failed with code status =127" and investigation in the IM log files (/var/ibm/InstallationManager/logs/native/...) shown:

/opt/IBM/RRDI/install/cognos_bi/linuxi38664h/issetup: error while loading shared libraries: libXm.so.3: cannot open shared object file: No such file or directory

So, I looked google up and found that I'm missing some libraries for my system, namely:

Open Motif 2.2.4 Libraries (openmotif22-libs-2.2.4-189.1.i586.rpm)

After getting and installing it (for 64bit) I rerun the installation....and failed again. I found then some tip to link libraries from /usr/lib64 into /usr/lib and during next installation attempt I ran into:

/opt/IBM/RRDI/install/cognos_bi/linuxi38664h/issetup: error while loading shared libraries: libXm.so.3: wrong ELF class: ELFCLASS64

So, fine, some progress but different error :) Searched again, and found that this means wrong bitness of the libraries, so I went back to RPM search and got 32bit libraries, unlinked those 64bit from /usr/lib, installed the package and...this time success! I'm no Linux expert, but that occured a bit strange to me, that I eventually solved it by installing 32bit libs on 64bit system. Anyway, should you run into the same problem, perhaps this helps you.

Good luck, comments welcome!

15 March 2013

Google, don't take Reader away from us!

As you may know, Google wants to close Google Reader service, which is widely used and highly praised.

You may want to contribute to possible prolonging of this tool of choice of many internauts here.