Friday, 14 July 2017

IBM BPM - "CWSCA8095W: Unable to find class..." seen during serviceDeploy process

I'm tinkering with IBM BPM Advanced again, specifically taking an export of an SCA module, built using IBM Integration Designer and exported as a Project Interchange (PI) file, and attempting to "compile" it ready for deploying to an external IBM BPM 8.57 environment.

Having exported the PI file, and made it available to the BPM box, I then ran serviceDeploy.sh against it: -

/opt/ibm/WebSphere/AppServer/bin/serviceDeploy.sh OracleTest.zip 

which returned: -

The workbench is starting in /home/wasadmin/15d428ea0a1.
The workspace is initializing.
OracleTest.zip was successfully imported into the workspace.
The OracleTestApp project is being created.
The OracleTestWeb project is being created.
The OracleTest project is building.
OracleTest is being validated.

The following 36 warning messages were reported during deployment:

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.jdbc.JDBCInteractionSpec, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.jdbc.JDBCInteractionSpec, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.jdbc.JDBCInteractionSpec, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultSelectorImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8085W: The fault selector of com.ibm.j2ca.extension.emd.runtime.WBIFaultSelectorImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.MatchingFaultDataBinding, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.MatchingFaultDataBinding type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.MatchingFaultDataBinding, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.MatchingFaultDataBinding type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA9537W: The fault binding of com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.jdbc.JDBCManagedConnectionFactory, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8043W: com.ibm.j2ca.jdbc.JDBCManagedConnectionFactory cannot be validated.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8095W: Unable to find class com.ibm.j2ca.jdbc.JDBCResourceAdapter, please make sure the class path is properly set up.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  CWSCA8082E: The resource adapter of the com.ibm.j2ca.jdbc.JDBCResourceAdapter type is missing in the class path or in the dependencies.
Resource:  toAndFromOracle.import
Location:        

Severity:  [warning]
Description:  XSD: The location 'JDBCASI.xsd' has not been resolved
Resource:  DaveConsultant.xsd
Location:       1


The OracleTestApp.ear application is being exported.
Deployment has completed.
The workspace is being deleted.


Now I've definitely done this before ….

… but, this time around, I'm also using a JDBC Resource Adapter (RA) as evidenced by the messages e.g.

CWSCA8082E: The resource adapter of the com.ibm.j2ca.jdbc.JDBCResourceAdapter type is missing in the class path or in the dependencies.

This provided a clue.

Next time around, I exported BOTH the SCA module AND the dependent project that contains the JDBC Resource Adapter code ( this was created for me when I dragged a JDBC Adapter component into my Assembly Diagram : -


For the record, this was the PI file first time around: -

-rwxr-xr-x   1 wasadmin wasadmins   31538 Jul 14 20:23 OracleTest.zip

and this was the version the second time around: -

-rwxr-xr-x   1 wasadmin wasadmins 5747285 Jul 14 20:30 OracleTest.zip

It looks slightly more podgy because it contains the RA code.

More importantly, the "compilation" process worked a treat: -

The workbench is starting in /home/wasadmin/15d42955f45.
The workspace is initializing.
OracleTest.zip was successfully imported into the workspace.
The OracleTestApp project is being created.
The OracleTestWeb project is being created.
The OracleTest project is building.
OracleTest is being validated.
The OracleTestApp.ear application is being exported.
Deployment has completed.
The workspace is being deleted.



java.sql.SQLException: Could not commit with auto-commit set on

I saw this earlier: -

[14/07/17 20:00:02:593 BST]     FFDC Exception:java.sql.SQLException SourceId:com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.commit ProbeId:587 Reporter:com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@964a1c09
java.sql.SQLException: Could not commit with auto-commit set on

in the FFDC logs for an IBM BPM 8.57 JVM: -

view /opt/ibm/WebSphereProfiles/AppSrv01/logs/ffdc/AppClusterMember1_72d880eb_17.07.14_20.00.02.5935101433318572951378.txt 

I am using Oracle 12c ( specifically 12.2.0.1.0  )

and am using the version of the Oracle JDBC drivers that ship with WAS 8.5.5.11: -

ls -altrc /opt/ibm/WebSphere/AppServer/jdbcdrivers/Oracle/

total 6632
-rw-r--r-- 1 wasadmin wasadmins 3389454 Jul 10 19:59 ojdbc6.jar
drwxr-xr-x 5 wasadmin wasadmins      45 Jul 10 19:59 ..
drwxr-xr-x 2 wasadmin wasadmins      40 Jul 10 19:59 .
-rw-r--r-- 1 wasadmin wasadmins 3397734 Jul 10 19:59 ojdbc7.jar


specifically: -

/opt/ibm/WebSphere/AppServer/java_1.7.1_64/jre/bin/java -jar /opt/ibm/WebSphere/AppServer/jdbcdrivers/Oracle/ojdbc6.jar -getversion

Oracle 12.1.0.1.0 JDBC 4.0 compiled with JDK6 on Thu_Apr_04_15:06:58_PDT_2013
#Default Connection Properties Resource
#Fri Jul 14 20:11:21 BST 2017


Source: Checking the Oracle JDBC Driver Version on a Weblogic Server

Thankfully, this IBM developerWorks Answers ( dwAnswers ) page: -


provides an answer: -

This kind of exceptions occur when the Oracle JDBC Driver (ojdbc6.jar) version 12 or above will be used. Version 12 and above of the driver is more strictly than earlier driver versions. You can solve the problem, by setting the jvm-argument:

•  -Doracle.jdbc.autoCommitSpecCompliant=false
on all affected servers.

as does this IBM Technote: -


Once I added the JVM property, and restarted the AppCluster, all was well.

For the record, this is what I now have in server.xml in the context of JVM arguments: -

    <jvmEntries xmi:id="JavaVirtualMachine_1499716654178" verboseModeClass="false" verboseModeGarbageCollection="true" verboseModeJNI="false" initialHeapSize="1536" maximumHeapSize="2560" runHProf="false" hprofArguments="" debugMode="false" debugArgs="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7777" genericJvmArguments="${IBMSCMX} ${IBMGCPOLICY_GENCON} ${IBMJITPMC} -Xmns256m -Xmnx768m -Xgc:preferredHeapBase=0x100000000 -Xdisableexplicitgc -Xss2048k -Dsun.net.http.allowRestrictedHeaders=true -Declipse.bundle.setTCCL=false  -Doracle.jdbc.autoCommitSpecCompliant=false" executableJarFileName="" disableJIT="false">

and, via the GUI: -



Tuesday, 11 July 2017

Bootstrap cannot be run against WebSphere:cell=PSCell1,node=Node2,server=dmgr because it is not a BPM deployment target.

Another thing that makes me go "Hmmmm" …

I'm running the process to bootstrap an IBM BPM 8.5.7 Process Server: -

/opt/ibm/WebSphereProfiles/Dmgr01/bin/bootstrapProcessServerData.sh - clusterName AppCluster

and I see this: -

Bootstraping data for server at /opt/ibm/WebSphereProfiles/Dmgr01 and logging into /opt/ibm/WebSphereProfiles/Dmgr01/logs/bootstrapProcesServerData.log

WASX7357I: By request, this scripting client is not connected to any server process. Certain configuration and application operations will be available in local mode.
Bootstrap cannot be run against WebSphere:cell=PSCell1,node=Node2,server=dmgr because it is not a BPM deployment target.


Now I'm not just offended that we can't get the spelling of "bootstrapping" right - even though I pointed the error out to someone in 2012 :-)

But what else can you see ?

Yeah, it took me a minute ….

I'd copied and pasted the command from a PDF and, thanks to the vagaries of PDFs, a space has crept into the command: -

/opt/ibm/WebSphereProfiles/Dmgr01/bin/bootstrapProcessServerData.sh - clusterName AppCluster

between the hyphen ( - ) and clusterName.

Once I fixed the command: -

/opt/ibm/WebSphereProfiles/Dmgr01/bin/bootstrapProcessServerData.sh -clusterName AppCluster

#LifeIsGood again

Bootstraping data into cluster AppCluster and logging into /opt/ibm/WebSphereProfiles/Dmgr01/logs/bootstrapProcesServerData.AppCluster.log

WASX7357I: By request, this scripting client is not connected to any server process. Certain configuration and application operations will be available in local mode.
Activating snapshot 8.5.7.0 in process app TWP
Activating snapshot done: 8.5.7.0 in process app TWP
Activating snapshot 8.5.7.0 in process app SYSRP
Activating snapshot done: 8.5.7.0 in process app SYSRP
'BootstrapProcessServerData admin command completed successfully.....'

ORA-12514, TNS:listener does not currently know of service requested in connect descriptor

I'm tinkering with a new Oracle 12C build, using it as a database for an IBM BPM Advanced 8.5.7 environment.

However, something seems to have gone awry with my WAS -> Oracle configuration, as I see this: -

[11/07/17 06:58:16:482 BST] 000000f1 DataSourceCon E   DSRA8040I: Failed to connect to the DataSource "".  Encountered java.sql.SQLException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
  DSRA0010E: SQL State = 08006, Error Code = 12,514


in my Node Agent SystemOut.log, when I test a data source connection, and this in the ISC: -


I checked the Oracle listener: -

lsnrctl services

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 11-JUL-2017 07:02:01

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=bpm857.uk.ibm.com)(PORT=1521)))
Services Summary...
Service "orcl.uk.ibm.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:2 refused:0 state:ready
         LOCAL SERVER
Service "orclXDB.uk.ibm.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: bpm857.uk.ibm.com, pid: 8429>
         (ADDRESS=(PROTOCOL=tcp)(HOST=bpm857.uk.ibm.com)(PORT=12518))
The command completed successfully


netstat -aon | grep LISTEN | grep 1521

tcp6       0      0 :::1521                 :::*                    LISTEN      off (0.00/0/0)

telnet `hostname` 1521

Trying 192.168.153.132...
Connected to bpm857.uk.ibm.com.
Escape character is '^]'.
telnet>
quit
Connection closed.

and then checked the database itself: -

sqlplus / as sysdba

SQL> select value from v$parameter where name='service_names';

VALUE
————————————————————————————————————————
orcl.uk.ibm.com


cat /home/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /home/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = bpm857.uk.ibm.com)(PORT = 1521))


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = bpm857.uk.ibm.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.uk.ibm.com)
    )
  )


which explains a lot.

My JDBC data sources have the Oracle URL like this: -

jdbc:oracle:thin:@//bpm857.uk.ibm.com:1521/orcl

whereas they should be like this: -


Once I changed and saved the configuration, the Test Connection works SO much better: -


Saturday, 8 July 2017

Tinkering with Oracle 12c on Linux - will the fun ever stop ?

I'm going back through the process of learning how to install Oracle 12c on Red Hat Enterprise Linux 7.3.

One niggle that I saw post-install was this: -

sqlplus / as sysdba;

SQL*Plus: Release 12.1.0.2.0 Production on Sat Jul 8 05:23:05 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

ERROR:
ORA-12547: TNS:lost contact


During the installation, I'd seen reference to a missing dependency: -

/usr/bin/ld: cannot find -ljavavm12
collect2: error: ld returned 1 exit status
make: *** [/home/oracle/app/oracle/product/12.1.0/dbhome_1/rdbms/lib/oracle] Error 1


I dug about and found the missing artefact: -

/home/oracle/app/oracle/product/12.1.0/dbhome_1/javavm/jdk/jdk7/lib/libjavavm12.a

which I placed here: -

/home/oracle/app/oracle/product/12.1.0/dbhome_1/lib

via: -

ln -s /home/oracle/app/oracle/product/12.1.0/dbhome_1/javavm/jdk/jdk7/lib/libjavavm12.a /home/oracle/app/oracle/product/12.1.0/dbhome_1/lib

Having linked the binary, I then re-ran dbca to delete the original borked database ( there was, of course, no data therein ) and create a new working database :-)

Thursday, 6 July 2017

Someone Else's Blog - How to automatically remove meeting invitations from your IBM Lotus Notes Inbox after you have responded to them

It's always semi-annoyed me that Notes 9 doesn't automatically remove calendar invitations from my Inbox when I've processed them: -


I have to go and click the Remove From Folder button each and every time, which is a PITA.

Thankfully the legend Mr Mat Newman has a solution: -



He's amazing :-)

Wednesday, 5 July 2017

For the record, enabling Application Security in WebSphere Application Server

For context, I'm building an IBM Operational Decision Manager 8.9 environment, as part of a migration from an older version of ODM ( 8.0 ).

I needed to enable Application Security; Administrative Security was enabled when I created the profile: -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -create -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/management -profileName Dmgr01 -profilePath /opt/ibm/WebSphereProfiles/Dmgr01 -nodeName Dmgr -isDefault -enableAdminSecurity true -adminUserName wasadmin -adminPassword passw0rd

and the IBM Knowledge Centre didn't seem to give me a clue: -


Happily this blog post: -


gave me what I needed: -

Start WSAdmin Client

/opt/ibm/WebSphereProfiles/Dmgr01/bin/wsadmin.sh -lang jython -user wasadmin -password passw0rd

Validate whether Application Security is enabled

print AdminTask.isAppSecurityEnabled()

false

Enable Application Security

securityConfigID = AdminConfig.getid("/Security:/")
AdminConfig.modify(securityConfigID,[['appEnabled','true']])


Validate whether Application Security is enabled

print AdminTask.isAppSecurityEnabled()

true

Save and Sync

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()


Quit

quit

Job done

Note to self - Firefox and local connections

 Whilst trying to hit my NAS from Firefox on my Mac, I kept seeing errors such as:- Unable to connect Firefox can’t establish a connection t...