Yup that's the idea. Because with aws lb we can't do mutual ssl.

Thanks & Regards
Danushka Fernando
Senior Software Engineer
WSO2 inc. http://wso2.com/
Mobile : +94716332729


On Aug 20, 2015 8:54 AM, "Dimuthu Leelarathne" <[email protected]> wrote:

>
> Hi,
>
> On Wed, Aug 19, 2015 at 5:36 PM, Anuruddha Premalal <[email protected]>
> wrote:
>
>> Hi All,
>>
>> I raised the issue in jenkins dev mailing list and still waiting for a
>> response. Standalone jenkins use jetty servelet container [1]. However it's
>> still using winstone[2] for java command line argument parsing which I
>> couldn't find a way to configure SSL clientAuthentication.
>>
>> One workaround is to call stratos services using the stratos admin. The
>> other option is to use a signedJWT token athenticator.
>>
>> Using stratos admin for application(stratos) creation might  incur
>>  metering or appfactory wall related concerns in-future.
>> IMO if the MutualAuth doesn't work with current jenkins deployment it's
>> better to go for SignedJWT Authenticator.
>>
>
> +1 for SignedJWTAuthenticator and invoking the service as the tenant admin
> (and this means -1 doing it as super tenant admin).
>
> On the side(not related to this conversation) Is SignedJWTAuthenticator
> operating without Mutual SSL now?
>
> thanks,
> dimuthu
>
>
>>
>> Appreciate your feedback on this regard.
>>
>> [1]
>> https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins
>> [2] http://winstone.sourceforge.net/#configFile
>>
>> On Wed, Aug 19, 2015 at 12:20 PM, Anuruddha Premalal <[email protected]>
>> wrote:
>>
>>> Hi All,
>>>
>>> I've completed the following flow for single tenant cartridge.
>>>
>>> * Creating S2 git repo for app creation.
>>> * Creating and deploying the app in stratos and bringing up the
>>> cartridge.
>>> * Preparing the tomcat cartridge.
>>> * Creating s2 repo for app versioning
>>> * Cleaning application resources(stratos & s2 repos) on deletion.
>>>
>>> There's an issue in talking to stratos on application versioning.
>>>
>>> On versioning stratos rest calls(to create app) goes through jenkins, we
>>> are using MutualSSL for communication between stratos and deployers bundle.
>>> For this to work stratos expect "javax.servlet.request.X509Certificate"
>>> attribute to be set with the certificate object, this attribute is not
>>> getting set when the call goes through jenkins. Because of this stratos is
>>> unable to authenticate the application creation request.
>>>
>>>  Also there's an error log[1]  in jenkins before sending the rest call.
>>> This might be the reason for the failure of setting certificate object. FYI
>>> client truststore and the keystores are identical in jenkins and stratos
>>> side.
>>>
>>> has anyone encountered a similar issue before?
>>>
>>> [1] org.apache.commons.httpclient.HttpMethodDirector
>>> processAuthenticationResponse
>>> SEVERE: Invalid challenge: Basic
>>> org.apache.commons.httpclient.auth.MalformedChallengeException: Invalid
>>> challenge: Basic
>>> at
>>> org.apache.commons.httpclient.auth.AuthChallengeParser.extractParams(AuthChallengeParser.java:98)
>>> at
>>> org.apache.commons.httpclient.auth.RFC2617Scheme.processChallenge(RFC2617Scheme.java:94)
>>> at
>>> org.apache.commons.httpclient.auth.BasicScheme.processChallenge(BasicScheme.java:112)
>>> at
>>> org.apache.commons.httpclient.auth.AuthChallengeProcessor.processChallenge(AuthChallengeProcessor.java:162)
>>> at
>>> org.apache.commons.httpclient.HttpMethodDirector.processWWWAuthChallenge(HttpMethodDirector.java:694)
>>> at
>>> org.apache.commons.httpclient.HttpMethodDirector.processAuthenticationResponse(HttpMethodDirector.java:668)
>>> at
>>> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:193)
>>> at
>>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
>>> at
>>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
>>> at
>>> org.wso2.carbon.appfactory.s4.integration.StratosRestService.doPost(StratosRestService.java:301)
>>> at
>>> org.wso2.carbon.appfactory.s4.integration.StratosRestService.deployApplication(StratosRestService.java:134)
>>> at
>>> org.wso2.carbon.appfactory.deployers.StratosApplicationHandler.createAndDeployStratosApplication(StratosApplicationHandler.java:60)
>>> at
>>> org.wso2.carbon.appfactory.deployers.AbstractStratosDeployer.addToGitRepo(AbstractStratosDeployer.java:114)
>>> at
>>> org.wso2.carbon.appfactory.deployers.AbstractStratosDeployer.deploy(AbstractStratosDeployer.java:72)
>>> at
>>> org.wso2.carbon.appfactory.deployers.AbstractDeployer.deployLatestSuccessArtifact(AbstractDeployer.java:123)
>>> at
>>> org.wso2.carbon.appfactory.jenkins.deploy.JenkinsArtifactDeployer.deployLatestSuccessArtifact(JenkinsArtifactDeployer.java:84)
>>> at
>>> org.wso2.carbon.appfactory.jenkins.artifact.storage.AppfactoryArtifactStoragePlugin.doDynamic(AppfactoryArtifactStoragePlugin.java:92)
>>> 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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
>>> at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
>>> at
>>> org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
>>> at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:391)
>>> at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
>>> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
>>> at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
>>> at
>>> org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
>>> at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
>>> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
>>> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
>>> at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>>> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
>>> at
>>> hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:123)
>>> at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
>>> at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
>>> at
>>> hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
>>> at
>>> jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
>>> at
>>> org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
>>> at
>>> org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
>>> at
>>> org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
>>> at
>>> jenkins.security.BasicHeaderProcessor.success(BasicHeaderProcessor.java:140)
>>> at
>>> jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:82)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
>>> at
>>> org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
>>> at
>>> hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
>>> at
>>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
>>> at
>>> hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
>>> at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
>>> at
>>> org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
>>> at
>>> hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
>>> at
>>> org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
>>> at
>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>>> at
>>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
>>> at
>>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
>>> at
>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
>>> at
>>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
>>> at
>>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>>> at
>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
>>> at
>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>>> at
>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>>> at org.eclipse.jetty.server.Server.handle(Server.java:370)
>>> at
>>> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>>> at
>>> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
>>> at
>>> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
>>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
>>> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>>> at
>>> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>>> at org.eclipse.jetty.io.nio.SslConnection.handle(SslConnection.java:196)
>>> at
>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
>>> at
>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
>>> at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> at java.lang.Thread.run(Thread.java:744)
>>>
>>> Aug 19, 2015 11:31:51 AM org.apache.commons.httpclient.HttpMethodBase
>>> getResponseBody
>>> WARNING: Going to buffer response body of large or unknown size. Using
>>> getResponseBodyAsStream instead is recommended.
>>> Aug 19, 2015 11:31:51 AM
>>> org.wso2.carbon.appfactory.s4.integration.StratosRestService
>>> deployApplication
>>> SEVERE: Authorization failed when subsctibing to cartridge
>>>
>>>
>>> Regards,
>>> Anuruddha
>>>
>>> On Mon, Aug 3, 2015 at 4:00 PM, Anuruddha Premalal <[email protected]>
>>> wrote:
>>>
>>>> Hi Raj,
>>>>
>>>> Yes adding -Dstratos.component.startup.synchronizer.enabled=true to
>>>> stratos.sh fixed the issue. We missed updating stratos.sh file while doing
>>>> the migration from 4.0.0 to 4.1.0
>>>>
>>>>
>>>>
>>>> On Mon, Aug 3, 2015 at 1:44 PM, Rajkumar Rajaratnam <[email protected]
>>>> > wrote:
>>>>
>>>>> Hi Anuruddha,
>>>>>
>>>>> I guess we have already fixed this issue sometimes back. I went though
>>>>> the log again and found that you haven't enabled Component startup
>>>>> synchronizer. If you enable it, it will ensure that CompleteTopologyEvent
>>>>> will be published only after SM is activated (SM will be activated only
>>>>> after AS).
>>>>>
>>>>> In your logs, have a look at line number 402 : "Component startup
>>>>> synchronizer enabled: false"
>>>>>
>>>>> Please check whether your bin/stratos.sh have
>>>>> "-Dstratos.component.startup.synchronizer.enabled=true". If not, add it.
>>>>> Please let us know whether it resolves your issue.
>>>>>
>>>>> Thanks,
>>>>> Raj.
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Aug 3, 2015 at 12:59 PM, Anuruddha Premalal <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Raj,
>>>>>>
>>>>>> Thanks for the support given in finding the issue.I couldn't find a
>>>>>> public stratos jira for this so I've raised jira[1] to track this.
>>>>>>
>>>>>> [1] https://issues.apache.org/jira/browse/STRATOS-1487
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Aug 3, 2015 at 12:43 PM, Rajkumar Rajaratnam <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Monitors were not created because CompleteTopologyEvent was
>>>>>>> published before AutoscalerComponent was activated. In the attached 
>>>>>>> logs,
>>>>>>>
>>>>>>> Line number 478 - CompleteTopologyEvent was received by AS
>>>>>>> Line number 501 - AutoscalerComponent was activated
>>>>>>>
>>>>>>> When AS received CompleteTopologyEvent, it didn't load the
>>>>>>> application context from registry. Hence it just logged "The 
>>>>>>> application is
>>>>>>> not yet deployed for this [application] asdevelopment" (Line number 482)
>>>>>>> and ignored the CompleteTopologyEvent. And CompleteTopologyEvent is
>>>>>>> published only once (until topology is initialized) - so there is no way
>>>>>>> that the monitors will be created.
>>>>>>>
>>>>>>> It needs to be fixed.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Raj.
>>>>>>>
>>>>>>> On Mon, Aug 3, 2015 at 12:06 PM, Anuruddha Premalal <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> HI Raj,
>>>>>>>>
>>>>>>>> i'm attaching the carbon log file herewith.
>>>>>>>>
>>>>>>>> On Mon, Aug 3, 2015 at 11:52 AM, Rajkumar Rajaratnam <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Anuruddha,
>>>>>>>>>
>>>>>>>>> Cluster monitor can be created in two situations.
>>>>>>>>>
>>>>>>>>> 1) when a cluster is created for the first time (application
>>>>>>>>> deployment time)
>>>>>>>>> 2) when stratos is restarted
>>>>>>>>>
>>>>>>>>> If cluster monitor creation failed, it would log enough
>>>>>>>>> information about it (some error logs like "Monitor creation failed, 
>>>>>>>>> even
>>>>>>>>> after retrying for 5 times") . You can trace back the logs and see the
>>>>>>>>> reason for it. I don't think scenario 1) is the reason for the above
>>>>>>>>> behaviour, because the members will not be created if the cluster 
>>>>>>>>> monitor
>>>>>>>>> creation failed. Scenario 2) can be one reason for this behaviour. If 
>>>>>>>>> it is
>>>>>>>>> the reason, then you should be able to see some error logs regarding
>>>>>>>>> cluster monitor creation failed. Have you restarted stratos?
>>>>>>>>>
>>>>>>>>> Further, "*A cluster monitor is not found in autoscaler context" 
>>>>>>>>> *error
>>>>>>>>> doesn't necessarily mean that cluster monitor creation failed. It
>>>>>>>>> can be because cluster is undeployed and the monitor is removed before
>>>>>>>>> getting this event from CEP.
>>>>>>>>>
>>>>>>>>> If you could attach the complete log, we will be able to point out
>>>>>>>>> the issue.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Raj.
>>>>>>>>>
>>>>>>>>> On Mon, Aug 3, 2015 at 11:32 AM, Anuruddha Premalal <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Also this setup use kubernetes as the IaaS
>>>>>>>>>>
>>>>>>>>>> On Mon, Aug 3, 2015 at 11:31 AM, Anuruddha Premalal <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I am working on $subject.
>>>>>>>>>>>
>>>>>>>>>>> In the current appfactory setup we have a single JVM Stratos
>>>>>>>>>>> 4.1.0 deployment. I am trying to get the autoscaling working since
>>>>>>>>>>> resetting the SM node each time of failure consumes time. Once a 
>>>>>>>>>>> member
>>>>>>>>>>> fault event received to AS receives it but unable to continue with 
>>>>>>>>>>> the
>>>>>>>>>>> following log. When will the cluster monitor get initiated? What 
>>>>>>>>>>> would are
>>>>>>>>>>> the possibilities for failing the initialization of the cluster 
>>>>>>>>>>> monitor?
>>>>>>>>>>>
>>>>>>>>>>> *INFO
>>>>>>>>>>> {org.apache.stratos.cep.extension.FaultHandlingWindowProcessor} -  
>>>>>>>>>>> Faulty
>>>>>>>>>>> member detected [member-id]
>>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain38d5a847-d16a-4891-bbc0-6582cd9b9988
>>>>>>>>>>> with [last time-stamp] 1438580270973 [time-out] 60000 milliseconds*
>>>>>>>>>>> *TID: [0] [SCC] [2015-08-03 11:26:38,956]  INFO
>>>>>>>>>>> {org.apache.stratos.cep.extension.FaultHandlingWindowProcessor} -
>>>>>>>>>>>  Publishing member fault event for [member-id]
>>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain38d5a847-d16a-4891-bbc0-6582cd9b9988*
>>>>>>>>>>> *TID: [0] [SCC] [2015-08-03 11:26:38,969] DEBUG
>>>>>>>>>>> {org.apache.stratos.autoscaler.event.receiver.health.AutoscalerHealthStatEventReceiver}
>>>>>>>>>>> -  Member fault event received: [member]
>>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain38d5a847-d16a-4891-bbc0-6582cd9b9988
>>>>>>>>>>>  *
>>>>>>>>>>> *TID: [0] [SCC] [2015-08-03 11:26:38,969] DEBUG
>>>>>>>>>>> {org.apache.stratos.autoscaler.event.receiver.health.AutoscalerHealthStatEventReceiver}
>>>>>>>>>>> -  A cluster monitor is not found in autoscaler context [cluster]
>>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain*
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks & Regards,
>>>>>>>>>>> --
>>>>>>>>>>> *Anuruddha Premalal*
>>>>>>>>>>> Software Eng. | WSO2 Inc.
>>>>>>>>>>> Mobile : +94710461070
>>>>>>>>>>> Web site : www.regilandvalley.com
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Anuruddha Premalal*
>>>>>>>>>> Software Eng. | WSO2 Inc.
>>>>>>>>>> Mobile : +94710461070
>>>>>>>>>> Web site : www.regilandvalley.com
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Rajkumar Rajaratnam
>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>> Software Engineer, WSO2
>>>>>>>>>
>>>>>>>>> Mobile : +94777568639
>>>>>>>>> Blog : rajkumarr.com
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Anuruddha Premalal*
>>>>>>>> Software Eng. | WSO2 Inc.
>>>>>>>> Mobile : +94710461070
>>>>>>>> Web site : www.regilandvalley.com
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Rajkumar Rajaratnam
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>> Software Engineer, WSO2
>>>>>>>
>>>>>>> Mobile : +94777568639
>>>>>>> Blog : rajkumarr.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Anuruddha Premalal*
>>>>>> Software Eng. | WSO2 Inc.
>>>>>> Mobile : +94710461070
>>>>>> Web site : www.regilandvalley.com
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Rajkumar Rajaratnam
>>>>> Committer & PMC Member, Apache Stratos
>>>>> Software Engineer, WSO2
>>>>>
>>>>> Mobile : +94777568639
>>>>> Blog : rajkumarr.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Anuruddha Premalal*
>>>> Software Eng. | WSO2 Inc.
>>>> Mobile : +94710461070
>>>> Web site : www.regilandvalley.com
>>>>
>>>>
>>>
>>>
>>> --
>>> *Anuruddha Premalal*
>>> Software Eng. | WSO2 Inc.
>>> Mobile : +94710461070
>>> Web site : www.regilandvalley.com
>>>
>>>
>>
>>
>> --
>> *Anuruddha Premalal*
>> Software Eng. | WSO2 Inc.
>> Mobile : +94710461070
>> Web site : www.regilandvalley.com
>>
>>
>
>
> --
> Dimuthu Leelarathne
> Director & Product Lead of App Factory
>
> WSO2, Inc. (http://wso2.com)
> email: [email protected]
> Mobile : 0773661935
>
> Lean . Enterprise . Middleware
>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to