Quantcast
Channel: A Portal to a Portal
Viewing all 1851 articles
Browse latest View live

WebSphere continuous delivery offerings provide functional and usability enhancements for 2Q 2017

$
0
0
As organizations increase their pace of digital transformation and the transition to a hybrid cloud world, WebSphere offerings can help facilitate this pace of change with our quarterly cadence of continuous delivery enhancements.

This recurring blog will summarize these deliverables each quarter, the new and updated functionality that they provide, and offer references for more detailed information.

Before we look at Liberty and WAS enhancements, here are two new updates we're excited share:

• IBM launched Microservice Builder, a new tool that provides your organization with a complete user experience for creating, testing and deploying applications.. Learn more about Microservice Builder here.
• We have strengthened IBM Cloud Product Insights with a range of enhancements. Check out this blog post for all of the latest updates.


plus this: -

Today, enterprises need a way to securely develop and deploy containerized applications with the flexibility to run in both a public cloud and on-premises system. We built Microservice Builder to help you solve this challenge. The new tool provides your organization with a complete user experience for creating, testing and deploying applications.
Microservice Builder includes everything a business needs to focus on application development rather than the framework. It provides beta binaries to support building and testing environments, and low-touch development-to-deployment experience with simplification of DevOps tasks.




There was an error connecting to the Apple ID server

$
0
0
I've been seeing this repeatedly this evening: -


on both macOS and iOS devices.

What was strange was that I was able to log into https://appleid.apple.com/#!&page=signin without problems.

After some trial and error, I realised that, for some reason, my home broadband router was somehow blocking the connection.

I proved this, on an iPhone, by turning off WiFi and using 3G instead. I proved the same on an iPad and on a Mac, by connecting to a different broadband connection.

Weird or what ?

More about the killall command, in the context of WebSphere Application Server

$
0
0
Whilst creating a pair of WebSphere Application Server (WAS) profiles: -

/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

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -create -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/managed -profileName AppSrv01 -profilePath /opt/ibm/WebSphereProfiles/AppSrv01 -nodeName Node1


I saw this: -

INSTCONFPARTIALSUCCESS: The profile now exists, but errors occurred. For more information, consult /opt/ibm/WebSphere/AppServer/logs/manageprofiles/Dmgr01_create.log.

and: -

INSTCONFPARTIALSUCCESS: The profile now exists, but errors occurred. For more information, consult /opt/ibm/WebSphere/AppServer/logs/manageprofiles/AppSrv01_create.log.

When I checked the logs: -

cat /opt/ibm/WebSphere/AppServer/logs/manageprofiles/Dmgr01_create.log |grep Exception

I saw this: -

  <method>logException</method>
  <message>Exception was thrown, type of exception is: class org.apache.tools.ant.BuildException</message>
  <method>logException</method>
  <message>The exception message is: Execute failed: java.io.IOException: Cannot run program "killall" (in directory "/opt/ibm/WebSphere/AppServer/profileTemplates/management/actions"): error=2, No such file or directory</message>
  <method>logException</method>
  <message>The translated exception message is: Execute failed: java.io.IOException: Cannot run program "killall" (in directory "/opt/ibm/WebSphere/AppServer/profileTemplates/management/actions"): error=2, No such file or directory</message>
  <method>logException</method>
  <method>logException</method>
  <message>/opt/ibm/WebSphere/AppServer/profileTemplates/management/actions/createProfileShortCut2StartMenuMgmt.ant:792: Execute failed: java.io.IOException: Cannot run program "killall" (in directory "/opt/ibm/WebSphere/AppServer/profileTemplates/management/actions"): error=2, No such file or directory
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
Caused by: java.io.IOException: Cannot run program "killall" (in directory "/opt/ibm/WebSphere/AppServer/profileTemplates/management/actions"): error=2, No such file or directory
Caused by: java.io.IOException: error=2, No such file or directory
--- Nested Exception ---
java.io.IOException: Cannot run program "killall" (in directory "/opt/ibm/WebSphere/AppServer/profileTemplates/management/actions"): error=2, No such file or directory
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
Caused by: java.io.IOException: error=2, No such file or directory


which ties up nicely with an earlier blog post : -


So it looks like RHEL 7.3 has dropped the killall command from the default installation - or, to be more accurate, my RHEL Gold Master VM doesn't have killall therein.

So I installed killall : -

yum install -y psmisc

cleaned up the old profiles: -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -deleteAll

INSTCONFPARTIALSUCCESS: The profiles no longer exist, but errors occurred. For more information, consult /opt/ibm/WebSphere/AppServer/logs/manageprofiles/deleteAll.log.

rm -Rf /opt/ibm/WebSphereProfiles/

and then recreated the profiles: -

/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

INSTCONFSUCCESS: Success: Profile Dmgr01 now exists. Please consult /opt/ibm/WebSphereProfiles/Dmgr01/logs/AboutThisProfile.txt for more information about this profile.

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -create -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/managed -profileName AppSrv01 -profilePath /opt/ibm/WebSphereProfiles/AppSrv01 -nodeName Node1

INSTCONFSUCCESS: Success: Profile AppSrv01 now exists. Please consult /opt/ibm/WebSphereProfiles/AppSrv01/logs/AboutThisProfile.txt for more information about this profile.

which is nice :-)

For the record, enabling Application Security in WebSphere Application Server

$
0
0
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

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

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

$
0
0
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 :-)

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

$
0
0
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: -


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

$
0
0
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.....'


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

$
0
0
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: -



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

$
0
0
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.



CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/TeamWorksDB

$
0
0
This follows on from an earlier post: -


Having updated my JDBC data sources to reflect the correct Oracle service name: -


I'm now seeing the following warning: -

[14/07/17 20:07:17:855 BST] 000000f5 ConfigReader  W com.ibm.bpm.config.util.ws.ConfigReader getDatabaseInfo CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/TeamWorksDB. It is assumed that the correct Oracle service name or SID is orcl.uk.ibm.com rather than orcl.

in the SystemOut.log for the AppCluster members.

The IBM BPM Knowledge Center has a solution: -

CWMCB0012W   An inconsistent configuration has been detected for data source 0. It is assumed that the correct Oracle service name or SID is 1 rather than 2.

Explanation

An IBM BPM data source has been manually modified rather than updated using the "BPMConfig -update -dataSource" command. The resulting configuration is inconsistent.
User response

Export the IBM BPM deployment environment configuration and fix the data source configuration by running the "BPMConfig -update -dataSource" command.

Following the advice therein, I exported the BPM configuration: -

/opt/ibm/WebSphere/AppServer/bin/BPMConfig.sh -export -profile Dmgr01 -de De1 -outputDir /tmp/De1

Logging to file /opt/ibm/WebSphere/AppServer/logs/config/BPMConfig_20170714-203920.log.
CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/WPSDB. It is assumed that the correct Oracle service name or SID is orcl.uk.ibm.com rather than orcl.
CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/ECMDBXA. It is assumed that the correct Oracle service name or SID is orcl.uk.ibm.com rather than orcl.
CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/CommonDB. It is assumed that the correct Oracle service name or SID is orcl.uk.ibm.com rather than orcl.
CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/BPEDB. It is assumed that the correct Oracle service name or SID is orcl.uk.ibm.com rather than orcl.
CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/ECMDB. It is assumed that the correct Oracle service name or SID is orcl.uk.ibm.com rather than orcl.
CWMCB0012W: An inconsistent configuration has been detected for data source jdbc/SharedDb. It is assumed that the correct Oracle service name or SID is orcl.uk.ibm.com rather than orcl.
The 'BPMConfig.sh -export -profile Dmgr01 -de De1 -outputDir /tmp/De1' command completed successfully.

and then updated the Data Source configuration: -

/opt/ibm/WebSphere/AppServer/bin/BPMConfig.sh -update -dataSource /tmp/De1/De1.properties 

Logging to file /opt/ibm/WebSphere/AppServer/logs/config/BPMConfig_20170714-204136.log.
Saving configuration changes...
The 'BPMConfig.sh -update -dataSource /tmp/De1/De1.properties' command completed successfully.


and then re-exported the configuration to check that all was good: -

/opt/ibm/WebSphere/AppServer/bin/BPMConfig.sh -export -profile Dmgr01 -de De1 -outputDir /tmp/Foobar

Logging to file /opt/ibm/WebSphere/AppServer/logs/config/BPMConfig_20170714-204220.log.
The 'BPMConfig.sh -export -profile Dmgr01 -de De1 -outputDir /tmp/Foobar' command completed successfully.


So that's all good then :-)

TypeError: __add__ nor __radd__ defined for these operands

$
0
0
Whilst scripting the configuration of the WebSphere Application Server transaction/compensation/partner logs into an Oracle database: -

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

I saw this: -

WASX7209I: Connected to process "dmgr" on node Dmgr using SOAP connector;  The type of process is: DeploymentManager
WASX7017E: Exception received while running file "tranlogs.jy"; exception information: com.ibm.bsf.BSFException: exception from Jython:
Traceback (innermost last):
  File "<string>", line 18, in ?
TypeError: __add__ nor __radd__ defined for these operands


Last time I saw this error ( 2012 ), it was user error.

I checked my script ( specifically line 18 as per the exception ) : -

datasource=AdminTask.createDatasource(provider, '[-name '+clusterName+'_Tranlogs -jndiName jdbc/'+clusterName+'_Tranlogs -dataStoreHelperClassName com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper -containerManagedPersistence true -componentManagedAuthenticationAlias '+j2cAlias+' -configureResourceProperties [[URL java.lang.String jdbc:oracle:thin:@//'+dbHost+':'+dbPort+'/'+dbName+']]]')

Looking at the concatenation of three strings ( dbHost, dbPort and dbName ) gave me a clue, and I checked the variables, and found: -

dbPort=1521

In other words, I'd defined it as an integer whereas Jython was expected a string.

Once I changed it: -

dbPort='1521'

the script ran without errors.

XAException occurred. Error code is: XAER_RMERR (-3). Exception is:

$
0
0
I'm tinkering with WebSphere Application Server, underlying IBM BPM Advanced, in the context of transaction/compensation/partner log recovery.

In this scenario, I'm placing these logs into a database, Oracle 12c.

It's been a useful - and interesting - learning curve, and I've pretty much proved/tested the concept.

I did, however, see one issue today; specifically, these messages: -

[16/07/17 13:34:06:748 BST] 00000074 XARecoveryDat A   WTRN0151I: Preparing to call xa recover on XAResource: dave
[16/07/17 13:34:06:866 BST] 00000074 WSRdbXaResour E   DSRA0304E:  XAException occurred. XAException contents and details are: "".
[16/07/17 13:34:06:866 BST] 00000074 WSRdbXaResour E   DSRA0302E:  XAException occurred.  Error code is: XAER_RMERR (-3).  Exception is: <null>
[16/07/17 13:34:06:866 BST] 00000074 XARminst      E   WTRN0037W: The transaction service encountered an error on an xa_recover operation. The resource was com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@35d8b386. The error code was XAER_RMERR. The exception stack trace follows: javax.transaction.xa.XAException
at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:727)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:1111)
at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:141)
at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:723)
at com.ibm.tx.jta.impl.PartnerLogTable.recover(PartnerLogTable.java:432)
at com.ibm.tx.jta.impl.RecoveryManager.resync(RecoveryManager.java:1544)
at com.ibm.tx.jta.impl.RecoveryManager.performResync(RecoveryManager.java:2286)
at com.ibm.ws.tx.jta.RecoveryManager.performResync(RecoveryManager.java:119)
at com.ibm.tx.jta.impl.RecoveryManager.run(RecoveryManager.java:2239)
at java.lang.Thread.run(Thread.java:809)


appearing in the SystemOut.log for one of my cluster members - AppCluster.

This IBM Knowledge Center article: -


<snip>
Problem

When WebSphere Application Server attempts to recover Oracle database transactions, the transaction service issues the following exception:

WTRN0037W: The transaction service encountered an error on an xa_recover operation. 
The resource was com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@1114a62. 
The error code was XAER_RMERR. The exception stack trace follows: 
javax.transaction.xa.XAException
at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:726)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:954)
at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:137)
at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:609)
at com.ibm.ws.Transaction.JTA.PartnerLogTable.recover(PartnerLogTable.java:511)
at com.ibm.ws.Transaction.JTA.RecoveryManager.resync(RecoveryManager.java:1784)
at com.ibm.ws.Transaction.JTA.RecoveryManager.run(RecoveryManager.java:2241)

Cause

Oracle requires services such as the WebSphere Application Server transaction service to have special permissions for performing transaction recoveries.

Solution

As user SYS, run the following commands on your Oracle server:

grant select on pending_trans$ to public;
grant select on dba_2pc_pending to public;
grant select on dba_pending_transactions to public;
grant execute on dbms_system to <user>;

User is a user ID in the application server that is authorized to perform transaction recovery for the XA data source. If you have not authorized any user IDs to perform transaction recovery, the application server uses the login alias for the data source as the user ID.
This problem is mentioned under Oracle bug: 3979190. Running the preceding commands solves the problem.
</snip>

Following the KC article, I updated the Oracle DB permissions: -

sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sun Jul 16 13:20:39 2017

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

Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production


grant select on pending_trans$ to public;

Grant succeeded.

grant select on dba_2pc_pending to public;

Grant succeeded.

grant select on dba_pending_transactions to public;

Grant succeeded.

grant execute on dbms_system to cmnuser;

Grant succeeded.

and then restarted the AppCluster.

Let's see how it goes, but it's looking good so far.

WebSphere Application Server - Transaction Logs - getting it wrong

$
0
0
I do need to write a long-form article about this, but I've been on a voyage of discovery configuring AND testing WAS transaction recovery, by placing the transaction/compensation/partner logs in an Oracle 12c database.

This is in the context of an IBM Business Process Manager Advanced environment.

During the process, I saw this in the SupCluster logs ( specifically the second cluster member ) : -

SupClusterMember2/SystemOut.log:[16/07/17 11:53:47:332 BST] 00000001 WASSessionCor I SessionProperties shouldSetAndDoLogging SESN0169I: Session Manager found the custom property InvalidateOnUnauthorizedSessionRequestException with value true.
SupClusterMember2/SystemOut.log:[16/07/17 11:59:40:316 BST] 0000004d SQLMultiScope I   CWRLS0009E: Details of recovery log failure: Another server has locked the HA lock row, com.ibm.ws.recoverylog.spi.InternalLogException: Another server has locked the HA lock row
SupClusterMember2/SystemOut.log:[16/07/17 11:59:40:319 BST] 0000004d SQLMultiScope E   CWRLS0024E: Exception caught during recovery! Another server has locked the HA lock row, com.ibm.ws.recoverylog.spi.InternalLogException: Another server has locked the HA lock row
SupClusterMember2/SystemOut.log:[16/07/17 11:59:40:324 BST] 0000004d SQLMultiScope A   WTRN0107W: Caught non-SQLException Throwable when forcing SQL RecoveryLog tranlog for server PSCell1\Node2\SupClusterMember2 Throwable: Another server has locked the HA lock row, com.ibm.ws.recoverylog.spi.InternalLogException: Another server has locked the HA lock row
SupClusterMember2/SystemOut.log:[16/07/17 11:59:40:333 BST] 0000004d SQLMultiScope A   WTRN0100E: Cannot recover from SQLException when forcing SQL RecoveryLog tranlog for server PSCell1\Node2\SupClusterMember2 Exception: Another server has locked the HA lock row, com.ibm.ws.recoverylog.spi.InternalLogException: Another server has locked the HA lock row


The problem was a PEBCAK, in that I'd obviously misconfigured things.

I validated my WAS configuration: -

cat /opt/ibm/WebSphereProfiles/Dmgr01/config/cells/PSCell1/nodes/Node1/serverindex.xml | grep -i recoveryLog

    <recoveryLog xmi:id="RecoveryLog_1500062274540" transactionLogDirectory="custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/AppCluster_Tranlogs,tablesuffix=App1" compensationLogDirectory="custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/AppCluster_Tranlogs,tablesuffix=App1" compensationLogFileSize="5"/>
    <recoveryLog xmi:id="RecoveryLog_1500062279192" transactionLogDirectory="custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/SupCluster_Tranlogs,tablesuffix=Sup1"/>

cat /opt/ibm/WebSphereProfiles/Dmgr01/config/cells/PSCell1/nodes/Node2/serverindex.xml | grep -i recoveryLog

    <recoveryLog xmi:id="RecoveryLog_1500062274432" transactionLogDirectory="custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/AppCluster_Tranlogs,tablesuffix=App2" compensationLogDirectory="custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/AppCluster_Tranlogs,tablesuffix=App2" compensationLogFileSize="5"/>
    <recoveryLog xmi:id="RecoveryLog_1500062279152" transactionLogDirectory="custom://com.ibm.rls.jdbc.SQLRecoveryLog?datasource=jdbc/SupCluster_Tranlogs,tablesuffix=Sup2"/>


to ensure that I : -

(a) was using the right datasources for the right clusters ( AppCluster has both Transaction and Compensation logs, whereas SupCluster only has Transaction logs )
(b) had suitably incremented the suffix - App1 or Sup1 for member 1, App2 or Sup2 for member 2

Finally, as this was a TEST environment, I dropped the tables: -

DROP TABLE CMNUSER.WAS_TRAN_LOGAPP1;
DROP TABLE CMNUSER.WAS_PARTNER_LOGAPP1;
DROP TABLE CMNUSER.WAS_COMP_LOGAPP1;
DROP TABLE CMNUSER.WAS_TRAN_LOGAPP2;
DROP TABLE CMNUSER.WAS_PARTNER_LOGAPP2;
DROP TABLE CMNUSER.WAS_COMP_LOGAPP2;
DROP TABLE CMNUSER.WAS_TRAN_LOGSUP1;
DROP TABLE CMNUSER.WAS_PARTNER_LOGSUP1;
DROP TABLE CMNUSER.WAS_COMP_LOGSUP1;
DROP TABLE CMNUSER.WAS_TRAN_LOGSUP2;
DROP TABLE CMNUSER.WAS_PARTNER_LOGSUP2;
DROP TABLE CMNUSER.WAS_COMP_LOGSUP2;


and recreated them: -

CREATE TABLE CMNUSER.WAS_TRAN_LOGAPP1(
 SERVER_NAME VARCHAR(128),
 SERVICE_ID SMALLINT,
 RU_ID NUMBER(19),
 RUSECTION_ID NUMBER(19),
 RUSECTION_DATA_INDEX SMALLINT,
 DATA BLOB);

CREATE TABLE CMNUSER.WAS_PARTNER_LOGAPP1(
 SERVER_NAME VARCHAR(128),
 SERVICE_ID SMALLINT,
 RU_ID NUMBER(19),
 RUSECTION_ID NUMBER(19),
 RUSECTION_DATA_INDEX SMALLINT,
 DATA BLOB);

CREATE TABLE CMNUSER.WAS_COMP_LOGAPP1(
 SERVER_NAME VARCHAR(128),
 SERVICE_ID SMALLINT,
 RU_ID NUMBER(19),
 RUSECTION_ID NUMBER(19),
 RUSECTION_DATA_INDEX SMALLINT,
 DATA BLOB);

 CREATE TABLE CMNUSER.WAS_TRAN_LOGAPP2(
 SERVER_NAME VARCHAR(128),
 SERVICE_ID SMALLINT,
 RU_ID NUMBER(19),
 RUSECTION_ID NUMBER(19),
 RUSECTION_DATA_INDEX SMALLINT,
 DATA BLOB);

CREATE TABLE CMNUSER.WAS_PARTNER_LOGAPP2(
 SERVER_NAME VARCHAR(128),
 SERVICE_ID SMALLINT,
 RU_ID NUMBER(19),
 RUSECTION_ID NUMBER(19),
 RUSECTION_DATA_INDEX SMALLINT,
 DATA BLOB);

CREATE TABLE CMNUSER.WAS_COMP_LOGAPP2(
 SERVER_NAME VARCHAR(128),
 SERVICE_ID SMALLINT,
 RU_ID NUMBER(19),
 RUSECTION_ID NUMBER(19),
 RUSECTION_DATA_INDEX SMALLINT,
 DATA BLOB);

 CREATE TABLE CMNUSER.WAS_TRAN_LOGSUP1(
  SERVER_NAME VARCHAR(128),
  SERVICE_ID SMALLINT,
  RU_ID NUMBER(19),
  RUSECTION_ID NUMBER(19),
  RUSECTION_DATA_INDEX SMALLINT,
  DATA BLOB);

 CREATE TABLE CMNUSER.WAS_PARTNER_LOGSUP1(
  SERVER_NAME VARCHAR(128),
  SERVICE_ID SMALLINT,
  RU_ID NUMBER(19),
  RUSECTION_ID NUMBER(19),
  RUSECTION_DATA_INDEX SMALLINT,
  DATA BLOB);

 CREATE TABLE CMNUSER.WAS_COMP_LOGSUP1(
  SERVER_NAME VARCHAR(128),
  SERVICE_ID SMALLINT,
  RU_ID NUMBER(19),
  RUSECTION_ID NUMBER(19),
  RUSECTION_DATA_INDEX SMALLINT,
  DATA BLOB);

  CREATE TABLE CMNUSER.WAS_TRAN_LOGSUP2(
   SERVER_NAME VARCHAR(128),
   SERVICE_ID SMALLINT,
   RU_ID NUMBER(19),
   RUSECTION_ID NUMBER(19),
   RUSECTION_DATA_INDEX SMALLINT,
   DATA BLOB);

  CREATE TABLE CMNUSER.WAS_PARTNER_LOGSUP2(
   SERVER_NAME VARCHAR(128),
   SERVICE_ID SMALLINT,
   RU_ID NUMBER(19),
   RUSECTION_ID NUMBER(19),
   RUSECTION_DATA_INDEX SMALLINT,
   DATA BLOB);

  CREATE TABLE CMNUSER.WAS_COMP_LOGSUP2(
   SERVER_NAME VARCHAR(128),
   SERVICE_ID SMALLINT,
   RU_ID NUMBER(19),
   RUSECTION_ID NUMBER(19),
   RUSECTION_DATA_INDEX SMALLINT,
   DATA BLOB);

And all is well.

From a testing perspective, I've created a SCA module which uses a JDBC Resource Adapter to create/update/read data from an Oracle database table.

Again, that's for a future long-form article ….

ilog.rules.teamserver.model.IlrConnectException Caused by: java.lang.NullPointerException

$
0
0
As one of my many spinning threads, I've been tinkering with the migration of an IBM Operational Decision Manager (ODM) environment from version 8.0 ( circa 2012 ) to version 8.9 ( circa 2017 ).

In part, this involves running some SQL scripts to migrate the old data to the new environment.

This is especially relevant for the Decision Center, which is the Rules authoring environment, aka the Source Code Management (SCM) system-of-record.

The Decision Center, also known as the Team Server ( reflecting the product's heritage as iLog JRules ) or Rule Team Server or RTS, is based upon a database.

Therefore, the first step is to BACKUP the existing database ( RTSDB, in my case ) from the old/source system.

One benefit of the migration is that it's effectively side-by-side, meaning that you leave the old source system alone, and build a new, parallel environment into which the data ( Rules etc. ) is restored.

In my case, I'm using IBM DB2, but other databases are available.

The process is documented here: -


and here: -


and involves running a pair of Ant scripts against the existing database schema ( in my case, that's db2user1 ) resulting in a pair of SQL scripts that can then be executed against a new database schema ( in my case, that's db2user2 ) to migrate the roles AND data from one to t'other.

I was quite obviously doing something wrong, as I kept seeing exceptions such as: -

ilog.rules.teamserver.model.IlrConnectException
Caused by: java.lang.NullPointerException


in the Decision Center logs post migration.

It was, however, a PEBKAC - I was obviously doing it wrong.

Once I changed my approach: -

Restore backup of RTSDB - as db2inst1

db2 restore database RTSDB from /tmp

Connect as the instance owner - as db2inst1

db2 connect to RTSDB user db2inst1 using passw0rd

Grant the new schema - db2user2 - rights to the database - as db2inst1

db2 grant dbadm on database to user db2user2

Terminate the DB2 session - as db2inst1

db2 terminate

Connect as the new schema - as db2inst1

db2 connect to RTSDB user db2user2 using passw0rd

Run the provided script to create the necessary ODM tables, indices etc. - as db2inst1

db2 -tvf ~/rule-team-server.sql

-For the record, this SQL script is generated when one first logs into the Decision Center, so I just kept a copy :-)

Terminate the DB2 session - as db2inst1

db2 terminate

Start the Decision Centre cluster - as wasadmin

AdminControl.invoke('WebSphere:name=DecisionCenterCluster,process=dmgr,platform=common,node=Dmgr,version=8.5.5.11,type=Cluster,mbeanIdentifier=DecisionCenterCluster,cell=odmCell01,spec=1.0', 'start')

Log into the Decision Centre - as wasadmin


Follow the prompts to complete basic setup - extensions, locale ( I'm using en_GB as I'm a Brit ) etc. *BUT* avoid executing the generated SQL ( this has already been done ), as per this: -


At this stage, we've got a clean Decision Center database, ready to receive BUT with no roles or data migrated from the old environment: -


Set variables - as wasadmin

export ANT_HOME=/opt/ibm/ODM89/shared/tools/ant
export PATH=$PATH:/opt/ibm/ODM89/shared/tools/ant/bin
export JAVA_HOME=/opt/ibm/ODM89/jdk/jre


Run the Ant scripts to extract the roles and data for the old db2user1 schema - as wasadmin

cd /opt/ibm/ODM89/teamserver/bin

ant -DoldDatabaseSchemaName=db2user1 -Dserver.url=https://odm.uk.ibm.com:9443/teamserver -DrtsAdmin.login=wasadmin -DrtsAdmin.password=passw0rd -DoutputFile=/tmp/migrate_roles.sql gen-migration80-role

ant -DoldDatabaseSchemaName=db2user1 -Dserver.url=https://odm.uk.ibm.com:9443/teamserver -DdatasourceName=jdbc/ilogDataSource -DrtsAdmin.login=wasadmin -DrtsAdmin.password=passw0rd -DoutputFile=/tmp/migrate_data.sql gen-migration80-script

This results in a pair of SQL scripts: -

-rw-r--r-- 1 wasadmin wasadmins 79746 Jul 16 16:25 /tmp/migrate_data.sql
-rw-r--r-- 1 wasadmin wasadmins  9552 Jul 16 16:24 /tmp/migrate_roles.sql


Connect as the new schema - as db2inst1

db2 connect to RTSDB user db2user2 using passw0rd

Execute migration scripts - as db2inst1

db2 -tvf /tmp/migrate_roles.sql
db2 -tvf /tmp/migrate_data.sql


Terminate the DB2 session - as db2inst1

db2 terminate

Log into the Decision Centre - as wasadmin


C'est voila, we have a NEW ODM 8.9 Decision Centre with the project that was previously created on the OLD ODM 8.0 Decision Centre: -




Further adventures with Oracle database - ORA-01078 and LRM-00109

$
0
0
Having installed Oracle 12c ( 12.2.0.1.0 ) today, I was somewhat concerned when I tried to start my database: -

sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 24 14:04:56 2017

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

Connected to an idle instance.

SQL>
startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora'
SQL> quit
Disconnected

I checked the offending directory: -

ls $ORACLE_HOME/dbs

init.ora

which made me think …..

So I re-ran the dbca command to see what was going on.

Guess what ?

I didn't have a database; I'd obviously installed the product BUT not created a database.

Once I created one, all is well: -

ls $ORACLE_HOME/dbs

hc_orcl.dat  init.ora  lkORCL  orapworcl  spfileorcl.ora

sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 24 14:53:27 2017

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


java.sql.SQLException: IO Error: The Network Adapter could not establish the connection DSRA0010E: SQL State = 08006, Error Code = 17,002

$
0
0
I saw this: -


The test connection operation failed for data source BPM Business Process Choreographer data source on server nodeagent at node Node1 with the following exception: java.sql.SQLException: IO Error: The Network Adapter could not establish the connection DSRA0010E: SQL State = 08006, Error Code = 17,002. View JVM logs for further details.

whilst testing JDBC data sources configured to connect to a newly-minted Oracle 12c database.

I checked the Oracle box to ensure that the listener was running: -

netstat -aon | grep LISTEN

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.1:1521          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::36620                :::*                    LISTEN      off (0.00/0/0)


but I wasn't able to connect using telnet from either the BPM 8.5.7 VM or, more interestingly, the Oracle box itself: -

telnet oracle 1521

Trying 192.168.153.131...
telnet: connect to address 192.168.153.131: Connection refused

so it felt more like networking or, to be more accurate, nOtworking :-)

I again checked the listener: -

lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 24-JUL-2017 15:21:04

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                24-JUL-2017 13:26:23
Uptime                    0 days 1 hr. 54 min. 41 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl.uk.ibm.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.uk.ibm.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully


I then started to dig into the OS more: -

sestatus 

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          disabled
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28


service firewalld status

Redirecting to /bin/systemctl status  firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Jul 24 12:31:09 oracle.uk.ibm.com systemd[1]: Starting firewalld - dynamic firewall daemon...
Jul 24 12:31:10 oracle.uk.ibm.com systemd[1]: Started firewalld - dynamic firewall daemon.
Jul 24 11:33:20 oracle.uk.ibm.com systemd[1]: Stopping firewalld - dynamic firewall daemon...
Jul 24 11:33:20 oracle.uk.ibm.com systemd[1]: Stopped firewalld - dynamic firewall daemon.


Wondering whether selinux was the problem, I changed the configuration: -

vi /etc/selinux/config

changing from: -

SELINUX=enforcing

to: -

SELINUX=disabled

and rebooted, but to no avail.

I then tried this: 

telnet localhost 1521

from the Oracle box itself.

Which worked ….

So I revisited the lsnrctl status again 


Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

I started wondering whether the listener was "bound" to the 127.0.0.1 address ….

So I reconfigured it …

vi /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora

changing from: -

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

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

to: -

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

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.uk.ibm.com)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

and restarted it: -

lsnrctl stop

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 24-JUL-2017 15:41:45

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.uk.ibm.com)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully

lsnrctl start

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 24-JUL-2017 15:41:56

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

Starting /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /home/oracle/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.uk.ibm.com)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.uk.ibm.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                24-JUL-2017 15:41:56
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.uk.ibm.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully


and now telnet works: -

telnet `hostname` 1521

Trying 192.168.153.131...
Connected to oracle.uk.ibm.com.
Escape character is '^]'.
^]quit

telnet>
quit
Connection closed.

More importantly …

8.5.5.12: WebSphere Application Server V8.5.5 Fix Pack 12

IBM BPM and the Process Federation Server - A Voyage of Discovery #1

$
0
0
So I've spent the past week getting to grips with Process Federation Server (PFS), and I think I'm pretty close now.

In essence, PFS is a capability that's been around for a few years, and allows a business to provide an aggregation layer across multiple different Process Server environments.

Whilst this is often pertinent in the context of a migration or upgrade, perhaps where an older version of BPM is being maintained, to allow existing process instances to drain down, whilst new work is being initiated on a new environment, there's another use case for PFS.

For example, where a business wants to segregate workloads onto different environments, perhaps with a Bronze/Silver/Gold SLA-driven approach, then PFS can provide the "glue" between the three environments, allowing a user to "find their process".

PFS includes an ElasticSearch engine which maintains an index of inflight instances of BPMN ( BPD ) and SCA/BPEL processes.

Here's a picture: -
The graphic shows the elements of a federated environment: Process Portal communicates with Process Federation Server, which in turn communicates with the federated IBM BPM systems.

Install this component to create a federated process environment that provides business users with a single point of access to their task list and launch list, regardless of the type of process that they are working on and the IBM BPM back-end system on which the process artifacts are stored.

Consider installing Process Federation Server in the following situations:
• Your process applications are deployed on different IBM BPM deployment environments. Your users must log on to several different instances of Process Portal to get their work done.
• Your users work with both BPD-related and BPEL-related processes and tasks.
• Your IBM BPM environment contains multiple versions of IBM BPM that each runs a different version of the same process application. Your users need to work with the older versions of the process applications while process instances are still running, which means that they need to log on to the Process Portal or Heritage Process Portal application that runs on the associated version of IBM BPM.
Process Federation Server aggregates both BPD and BPEL-related tasks from all the IBM BPM back-end systems, including systems that run previous versions of IBM BPM that are supported by Process Federation Server. You can take advantage of this support to gradually phase out process applications that are still running on previous versions, while new versions of the process applications run on the latest release of IBM BPM

So this is the first of many posts about PFS …..

IBM BPM and the Process Federation Server - A Voyage of Discovery #2

$
0
0
So, following on from my earlier post: -


it took me a while to realise that PFS is NOT a UI in its own right; it merely aggregates processes from other BPMs into one single Process Portal.

However, YOU need to provide that Process Portal :-)

So, in my limited test rig here, I have four VMs: -

BPM 8.5.5This is my source environment, from which I am migrating, which has running instances which I need to drain down over time
BPM 8.5.7This is my target environment, to which I am NOW going to send my users, upon which they will run new instances AND access their old instances
PFSThis is running the ElasticSearch engine etc.
DB2With three instances; db2inst1 (BPM 8.5.5), db2inst2 (BPM 8.5.7) and db2inst3 (PFS)

Interestingly, PFS is a WebSphere Liberty-based runtime, which is nice.

Each of the BPM servers also has a local instance of IBM HTTP Server, which helps me simplify things.

Five key things I've learned: -

  • BPM 8.5.7 becomes the target UI; effectively PFS is "feeding" tasks from the BPM 8.5.5 box AND the BPM 8.5.7 box into the same Process Portal
  • The two BPMs *and* PFS need to either share a common user-registry e.g. LDAP, or the users need to exist ( with identical IDs and passwords ) in all three systems
  • SSL between the three components is important; this requires the exchange of self-signed certificates unless we're using CA-signed ( which I'm not in this particular PoC )
  • LTPA keys need to be exchanged between all three components; I generated a LTPA key on the BPM 8.5.5 box, and then shared it with the other two
  • Cross-Origin Resource Sharing (CORS) and XML HTTP Request (XHR) are now things I never knew I need to know - this is all related to the fact that the BPM 8.5.7 Process Portal is providing me with a list of tasks from BOTH BPMs, and has to generate URLs that relate to both
  • Similarly, Apache mod_headers and the Access-Control-Allow-Origin header are also my new BFFs

This is fun ….
Viewing all 1851 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>