Use IBM IIB mqsichangeproperties to change SOAPRequest WebService URL - ibm-integration-bus

Can I use IBM IIB mqsichangeproperties to change SOAPRequest WebService URL. This will help in avoiding a redeployment when the URLs change slightly without any change to the XSDs. Also helps when migrating from test to production

I think not, normally the command can affect SOAPInput SOAPReply nodes and to modify in SOAPRequest I would use mqsiapplybaroverride, verifying exactly as it is called in the URL bar with mqsireadbar. The downside is you have to redeploy.

mqsichangeproperties would help you change the hostname of IntegrationNode. The hostname will change for different environments from test to PROD as you will have different Integration Nodes for each of em.What you will change is the suffix like in the URI
http://hostname:7080/ProductDetails_v3
Which you could do by overriding it using a properties file with mqsiapplybaroverride or you can fetch the suffix from a DB store it in some variable & provide it in LocalEnvironment before making the request.
Please refer the link for LocalEnvironment Overrides for SOAPRequest Nodes
https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac56192_.htm

Related

Access APEX without the context path /apex

I am using Oracle XE 18 with APEX 19.1 installed via EPG.
The only way to access the workspace login page is by locating the additional path /apex.
Is there a way to access/redirect/change the workspace login page (or a specific application) to the root of the hostname - such as http://localhost instead of http://localhost/apex ?
PS.: I am using Windows
The out of the box answer is: no
With APEX you need that, it can be changed to something like /app or similar.
If it was a deal breaker you can always front that APEX with a proxy that forwards the calls, one that comes to mind is nginx but its not perfect, something like an F5-like device can do the redirection pretty smoothly.
For Windows in particular you can try the DNS service which allows you to define some forwarding rules but I sincerely don't know how far you can go with this approach.
I suggest you choose /a or similar (instead of /apex) and save yourself a ton of problems and headaches. What you want doesn't exist, it was not designed to do that.
Yes that is possible but to do this you need a network layer, a network layer can be a firewall or web server(apache/glassfish). So in my case i use glassfish. You can specify redirect properties on glassfish config file domain.xml like this:
<virtual-server network-listeners="http-listener-1" id="server">
<property name="redirect_1" value="from= url-prefix=/apex/"></property>
<property name="redirect_2" value="from=/my_app_name url-prefix=/apex/f?p=my_number_app"></property>
</virtual-server>
So the first property as the rule you need to redirect /apex to /.
The second property you can use to redirect any application to a route name.

existdb: identify database server

We have a number of (developer) existDb database servers, and some staging/production servers.
Each have their own configuration, that are slightly different.
We need to select which configuration to load and use in queries.
The configuration is to be stored in an XML file within the repository.
However, when syncing the content of the servers, a single burnt-in XML file is not sufficient, since it is overwritten during copying from the other server.
For this, we need the physical name of the actual database server.
The only function found, request:get-server-name that is not quite stable since a single eXist server can be accessed through a number of various (localhost, intranet or external) URLs. However, that leads to unnecessary duplication of the configuration, one for each external URL...
(Accessing some local files in the file system is not secure and not fast.)
How to get the physical name of the existDb server from XQuery?
I m sorry but I don't fully understand your question, are you talking about exist's default conf.xml or your own configuration file that you need to store in a VCS repo? Should the xquery be executed on one instance and trigger an event in all others, or just some, or...? Without some code it is difficult to see why and when something gets overwritten.
you could try console:jmx-token which does not vary depending on URL (at least it shouldn't)
Also you might find it much easier to use a docker based approach. Either with multiple instances coordinated via docker-compose or to keep the individual configs from not interfering with each other when moving from dev to staging to production https://github.com/duncdrum/exist-docker
If I understand correctly, you basically want to be able to get the hostname or the IP address of a server from XQuery. If the functions in the XQuery Request module are not doing as you wish, then another option would be to set a Java System Property when starting eXist-db. This system property could be the internal DNS name or IP of your server, for example: -Dour-server-name=server1.mydomain.com
From XQuery you could then read that Java System property using util:system-property("our-server-name").

How Jmeter handles LDAP Referral mechanism

I am trying to do a LDAP mod operation through Jmeter. Expected behavior - Jmeter would hit server A which in turn would hit server B. Actual modification operation would happen at server B. Server B would complete the operation and give response to server A which in turn would respond to Jmeter.
Now the issue is, Jmeter is always getting the "Referral" response message. However, manually we are able to change the password after hitting server A from different remote server.
Could you someone please suggest how to overcome this?
I am assuming this has been resolved. Just in case you are still wondering, #Rohan , my understanding is that you run jmeter on the command line:
$ jmeter -Jjava.naming.referral=true -n -t testplan.jmx -l log.jtl
JMeter won't have specific behaviour of its own. You will need to tell it to follow referrals by setting java.naming.referral property appropriately in the jndi.properties mechanism defined in the documentation for the JNDI LDAP provider, which you should already have in place for your application if you expect it to behave that way.

Disabling/Pause database replication using ML-Gradle

I want to disable the Database Replication from the replica cluster in MarkLogic 8 using ML-Gradle. After updating the configurations, I also want to re-enable it.
There are tasks for enabling and disabling flexrep in ML Gradle. But I couldn't found any such thing for Database Replication. How can this be done?
ml-gradle uses the Management API to handle configuration changes. Database Replication is controlled by sending a PUT command to /manage/v2/databases/[id-or-name]/properties. Update your ml-config/databases/content-database.json file (example that does not include that property) to include database-replication, including replication-enabled: true.
To see what that object should look like, you can send a GET request to the properties endpoint.
You can create your own command to set replication-enabled - see https://github.com/rjrudin/ml-gradle/wiki/Writing-your-own-management-task
I'll also add a ticket for making official commands - e.g. mlEnableReplication and mlDisableReplication, with those defaulting to the content database, and allowing for any database to be specified.

Jmeter testing on multiple websites on the same server

I have a working script to login and get to one website on the webserver, what I need is how to get to the other 10 plus servers with Jmeter all at once to do a nice stress test on the websites and its interfaces.
Any help is greatly appreciated
I think that you need to use DNS Cache Manager available since JMeter 2.12
DNS Cache Manager allows each JMeter thread to resolve underlying IP address of the request endpoint on its own.
See The DNS Cache Manager: The Right Way To Test Load Balanced Apps guide for detailed explanation of background and configuration details.
This is pretty trivial using the CSV Data Set Config.
Let's assume you are using normal HTTP Request samplers and that these are already set up with a server and path. Let's say it is the server you want to change for each thread. Then you need to:
Create a text file with a different server you want to test on each line.
Add a CSV Data Config element to the top level.
Configure the CSV Data Config to use your text file and set the variable name of server.
In your samplers change the server name to ${server}.
You can use the same method to change the path and other details.

Resources