Tuesday, February 28, 2017

How to operate P2 repositories through the admin service

Even the WSO2 product comes with the default set of features, Anybody can install additional features based on their requirements. During the product release, WSO2 release feature repository aligns with the product release. It contains all the features can be installed in each product. Feature repository we called as a P2 repository and it's hosted on location again the to the product release version.

P2 repository can be installed via the "features" menu in each product UI console.

But some users may want to automate this process without logging to the management console UI. Following are the way It's can automate.

WSO2 product having set of admin services (SOAP service) which id do various operations.  For the P2 repository operations, there is an admin service called "RepositoryAdminService" and it's having all the operation which are doing through the admin console UI. you can call these admin service operation from the external client (soap client or java client) according to your requirement.
Please find the sample way to call these operations. In here I am using SOAP UI tool to call admin service operations.

1. Open PRODUCT_HOME/repository/conf/carbon.xml

2. Find proipertuy and change the value to false. 

ex :  false

In this way you can see the all admin service WSDL's from the browser.



 3. Start WSO2 prodcut with "-DosgiConsole" option.

ex :  Chamaras-MacBook-Pro:wso2greg-5.2.0 chamara$ ./bin/wso2server.sh -DosgiConsole

 4. Once server start, press enter button and it will direct you to the osgi console. Then type "listAdminServices" command. It will list down all admin services available in the product.


5. In here you will find the repository management admin service.

ex: https://10.100.1.36:9443/services/RepositoryAdminService

6. you can see the RepositoryAdminService wsdl with below URL.

"https://10.100.1.36:9443/services/RepositoryAdminService?wsdl"

7. Import above wsdl url  as a SOAP UI project.


















8. Now you can call admin service operation based on the requires functionality. 

Add Repository




Delete Repository


Enable Repository

Disable Repository



Update existing repository
This way you can do the repository operations from the outside.


Friday, July 1, 2016

Enable solr indexing debug log of WSO2 servers.

Most of the WSO2 products come with the embedded registry which is stored in several types of service artifacts. Each artifact stored as a registry artifacts. Registry artifacts are stored in an underline database as a blob content.
In practical scenario WSO2 products (ESB,Governance Registry, API Manager etc) having millions of registry resources. If WSO2 product want to search specific registry resource, It should search it from the millions of records and it will huge time consuming task and it will affected to the overall product performance.
Registry indexing comes to overcome this problem in WSO2 products. It uses embedded Solr indexing to index all of registry resources.

If anybody wants to verify how the indexing done on WSO2 products, There are indexing components you can enable debug logs. To enable it open,

1. CARBON_HOME/repository/conf/log4j.properties file.

2. Add below lines to log4j.properties file.

 log4j.logger.org.wso2.carbon.registry.indexing.solr.SolrClient=DEBUG
 log4j.logger.org.wso2.carbon.registry.indexing.ResourceSubmitter=DEBUG

3. Start Server. You will see below debug log printed in console while registry resources are indexing. 


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  Server           :  WSO2 Governance Registry-5.1.0

[2016-07-01 13:57:14,819]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  WSO2 Carbon started in 33 sec

[2016-07-01 13:57:15,077]  INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} -  Mgt Console URL  : https://10.100.1.36:9445/carbon/

[2016-07-01 13:57:15,077]  INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} -  Governance Center Store Default Context : http://10.100.1.36:9765/store

[2016-07-01 13:57:15,078]  INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} -  Governance Center Publisher Default Context : https://10.100.1.36:9445/publisher

[2016-07-01 13:57:25,505] DEBUG {org.wso2.carbon.registry.indexing.ResourceSubmitter} -  Resource Updated: Resource at /_system/governance/repository/components/org.wso2.carbon.all-themes/Default/images/warn.png has been submitted to the Indexing Server

[2016-07-01 13:57:25,507] DEBUG {org.wso2.carbon.registry.indexing.ResourceSubmitter} -  Resource Updated: Resource at /_system/governance/repository/components/org.wso2.carbon.all-themes/Default/images/view.gif has been submitted to the Indexing Server

[2016-07-01 13:57:25,508] DEBUG {org.wso2.carbon.registry.indexing.ResourceSubmitter} -  Resource Updated: Resource at /_system/governance/repository/components/org.wso2.carbon.all-themes/Default/images/trace.png has been submitted to the Indexing Server

[2016-07-01 13:57:25,509] DEBUG {org.wso2.carbon.registry.indexing.ResourceSubmitter} -  Resource Updated: Resource at /_system/governance/repository/components/org.wso2.carbon.all-themes/Default/images/test.gif has been submitted to the Indexing Server 

Friday, April 15, 2016

How to generate random strings or number from Jmeter

While testing soap services, most of the time we may need jmeter scripts to generate random string or numbers as a service parameters.
I had a soap service to send the name (string value) and age (integer value) contentiously and each value should not be repeatable need to be random unique values. I used Random and RandomString functions to generate these values. Following Jmeter scrips may help you to do that.

Please find the SOAP/XML RPC request which I used here.

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dat="http://ws.wso2.org/dataservice">  
   <soapenv:Header/>  
   <soapenv:Body>  
    <dat:inputOP>  
      <dat:age>${__RandomString(5,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789,)}</dat:age>  
      <dat:name>${__Random(5,0123456789,)}</dat:name>  
    </dat:inputOP>  
   </soapenv:Body>  
 </soapenv:Envelope>  


It will send SOAP request as below.

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dat="http://ws.wso2.org/dataservice">  
   <soapenv:Header/>  
   <soapenv:Body>  
    <dat:inputOP>  
      <dat:age>X7NQH</dat:age>  
      <dat:name>97593961</dat:name>  
    </dat:inputOP>  
   </soapenv:Body>  
 </soapenv:Envelope>  


Friday, March 4, 2016

How to enable HTTP wirelog for non synapse products (WSO2)

As we already know in WSO2 ESB and APIM can enable wirelog for trace the synapse massages in variius situations. But if you want to see messages going inside the Governance Registry, Application Server like non synapse based products, Following wirelog prroperties can be added in to the log4j.properties file.

 log4j.logger.httpclient.wire.content=DEBUG
 log4j.logger.httpclient.wire.header=DEBUG

It will show up all https messaged going behind the server.

 



Friday, July 17, 2015

How to disable HTTP Keep-Alive connections in WSO2 ESB / API Manager


WSO2 API manager and ESB uses HTTP keep-alive connection by default. If Keep-alive connection enabled, It will be used same HTTP connection to send request and getting responses. But if you want to disable keep-alive connection, Following property need to be added into the in-sequence in proxy service or API.