Consuming Web Services
AR System allows consuming Web Services through Filter's Set Fields action. When a web service call is made by Filter's Set Fields action it is Web Service (WS) plug-in that handles soap messages. These messages play important role while debugging web service call issues.
How to log Web Service soap messages?
Through Java Plugin logs
WS Plug-in logs soap request and response exchanged during a web service call. However these logs are at level Info. By default plugin server and plugins are set to log only warnings. To start seeing soap messages in java plugins log file one must change log level to Info in plugin server log configuration file.
To update this setting, perform following:
- Open "log4j_pluginsvr.xml" file in "<AR_Install_Dir>\pluginsvr" folder.
- This file has many loggers. Configuration of each logger is defined in a "logger" element.
- Name of a logger is actually a java package name.
- Whenever logs are written by files in these package the settings mentioned in the logger apply.
- Look for logger element named "com.bmc.arsys.pluginsvr". It will have a sub element named "level". Change value of "value" attribute to "info".
- Similarly look for logger element named "com.bmc.arsys.pluginsvr.plugins" and change value to "info".
- All info level logging will now appear in the log file. But where will be log generated?
- Log destination can be specified globally, applicable to all loggers, or at each logger level.
- Global log destination setting can be found in "root" element. This element has "appender-ref" element which will point to an appender.
- Search for "appender" element with name mentioned in "ref" attribute of "appender-ref" element.
- By default "root" element refers to "PluginLog" appender, which is a file appender i.e. logs are written to a file.
- If you search appender element with name "PluginLog" it will have a parameter with name "File" and whose value is the path to the log file.
- By default it will be "<AR_Install_Dir>\ARServer\Db\arjavaplugin.log".
- Check if "com.bmc.arsys.pluginsvr" and "com.bmc.arsys.pluginsvr.plugins" loggers have "appender-ref" element inside them, along with "level" element. If yes then log destination will be the one specified in the appender referred. If "appender-ref" element is missing then appender specified in "root" element will be picked up.
- Save the file and exit.
- Restart AR Server.
Here are the snippets of elements from log4j_pluginsvr.xml file discussed above:
Whenever a web service is consumed in filter the configured log file will have soap message entries in it. Soap input message is logged against "Input Env" where as soap output message is logged against "Output Envelope".
Here is a sample snippet of soap message entries that are logged when a web service is consumed:
2013-09-03 09:55:39,158 INFO [pool-4-thread-2] com.bmc.arsys.pluginsvr.plugins.ARPluginContext (?:?) - <ARSYS.ARF.WEBSERVICE>Input Env = <soapenv:Envelope ...>
2013-09-03 09:55:39,360 INFO [pool-4-thread-2] com.bmc.arsys.pluginsvr.plugins.ARPluginContext (?:?) - <ARSYS.ARF.WEBSERVICE>Output Envelope =
Through Axis logs
Though java plug-in logs give all the information related to a web service call it does not log soap response if response has fault elements. WS Plug-in can be fixed to log soap response even in this case as well, but as of today it does not do that.
In this case you can use Axis's client-config.wsdd file to generate just the soap input and output xml. It has some advantages:
- Convenient to go through the log file generated by this configuration as it just logs request and response XML. You need not go through many entries to find the input and output messages.
- Before invoking web service you can delete existing log file so that new file is generated exclusively for the call.
I have attached client-config.wsdd file. You need to just change value of "value" attribute of "handler" element. Place this file in AR System's pluginsvr folder i.e. in same folder in which log4j_plugsvr.xml exists.
client-config.wsdd 922 bytes