Friday, March 24, 2017

WebLogic : Controlling Multi Data Source Failover with a Callback

Here the schema

and here the documentation :

"The name of the application class to handle the callback sent when a multi data source is ready to failover or fail back connection requests to another data source within the multi data source. The name must be the absolute name of an application class that implements the weblogic.jdbc.extensions.ConnectionPoolFailoverCallback interface."

Monday, March 20, 2017

Book review: The rise of the Robots

The book is excellent. Read it. Then you will be really scared about the future, and I mean the next 10-20 years. Because it's going to be a very quick process the one putt us all out of work. Unless you belong to a very selected elite of super-engineers dedicated to AI processes. Or someone like a surgeon or medical doctor who HAS to be present to a process to give some accountability.

I have read the book and felt really frightened. No matter how hard one studies, s/he will never be able to compete with a machine.

Nevertheless life goes on and I keep studying. More for personal pride and curiosity. Anyway in 9 years I will be 65 inshallah and hope to retire...


If you use a LoggingLastResource Datasource, you must specify a table with the tag jdbcllr-table-name in config.xml.

We did that and we got

"javax.transaction.SystemException: Failed to call registerLoggingResourceTransactions() weblogic.transaction.loggingresource.LoggingResourceException: weblogic.transaction.loggingresource.LoggingResourceException: java.sql.SQLException: JDBC LLR, table verify failed for table 'WL_LLR_PIPPO_7436', failed to create table"

I have enabled the flags

-Dweblogic.debug.DebugJDBCSQL=true -Dweblogic.log.StdoutSeverity=Debug -Dweblogic.StdoutDebugEnabled=true

and discovered this

throws java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges

        at oracle.jdbc.driver.T4CTTIoer.processError(
        at oracle.jdbc.driver.T4CTTIoer.processError(
        at oracle.jdbc.driver.T4C8Oall.processError(
        at oracle.jdbc.driver.T4CTTIfun.receive(
        at oracle.jdbc.driver.T4CTTIfun.doRPC(
        at oracle.jdbc.driver.T4C8Oall.doOALL(
        at oracle.jdbc.driver.T4CStatement.doOall8(
        at oracle.jdbc.driver.T4CStatement.doOall8(
        at oracle.jdbc.driver.T4CStatement.executeForRows(
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(
        at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(
        at oracle.jdbc.driver.OracleStatement.executeUpdate(
        at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(
        at weblogic.jdbc.wrapper.Statement.executeUpdate(
        at weblogic.jdbc.wrapper.JTSLoggableResourceTable.createTable(
        at weblogic.jdbc.wrapper.JTSLoggableResourceTable.findOrCreateTable(
        at weblogic.jdbc.wrapper.JTSLoggableResourceImpl.findOrCreateBackingTable(

so you can simply ask the DBA to create the table, or grant you CREATE TABLE privileges.