Wso2 Server Error Tips
----------------------------
1. Starting wso2server gives below error ...
ERROR {org.opensaml.xml.XMLConfigurator} - Can not create instance of org.opensaml.xml.schema.impl.XSAnyMarshaller
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.opensaml.xml.XMLConfigurator.createClassInstance(XMLConfigurator.java:360)
at org.opensaml.xml.XMLConfigurator.initializeObjectProviders(XMLConfigurator.java:240)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:182)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:166)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:143)
at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:224)
at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:207)
at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:100)
at org.apache.rahas.Rahas.init(Rahas.java:46)
at org.apache.axis2.context.ConfigurationContextFactory.initModules(ConfigurationContextFactory.java:252)
at org.apache.axis2.context.ConfigurationContextFactory.init(ConfigurationContextFactory.java:230)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:93)
at org.wso2.carbon.core.CarbonConfigurationContextFactory.createNewConfigurationContext(CarbonConfigurationContextFactory.java:65)
at org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:398)
at org.wso2.carbon.core.init.CarbonServerManager.start(CarbonServerManager.java:219)
at org.wso2.carbon.core.internal.CarbonCoreServiceComponent.activate(CarbonCoreServiceComponent.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at
Solution :
Download these 2 jars from Oracle and place inside Java\jdk1.7.0_10\jre\lib\security
[1] http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
Friday, October 21, 2016
Sunday, October 9, 2016
Accessing H2 DB from the browser
----------------------------------------------
1. Navigate to [Product_Home]/repository/conf/carbon.xml
2. Uncomment below.
<H2DatabaseConfiguration>
<property name="web" />
<property name="webPort">8082</property>
<property name="webAllowOthers" />
<property name="webSSL" />
<property name="tcp" />
<property name="tcpPort">9092</property>
<property name="tcpAllowOthers" />
<property name="tcpSSL" />
<property name="pg" />
<property name="pgPort">5435</property>
<property name="pgAllowOthers" />
<property name="trace" />
<property name="baseDir">${carbon.home}</property>
</H2DatabaseConfiguration>
3. Navigate to your primary datasource which points to the H2 datasoure to identify username & password.
eg:
<datasource>
<name>WSO2_CARBON_DB</name>
<description>The datasource used for registry and user manager</description>
<jndiConfig>
<name>jdbc/WSO2CarbonDB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:h2:./repository/database/WSO2CARBON_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
<defaultAutoCommit>false</defaultAutoCommit>
</configuration>
</definition>
</datasource>
4. Type in the browser-url : https://localhost:8280
----------------------------------------------
1. Navigate to [Product_Home]/repository/conf/carbon.xml
2. Uncomment below.
<H2DatabaseConfiguration>
<property name="web" />
<property name="webPort">8082</property>
<property name="webAllowOthers" />
<property name="webSSL" />
<property name="tcp" />
<property name="tcpPort">9092</property>
<property name="tcpAllowOthers" />
<property name="tcpSSL" />
<property name="pg" />
<property name="pgPort">5435</property>
<property name="pgAllowOthers" />
<property name="trace" />
<property name="baseDir">${carbon.home}</property>
</H2DatabaseConfiguration>
eg:
<datasource>
<name>WSO2_CARBON_DB</name>
<description>The datasource used for registry and user manager</description>
<jndiConfig>
<name>jdbc/WSO2CarbonDB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:h2:./repository/database/WSO2CARBON_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
<defaultAutoCommit>false</defaultAutoCommit>
</configuration>
</definition>
</datasource>
4. Type in the browser-url : https://localhost:8280
Wednesday, September 21, 2016
-------------------------------------------------------------------------------------------
Please note that for this tutorial I am using APIM 1.10.0 and DAS 3.0.1 versions.
WSO2 API Manager is a complete solution for designing and publishing APIs, creating and managing a developer community, and for securing and routing API traffic in a scalable way. It leverages proven components from the WSO2 platform to secure, integrate and manage APIs. In addition, it integrates with the WSO2 Analytics Platform, and provides out of the box reports and alerts, giving you instant insight into APIs' behavior.
In order for downloading WSO2 APIM click here.
WSO2 Data Analytics Server is a comprehensive enterprise data analytics platform; it fuses batch and real-time analytics of any source of data with predictive analytics via machine learning. It supports the demands of not just business, but Internet of Things solutions, mobile and Web apps.
In order for downloading WSO2 DAS click here.
Configuring WSO2 APIM
===================
1. Navigate to [APIM_HOME]/repository/conf/api-manager.xml and enable the below section.
<!-- For APIM implemented Statistic client for RDBMS -->
<StatisticClientProvider>org.wso2.carbon.apimgt.usage.client.impl.APIUsageStatisticsRdbmsClientImpl</StatisticClientProvider>
2. Start APIM server.
3. Login to dash-board. eg: https://localhost:9443/admin-dashboard. Select "Configure Analytics" & select enable checkbox. Configure as shown below.
Configuring WSO2 DAS
==================
1. In-order to prevent server startup conflicts we will start DAS with port offset value of 1.
To do so navigate to [DAS_HOME]/repository/conf and open carbon.xml file.
<Offset>1</Offset>
2. Navigate to [DAS_HOME]/repository/conf/datasources/master-datasources.xml and add the below.
<datasource>
<name>WSO2AM_STATS_DB</name>
<description>The datasource used for setting statistics to API Manager</description>
<jndiConfig>
<name>jdbc/WSO2AM_STATS_DB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:mysql://localhost:3306/TestStatsDB?autoReconnect=true&relaxAutoCommit=true</url>
<username>admin</username>
<password>admin</password>
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
</configuration>
</definition>
</datasource>
** IMPORTANT
--------------------
Prio-adding this config you need to create a DB called 'TestStatsDB' in your mysql database & and create required tables. To do so follow below instructions.
[1] Navigate to [APIM_HOME]/dbscripts/stat/sql from your ubuntu console and select mysql.sql script.
type : source [APIM_HOME]/dbscripts/stat/sql/mysql.sql
- Which will create the required tables for our scenario.
[2] Now navigate to [APIM_HOME]/repository/components/lib and add the required mysql connector jar from here.
Create / Publish / Invoke API
======================
1. Navigate to APIM Publisher and create an API. Publish it.
2. Navigate to APIM Store and subscribe to the API.
3. In the Publisher instance select created API and navigate to 'Implement' section and select
Destination-Based Usage Tracking: enable
Configuring WSO2 DAS
==================
1. In-order to prevent server startup conflicts we will start DAS with port offset value of 1.
To do so navigate to [DAS_HOME]/repository/conf and open carbon.xml file.
<Offset>1</Offset>
2. Navigate to [DAS_HOME]/repository/conf/datasources/master-datasources.xml and add the below.
<datasource>
<name>WSO2AM_STATS_DB</name>
<description>The datasource used for setting statistics to API Manager</description>
<jndiConfig>
<name>jdbc/WSO2AM_STATS_DB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:mysql://localhost:3306/TestStatsDB?autoReconnect=true&relaxAutoCommit=true</url>
<username>admin</username>
<password>admin</password>
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
</configuration>
</definition>
</datasource>
** IMPORTANT
--------------------
Prio-adding this config you need to create a DB called 'TestStatsDB' in your mysql database & and create required tables. To do so follow below instructions.
[1] Navigate to [APIM_HOME]/dbscripts/stat/sql from your ubuntu console and select mysql.sql script.
type : source [APIM_HOME]/dbscripts/stat/sql/mysql.sql
- Which will create the required tables for our scenario.
[2] Now navigate to [APIM_HOME]/repository/components/lib and add the required mysql connector jar from here.
Create / Publish / Invoke API
======================
1. Navigate to APIM Publisher and create an API. Publish it.
2. Navigate to APIM Store and subscribe to the API.
3. In the Publisher instance select created API and navigate to 'Implement' section and select
Destination-Based Usage Tracking: enable
4. Invoke the API several times.
View API Statistics
==============
Navigate to APIM publisher instance. Select "Statistics" section. Enjoy !!!
PS ::
If you wanna do a load test scenario or just to play with Jmeter for your easy reference I have attached herewith a sample Jmeter script for 'Calculator API'.
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.8" jmeter="2.13 r1665067">
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="HTTPSampler.domain">localhost</stringProp>
<stringProp name="HTTPSampler.port">8280</stringProp>
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
<stringProp name="HTTPSampler.response_timeout"></stringProp>
<stringProp name="HTTPSampler.protocol"></stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path">/calc/1.0/subtract?x=33&y=9</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
<stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
<boolProp name="HTTPSampler.monitor">false</boolProp>
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
</HTTPSamplerProxy>
<hashTree>
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
<collectionProp name="HeaderManager.headers">
<elementProp name="" elementType="Header">
<stringProp name="Header.name">Authorization</stringProp>
<stringProp name="Header.value">Bearer 2e431777ce280f385c30ac82c1e1f21c</stringProp>
</elementProp>
</collectionProp>
</HeaderManager>
<hashTree/>
</hashTree>
</hashTree>
</jmeterTestPlan>
Tuesday, September 6, 2016
Useful OSGI Commands
1. Finding a package inside which jar?
- p com.ibm.msg.client.commonservices.Log
- Reply : com.ibm.msg.client.commonservices.Log; version="0.0.0"<com.ibm.mq_1.0.0 [24]>
com.ibm.msg.client.commonservices.Log; version="0.0.0"<jmqi_7.5.0.3_1.0.0 [82]>
2. Getting actual jar name
- diag 24
1. Finding a package inside which jar?
- p com.ibm.msg.client.commonservices.Log
- Reply : com.ibm.msg.client.commonservices.Log; version="0.0.0"<com.ibm.mq_1.0.0 [24]>
com.ibm.msg.client.commonservices.Log; version="0.0.0"<jmqi_7.5.0.3_1.0.0 [82]>
2. Getting actual jar name
- diag 24
Saturday, September 3, 2016
Understanding different WSO2 ESB Scopes
Scopes:
Scopes:
1. Synapse scope
When the scope of a property mediator is synapse, its value is available throughout both the in sequence and the out sequence
2. axis2 scope
When the scope of a property mediator is axis2, its value is available only throughout the sequence for which the property is defined (e.g., if you add the property to an in sequence, its value will be available only throughout the in sequence).
Friday, September 2, 2016
Testing WebsphereMQ 8.0 (Windows server 2012) together with WSO2 ESB 4.8.1 message stores and message processors - Full Synapse Configuration
For configuaring IBM WebsphreMQ with WSO2 ESB please click on this link :
WSO2 ESB Full Synapse Configuration
-------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
<registry provider="org.wso2.carbon.mediation.registry.WSO2Registry">
<parameter name="cachableDuration">15000</parameter>
</registry>
<proxy name="MySample2"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property name="FORCE_SC_ACCEPTED"
value="true"
scope="axis2"
type="STRING"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<store messageStore="JMSStore2"/>
</inSequence>
</target>
</proxy>
<proxy name="MySample"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property name="FORCE_SC_ACCEPTED"
value="true"
scope="axis2"
type="STRING"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<store messageStore="JMSStore1"/>
</inSequence>
</target>
</proxy>
<proxy name="MyMockProxy"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<log level="custom">
<property name="it" value="** Its Inline Sequence of MockProxy"/>
</log>
<payloadFactory media-type="xml">
<format>
<Response xmlns="">
<status>OK</status>
<code>1</code>
</Response>
</format>
<args/>
</payloadFactory>
<header name="To" action="remove"/>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
<property name="messageType" value="application/xml" scope="axis2"/>
<send/>
</inSequence>
</target>
</proxy>
<endpoint name="MyMockProxy">
<address uri="http://192.168.48.140:8280/services/MyMockProxy"/>
</endpoint>
<sequence name="fault">
<log level="full">
<property name="MESSAGE" value="Executing default 'fault' sequence"/>
<property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
<property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
</log>
<drop/>
</sequence>
<sequence name="main">
<in>
<log level="full"/>
<filter source="get-property('To')" regex="http://localhost:9000.*">
<send/>
</filter>
</in>
<out>
<send/>
</out>
<description>The main sequence for the message mediation</description>
</sequence>
<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore"
name="JMSStore1">
<parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
<parameter name="store.jms.password">wso2321#qa</parameter>
<parameter name="java.naming.provider.url">file:\C:\Users\Administrator\Desktop\jndidirectory</parameter>
<parameter name="store.jms.connection.factory">MyQueueConnectionFactory</parameter>
<parameter name="store.jms.username">Administrator</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
<parameter name="store.jms.destination">LocalQueue1</parameter>
</messageStore>
<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore"
name="JMSStore2">
<parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
<parameter name="store.jms.password">wso2321#qa</parameter>
<parameter name="java.naming.provider.url">file:\C:\Users\Administrator\Desktop\jndidirectory</parameter>
<parameter name="store.jms.connection.factory">MyQueueConnectionFactory5</parameter>
<parameter name="store.jms.username">Administrator</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
<parameter name="store.jms.destination">LocalQueue5</parameter>
</messageStore>
<messageProcessor class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor"
name="JMSMessagePro2"
targetEndpoint="MyMockProxy"
messageStore="JMSStore2">
<parameter name="client.retry.interval">1000</parameter>
<parameter name="max.delivery.attempts">5</parameter>
<parameter name="interval">10000</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
<messageProcessor class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor"
name="JMSMessagePro"
targetEndpoint="MyMockProxy"
messageStore="JMSStore1">
<parameter name="max.delivery.attempts">2</parameter>
<parameter name="client.retry.interval">1000</parameter>
<parameter name="interval">10000</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
</definitions>
Important Points :
[1] Identify the message flow ...
SoapRequest --> MySampleProxy --> MessageStore -->MessageQueue --> MessageProcessor
(SoapUI) (ESB) (ESB) (WebsphereMQ) (ESB)
|
MyMockProxy <--|
(ESB)
[2] Remember to set additional MS / MP settings depending on your requirement.
eg: Maximum delivery attempts , Retry period etc.
For configuaring IBM WebsphreMQ with WSO2 ESB please click on this link :
WSO2 ESB Full Synapse Configuration
-------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
<registry provider="org.wso2.carbon.mediation.registry.WSO2Registry">
<parameter name="cachableDuration">15000</parameter>
</registry>
<proxy name="MySample2"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property name="FORCE_SC_ACCEPTED"
value="true"
scope="axis2"
type="STRING"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<store messageStore="JMSStore2"/>
</inSequence>
</target>
</proxy>
<proxy name="MySample"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property name="FORCE_SC_ACCEPTED"
value="true"
scope="axis2"
type="STRING"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<store messageStore="JMSStore1"/>
</inSequence>
</target>
</proxy>
<proxy name="MyMockProxy"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<log level="custom">
<property name="it" value="** Its Inline Sequence of MockProxy"/>
</log>
<payloadFactory media-type="xml">
<format>
<Response xmlns="">
<status>OK</status>
<code>1</code>
</Response>
</format>
<args/>
</payloadFactory>
<header name="To" action="remove"/>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
<property name="messageType" value="application/xml" scope="axis2"/>
<send/>
</inSequence>
</target>
</proxy>
<endpoint name="MyMockProxy">
<address uri="http://192.168.48.140:8280/services/MyMockProxy"/>
</endpoint>
<sequence name="fault">
<log level="full">
<property name="MESSAGE" value="Executing default 'fault' sequence"/>
<property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
<property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
</log>
<drop/>
</sequence>
<sequence name="main">
<in>
<log level="full"/>
<filter source="get-property('To')" regex="http://localhost:9000.*">
<send/>
</filter>
</in>
<out>
<send/>
</out>
<description>The main sequence for the message mediation</description>
</sequence>
<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore"
name="JMSStore1">
<parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
<parameter name="store.jms.password">wso2321#qa</parameter>
<parameter name="java.naming.provider.url">file:\C:\Users\Administrator\Desktop\jndidirectory</parameter>
<parameter name="store.jms.connection.factory">MyQueueConnectionFactory</parameter>
<parameter name="store.jms.username">Administrator</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
<parameter name="store.jms.destination">LocalQueue1</parameter>
</messageStore>
<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore"
name="JMSStore2">
<parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
<parameter name="store.jms.password">wso2321#qa</parameter>
<parameter name="java.naming.provider.url">file:\C:\Users\Administrator\Desktop\jndidirectory</parameter>
<parameter name="store.jms.connection.factory">MyQueueConnectionFactory5</parameter>
<parameter name="store.jms.username">Administrator</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
<parameter name="store.jms.destination">LocalQueue5</parameter>
</messageStore>
<messageProcessor class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor"
name="JMSMessagePro2"
targetEndpoint="MyMockProxy"
messageStore="JMSStore2">
<parameter name="client.retry.interval">1000</parameter>
<parameter name="max.delivery.attempts">5</parameter>
<parameter name="interval">10000</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
<messageProcessor class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor"
name="JMSMessagePro"
targetEndpoint="MyMockProxy"
messageStore="JMSStore1">
<parameter name="max.delivery.attempts">2</parameter>
<parameter name="client.retry.interval">1000</parameter>
<parameter name="interval">10000</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
</definitions>
Important Points :
[1] Identify the message flow ...
SoapRequest --> MySampleProxy --> MessageStore -->MessageQueue --> MessageProcessor
(SoapUI) (ESB) (ESB) (WebsphereMQ) (ESB)
|
MyMockProxy <--|
(ESB)
[2] Remember to set additional MS / MP settings depending on your requirement.
eg: Maximum delivery attempts , Retry period etc.
Thursday, September 1, 2016
Proxy with enrich mediator sends HTTP 200 together with a custom message
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="200Proxy"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="custom">
<property name="it" value="** Its Inline Sequence ****"/>
</log>
<loopback/>
</inSequence>
<outSequence>
<property name="HTTP_SC" value="200" scope="axis2"/>
<enrich>
<source type="inline" clone="true">
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header/>
<soapenv:Body>DIMUTHUD</soapenv:Body>
</soapenv:Envelope>
</source>
<target type="envelope"/>
</enrich>
<property name="messageType" value="application/soap+xml" scope="axis2"/>
<header name="To" action="remove"/>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<send/>
</outSequence>
</target>
<description/>
</proxy>
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="200Proxy"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="custom">
<property name="it" value="** Its Inline Sequence ****"/>
</log>
<loopback/>
</inSequence>
<outSequence>
<property name="HTTP_SC" value="200" scope="axis2"/>
<enrich>
<source type="inline" clone="true">
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header/>
<soapenv:Body>DIMUTHUD</soapenv:Body>
</soapenv:Envelope>
</source>
<target type="envelope"/>
</enrich>
<property name="messageType" value="application/soap+xml" scope="axis2"/>
<header name="To" action="remove"/>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<send/>
</outSequence>
</target>
<description/>
</proxy>
Subscribe to:
Comments (Atom)


