In the Redhat Fuse, when we route to the target system( like API, Database) the body will be overwrite with the response for target system. In case we want access the data from the request, we should use Multicast.
Friday, April 23, 2021
Use Multicast to keep the request body
Control plane node isolation
By default, your cluster will not schedule Pods on the control-plane node for security reasons. If you want to be able to schedule Pods on the control-plane node, for example for a single-machine Kubernetes cluster for development, run:
kubectl taint nodes --all node-role.kubernetes.io/master-
With output looking something like:
node "test-01" untainted
taint "node-role.kubernetes.io/master:" not found
taint "node-role.kubernetes.io/master:" not found
This will remove the node-role.kubernetes.io/master taint from any nodes that have it, including the control-plane node, meaning that the scheduler will then be able to schedule Pods everywhere
Ref: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
Configuring WSO2 API Manager 3.x with Tibco EMS (JMS)
- Open the deployment.toml file present at on repository/component/conf directory and add the following JMSSender configurations.
If you use 127.0.0.1 host for the Tibco server, the APIM server should need to start at the same host.
[[transport.jms.sender]]
name = “QueueConnectionFactoryAPIM”
parameter.initial_naming_factory =
"com.tibco.tibjms.naming.TibjmsInitialContextFactory"
parameter.provider_url = "tcp://127.0.0.1:7222"
parameter.connection_factory_name = "QueueConnectionFactoryAPIM"
parameter.connection_factory_type = "queue"
parameter.jms_spec_version = "1.0.2b"
parameter.username = "admin"
parameter.password = ""
parameter.destination_type = "queue"
parameter.default_reply_destination = "queue"
- Placed the following jars (jms lib for Tibco ) on <APIM_HOME>/repository/components/extensions directory of the APIM server ( jms-2.0.jar, tibjms.jar, tibjmsadmin.jar, tibjmsapps.jar,tibrvjms.jar)
- Start the server
Once you open the axis2.xml file residing on <APIM_HOME>/repository/components/conf/axis2/ directory; you can see the following JMSSende configurations.
<transportSender class=”org.apache.axis2.transport.jms.JMSSender” name=”jms”>
<parameter locked=”false” name=”QueueConnectionFactoryAPIM”>
<parameter locked=”false” name=”java.naming.factory.initial”>com.tibco.tibjms.naming.TibjmsInitialContextFactory</parameter>
<parameter locked=”false”
name=”java.naming.provider.url”>tcp://127.0.0.1:7222</parameter>
<parameter locked=”false”
name=”transport.jms.UserName”>admin</parameter>
<parameter locked=”false” name=”transport.jms.Password”></parameter>
<parameter locked=”false”
name=”transport.jms.ConnectionFactoryJNDIName”>QueueConnectionFactoryAPIM</parameter>
<parameter locked=”false”
name=”transport.jms.ConnectionFactoryType”>queue</parameter>
<parameter locked=”false”
name=”transport.jms.DefaultReplyDestinationType”>queue</parameter>
<parameter locked=”false”
name=”transport.jms.JMSSpecVersion”>1.0.2b</parameter>
<parameter name=”transport.jms.MaxJMSConnections”>5</parameter>
</parameter>
</transportSender>
- Create an API with the following endpoint (add the wild card resource path to a POST resource)
For dual-channel temporary queue scenario, the endpoint would be like,
jms:/Request?transport.jms.ConnectionFactory=QueueConnectionFactoryAPIM&transport.jms.ContentTypeProperty=Content_Type&transport.jms.DestinationType=queue&transport.jms.Destination=Req
For the dual-channel scenario with the predefined queues as request and response, the endpoint would be like,
jms:/Request?transport.jms.ConnectionFactory=QueueConnectionFactoryAPIM&transport.jms.ContentTypeProperty=Content_Type&transport.jms.DestinationType=queue&transport.jms.Destination=Request&transport.jms.ReplyDestination=Response
- Publish the API.
Ref: https://medium.com/@hiranyakavi/configure-tibco-ems-jms-transport-scenario-with-wso2-api-manager-3-x-d4c5e0cb774b
If you use 127.0.0.1 host for the Tibco server, the APIM server should need to start at the same host.
[[transport.jms.sender]]
name = “QueueConnectionFactoryAPIM”
parameter.initial_naming_factory =
"com.tibco.tibjms.naming.TibjmsInitialContextFactory"
parameter.provider_url = "tcp://127.0.0.1:7222"
parameter.connection_factory_name = "QueueConnectionFactoryAPIM"
parameter.connection_factory_type = "queue"
parameter.jms_spec_version = "1.0.2b"
parameter.username = "admin"
parameter.password = ""
parameter.destination_type = "queue"
parameter.default_reply_destination = "queue"
Once you open the axis2.xml file residing on <APIM_HOME>/repository/components/conf/axis2/ directory; you can see the following JMSSende configurations.
<transportSender class=”org.apache.axis2.transport.jms.JMSSender” name=”jms”>
<parameter locked=”false” name=”QueueConnectionFactoryAPIM”>
<parameter locked=”false” name=”java.naming.factory.initial”>com.tibco.tibjms.naming.TibjmsInitialContextFactory</parameter>
<parameter locked=”false”
name=”java.naming.provider.url”>tcp://127.0.0.1:7222</parameter>
<parameter locked=”false”
name=”transport.jms.UserName”>admin</parameter>
<parameter locked=”false” name=”transport.jms.Password”></parameter>
<parameter locked=”false”
name=”transport.jms.ConnectionFactoryJNDIName”>QueueConnectionFactoryAPIM</parameter>
<parameter locked=”false”
name=”transport.jms.ConnectionFactoryType”>queue</parameter>
<parameter locked=”false”
name=”transport.jms.DefaultReplyDestinationType”>queue</parameter>
<parameter locked=”false”
name=”transport.jms.JMSSpecVersion”>1.0.2b</parameter>
<parameter name=”transport.jms.MaxJMSConnections”>5</parameter>
</parameter>
</transportSender>
For dual-channel temporary queue scenario, the endpoint would be like,
jms:/Request?transport.jms.ConnectionFactory=QueueConnectionFactoryAPIM&transport.jms.ContentTypeProperty=Content_Type&transport.jms.DestinationType=queue&transport.jms.Destination=Req
For the dual-channel scenario with the predefined queues as request and response, the endpoint would be like,
jms:/Request?transport.jms.ConnectionFactory=QueueConnectionFactoryAPIM&transport.jms.ContentTypeProperty=Content_Type&transport.jms.DestinationType=queue&transport.jms.Destination=Request&transport.jms.ReplyDestination=Response
Note:
Thursday, December 24, 2020
OHS the plug-ins do not fail over
CAUSE
The multiple invocations had nothing to do with OSB, rather with the configuration of the plugin for the Apache load balancer. This is expected behavior for the default 11g configuration in certain situations. The issue is due to the use of the plugin configuration parameter "Idempotent".
When "Idempotent" is turned on, the plugin will attempt to resend the HTTP request after it has timed out (configured in the "WLIOTimeoutSecs" parameter in plugin).
http://download.oracle.com/docs/cd/E13222_01/wls/docs100/plugins/plugin_params.html
Unsolicited multiple invocations like this have been reported in other products using the same load balancer configuration.
SOLUTION
- Turn OFF Idempotent in the web server plugin configuration.
http://download.oracle.com/docs/cd/E13222_01/wls/docs100/plugins/plugin_params.html
If "Idempotent" is set to “OFF” the plugin will not fail over. - If not explicitly set, WLIOTimeoutSecs defaults to 300 seconds (5 minutes).
You can add a line in the file httpd.conf ($ORACLE_INSTANCE/config/OHS/ohsx) in order to set this parameter WLIOTimeoutSecs
Wednesday, December 23, 2020
OHS Terminating SSL Requests
Terminating SSL Requests
The following sections describe how to terminate requests using SSL before or within Oracle HTTP Server, where the mod_wl_ohs module forwards requests to WebLogic Server. Whether you terminate SSL before the request reaches Oracle HTTP Server or when the request is in the server, depends on your topology. A common reason to terminate SSL is for performance considerations when an internal network is otherwise protected with no risk of a third-party intercepting data within the communication. Another reason is when WebLogic Server is not configured to accept HTTPS requests.
This section includes the following topics:
About Terminating SSL at the Load Balancer
If you are using another device such as a load balancer or a reverse proxy which terminates requests using SSL before reaching Oracle HTTP Server, then you must configure the server to treat the requests as if they were received through HTTPS. The server must also be configured to send HTTPS responses back to the client.
Figure 9-1 illustrates an example where the request transmitted from the browser through HTTPS to WebLogic Server. The load balancer terminates SSL and transmits the request as HTTP. Oracle HTTP Server must be configured to treat the request as if it was received through HTTPS.
Figure 9-1 Terminating SSL Before Oracle HTTP Server

Description of "Figure 9-1 Terminating SSL Before Oracle HTTP Server"
Terminating SSL at the Load Balancer
To instruct the Oracle HTTP Server to treat requests as if they were received through HTTPS, configure the httpd.conf file with the SimulateHttps directive in the mod_certheaders module.
For more information on mod_certheaders module, see mod_certheaders Module—Enables Reverse Proxies.
Note:
This procedure is not necessary if SSL is configured on Oracle HTTP Server (that is, if you are directly accessing Oracle HTTP Server using HTTPS).
- Configure the
httpd.confconfiguration file with the external name of the server and its port number, for example:ServerName <www.company.com:port>
- Configure the
httpd.confconfiguration file to load themod_certheadersmodule, for example:On UNIX:
LoadModule certheaders_module libexec/mod_certheaders.so
On Windows:
LoadModule certheaders_module modules/ApacheModuleCertHeaders.dll AddModule mod_certheaders.c
Note:
Oracle recommends that the
AddModuleline should be included with otherAddModuledirectives.
- Configure the
SimulateHttpsdirective at the bottom of thehttpd.conffile to send HTTPS responses back to the client, for example:# For use with other load balancers and front-end devices: SimulateHttps On
- Restart Oracle HTTP Server and test access to the server. Especially, test whether you can access static pages such as
https://host:port/index.htmlTest your configuration as a basic setup. If you are having issues, then you should troubleshoot from here to avoid overlapping with other potential issues, such as with virtual hosting.
- Ideally, you may want to configure a
VirtualHostin thehttpd.conffile to handle all HTTPS requests. This separates the HTTPS requests from the HTTP requests as a more scalable approach. This may be more desirable in a multi-purpose site or if a load balancer or other device is in front of Oracle HTTP Server which is also handling both HTTP and HTTPS requests.The following sample instructions load the
mod_certheadersmodule, then creates a virtual host to handle only HTTPS requests.# Load correct module here or where other LoadModule lines exist: LoadModule certheaders_module libexec/mod_certheaders.so # This only handles https requests: <VirtualHost <name>:<port> # Use name and port used in url: ServerName <www.company.com:port> SimulateHttps On # The rest of your desired configuration for this VirtualHost goes here </VirtualHost> - Restart Oracle HTTP Server and test access to the server, First test a static page such as
https://host:port/index.htmland then your test your application.
About Terminating SSL at Oracle HTTP Server
If SSL is configured in Oracle HTTP Server but not on Oracle WebLogic Server, then you can terminate SSL for requests sent by Oracle HTTP Server.
The following figures illustrate request flows, showing where HTTPS stops. In Figure 9-2, an HTTPS request is sent from the browser. The load balancer transmits the HTTPS request to Oracle HTTP Server. SSL is terminated in Oracle HTTP Server and the HTTP request is sent to WebLogic Server.
Figure 9-2 Terminating SSL at Oracle HTTP Server—With Load Balancer

Description of "Figure 9-2 Terminating SSL at Oracle HTTP Server—With Load Balancer"
In Figure 9-3 there is no load balancer and the HTTPS request is sent directly to Oracle HTTP Server. Again, SSL is terminated in Oracle HTTP Server and the HTTP request is sent to WebLogic Server.
Figure 9-3 Terminating SSL at Oracle HTTP Server—Without Load Balancer

Description of "Figure 9-3 Terminating SSL at Oracle HTTP Server—Without Load Balancer"
Terminating SSL at Oracle HTTP Server
To instruct the Oracle HTTP Server to treat requests as if they were received through HTTPS, configure the WLSProxySSL directive in the mod_wl_ohs.conf file and ensure that the SecureProxy directive is not configured.
- Configure the
mod_wl_ohs.conffile to add theWLSProxySSLdirective for the location of your non-SSL configured managed servers.For example:WLProxySSL ON
- If using a load balancer or other device in front of Oracle HTTP Server (which is also using SSL), you might need to configure the
WLProxySSLPassThroughdirective instead, depending on if it already setsWL-Proxy-SSL.For example:WLProxySSLPassThrough ON
For more information, see your load balancer documentation. For more information on WLProxySSLPassThrough, see Parameters for Oracle WebLogic Server Proxy Plug-Ins in Using Oracle WebLogic Server Proxy Plug-Ins.
- Ensure that the
SecureProxydirective is not configured, as it will interfere with the intended communication between the components.This directive is to be used only when SSL is used throughout. TheSecureProxydirective is commented out in the following example:# To configure SSL throughout (all the way to WLS): # SecureProxy ON # WLSSLWallet "<Path to Wallet>"
- Enable the WebLogic Plug-In flag for your managed servers or cluster.By default, this option is not enabled. Complete the following steps to enable the WebLogic Plug-In flag:
- Log in to the Oracle WebLogic Server Administration Console.
- In the Domain Structure pane, expand the Environment node.
- Click on Clusters.
- Select the cluster to which you want to proxy requests from Oracle HTTP Server.The Configuration: General tab appears.
- Scroll down to the Advanced section, expand it.
- Click Lock and Edit.
- Set the WebLogic Plug-In Enabled to yes.
- Click Save and Activate the Changes.
- Restart the servers for the changes to be effective.
- Restart Oracle HTTP Server and test access to a Java application.For example:
https://host:port/path/application_name.
Tuesday, November 24, 2020
How to run .SQL script using JDBC?
A database script file is a file that contains multiple SQL quries separated from each other. Usually, these files have the .sql extention.
Running .sql script files in Java
You can execute .sql script files in Java using the runScript() method of the ScriptRunner class of Apache iBatis. To this method you need to pass a connection object.
Therefore to run a script file −
- Register the MySQL JDBC Driver using the registerDriver() method of the DriverManager class.
- Create a connection object to establish connection with the MySQL database using the getConnection() method.
- Initialize the ScriptRunner class of the package org.apache.ibatis.jdbc.
- Create a Reader object to read the script file.
- Finally, execute the script using the runScript(reader) method.
Example
Let us create a script file with name sampleScript.sql copy the following contents init. This script creates a table with name cricketers_data in MySQL database an populates it with five records.
CREATE DATABASE exampleDB;
use exampleDB;
CREATE TABLE exampleDB.cricketers_data(
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Date_Of_Birth date,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
select * from mydatabase.cricketers_data;Add the following maven dependency (for the jar file mybatis-3.4.1.jar) to your pom.xml file −
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency>
Example
Following JDBC program executes the sampleScript.sql file.
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.Reader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.ibatis.jdbc.ScriptRunner; public class RunningScripts { public static void main(String args[]) throws Exception { //Registering the Driver DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Getting the connection String mysqlUrl = "jdbc:mysql://localhost/talakai_noppi"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //Initialize the script runner ScriptRunner sr = new ScriptRunner(con); //Creating a reader object Reader reader = new BufferedReader(new FileReader("E:\\sampleScript.sql")); //Running the script sr.runScript(reader); } }
Output
Connection established......
CREATE DATABASE exampleDB
use exampleDB
CREATE TABLE exampleDB.cricketers_data(
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Date_Of_Birth date,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
)
insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India')
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica')
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka')
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India')
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India')
select * from mydatabase.cricketers_data
First_Name Last_Name Year_Of_Birth Place_Of_Birth Country
Shikhar Dhawan 1981-12-05 Delhi India
Jonathan Trott 1981-04-22 CapeTown SouthAfrica
Lumara Sangakkara 1977-10-27 Matale Srilanka
Virat Kohli 1988-11-05 Delhi India
Rohit Sharma 1987-04-30 Nagpur IndiaReference: https://www.tutorialspoint.com/how-to-run-sql-script-using-jdbc
Wednesday, November 4, 2020
How to get a list of images on docker registry v2
List all repositories (effectively images):
curl -X GET https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}
List all tags for a repository:
curl -X GET https://myregistry:5000/v2/ubuntu/tags/list
> {"name":"ubuntu","tags":["14.04"]}
Install and use xorg-server on macOS via Homebrew
The instructions to install and use xorg-server on macOS via Homebrew: Install Homebrew (if you haven't already): /bin/bash -c ...
-
Ref: https://blogs.sap.com/2016/11/25/get-to-know-camels-simple-expression-language-in-hci/ Introduction Simple is a, well, simple express...
-
WebRequest The function sends an HTTP request to a specified server. The function has two versions: 1. Sending simple requests of typ...
-
The instructions to install and use xorg-server on macOS via Homebrew: Install Homebrew (if you haven't already): /bin/bash -c ...

