wso2 / micro-integrator

The cloud-native configuration driven runtime that helps developers implement composite microservices.
https://wso2.com/integration/
Apache License 2.0
202 stars 218 forks source link

[S3 Connector]S3 Connector is disabled when it is deployed through Integration Studio #1128

Open isuruuy429 opened 4 years ago

isuruuy429 commented 4 years ago

Description: Steps to reproduce:

  1. Create the following API resource.

    <api xmlns="http://ws.apache.org/ns/synapse" name="Amazons3Operations" context="/amazons3">
    <resource methods="POST">
      <inSequence>
         <property name="accessKeyId" expression="json-eval($.accessKeyId)" scope="default" type="STRING"/>
         <property name="secretAccessKey" expression="json-eval($.secretAccessKey)" scope="default" type="STRING"/>
         <property name="bucketName" expression="json-eval($.bucketName)" scope="default" type="STRING"/>
         <property name="bucketRegion" expression="json-eval($.bucketRegion)" scope="default" type="STRING"/>
         <property name="host" expression="json-eval($.host)" scope="default" type="STRING"/>
         <property name="bucketUrl" expression="json-eval($.bucketUrl)" scope="default" type="STRING"/>
         <property name="contentType" expression="json-eval($.contentType)" scope="default" type="STRING"/>
         <property name="methodType" expression="json-eval($.methodType)" scope="default" type="STRING"/>
         <property name="xAmzAcl" expression="json-eval($.xAmzAcl)" scope="default" type="STRING"/>
         <property name="addCharset" expression="json-eval($.addCharset)" scope="default" type="STRING"/>
         <property name="region" expression="json-eval($.region)" scope="default" type="STRING"/>
         <property name="isXAmzDate" expression="json-eval($.isXAmzDate)" scope="default" type="STRING"/>
         <amazons3.init>
            <accessKeyId>{$ctx:accessKeyId}</accessKeyId>
            <secretAccessKey>{$ctx:secretAccessKey}</secretAccessKey>
            <region>{$ctx:region}</region>
            <methodType>{$ctx:methodType}</methodType>
            <contentType>{$ctx:contentType}</contentType>
            <addCharset>{$ctx:addCharset}</addCharset>
            <host>{$ctx:host}</host>
            <isXAmzDate>{$ctx:isXAmzDate}</isXAmzDate>
            <bucketName>{$ctx:bucketName}</bucketName>
         </amazons3.init>
         <amazons3.createBucket>
            <bucketUrl>{$ctx:bucketUrl}</bucketUrl>
            <bucketRegion>{$ctx:bucketRegion}</bucketRegion>
         </amazons3.createBucket>
         <respond/>
      </inSequence>
      <outSequence/>
      <faultSequence/>
    </resource>
    </api>
  2. Obtain valid AccessKeyId and accessSecretKeyId from AmazonS3.

  3. Export the Composite Application and run in the Micro Integrator.

  4. Invoke the API as below.

    {
    "accessKeyId": "",
    "secretAccessKey":"",
    "isXAmzDate":"true",
    "bucketUrl":"http://s3.us-east-2.amazonaws.com/diazo8989",
    "methodType":"PUT",
    "contentType":"application/xml",
    "bucketName":"diazo8989",
    "host":"s3.us-east-2.amazonaws.com",
    "bucketRegion":"us-east-2",
    "region":"us-east-2",
    "addCharset":"false",
    "xAmzAcl":"public-read"
    }

    Expected: The Bucket should be created and 200 should be returned in response. Actual: Getting the following Log and 202 is returned.

    [2020-02-03 12:08:12,733] ERROR {API_LOGGER.Amazons3Operations} - Sequence template org.wso2.carbon.connector.amazons3.init cannot be found
    [2020-02-03 12:08:12,740]  WARN {API_LOGGER.Amazons3Operations} - Executing fault handler due to exception encountered
    [2020-02-03 12:08:12,741]  WARN {API_LOGGER.Amazons3Operations} - ERROR_CODE : 0 ERROR_MESSAGE : Sequence template org.wso2.carbon.connector.amazons3.init cannot be found

When it lists the connector through the CLI, the AmazonS3 connector is disabled. Steps:

./mi connector show

Response:

  NAME       STATUS     PACKAGE                     DESCRIPTION                    
  amazons3   disabled   org.wso2.carbon.connector   amazon S3 connector libraries  

Affected Product Version: Integration Studio 7.0.0 MI 1.1.0 S3 Connector 1.0.9

OS, DB, other environment details and versions: Macos Mojave

abeykoon commented 4 years ago

When deployed I got following error. Not related to above.

[2020-02-05 16:31:42,452] ERROR {org.wso2.micro.integrator.initializer.deployment.synapse.deployer.SynapseAppDeployer} - Unable to update status for :  {org.wso2.carbon.connector}amazons3 :: Template configuration : null cannot be builtfor Synapse Library artifact : getObject org.apache.synapse.deployers.SynapseArtifactDeploymentException: Template configuration : null cannot be builtfor Synapse Library artifact : getObject
    at org.apache.synapse.libraries.model.LibraryArtifact$TemplateArtifactFile.build(LibraryArtifact.java:196)
    at org.apache.synapse.libraries.model.LibraryArtifact.loadComponentsInto(LibraryArtifact.java:100)
    at org.apache.synapse.libraries.model.SynapseLibrary.loadLibrary(SynapseLibrary.java:144)
    at org.apache.synapse.libraries.model.SynapseLibrary.loadLibrary(SynapseLibrary.java:129)
    at org.apache.synapse.libraries.util.LibDeployerUtils.loadLibArtifacts(LibDeployerUtils.java:340)
    at org.wso2.micro.integrator.initializer.deployment.synapse.deployer.SynapseAppDeployer.addImport(SynapseAppDeployer.java:535)
    at org.wso2.micro.integrator.initializer.deployment.synapse.deployer.SynapseAppDeployer.addImport(SynapseAppDeployer.java:478)
    at org.wso2.micro.integrator.initializer.deployment.synapse.deployer.SynapseAppDeployer.updateStatus(SynapseAppDeployer.java:438)
    at org.wso2.micro.integrator.initializer.deployment.synapse.deployer.SynapseAppDeployer.deploySynapseLibrary(SynapseAppDeployer.java:381)
    at org.wso2.micro.integrator.initializer.deployment.synapse.deployer.SynapseAppDeployer.deployArtifacts(SynapseAppDeployer.java:118)
    at org.wso2.micro.integrator.initializer.deployment.application.deployer.CAppDeploymentManager.deploy(CAppDeploymentManager.java:129)
    at org.wso2.micro.integrator.initializer.deployment.AppDeployerServiceComponent.activate(AppDeployerServiceComponent.java:80)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    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:113)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:985)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:866)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:525)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:544)
    at org.wso2.micro.integrator.initializer.ServiceBusInitializer.activate(ServiceBusInitializer.java:162)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    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:113)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:985)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:866)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:525)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:544)
    at org.wso2.micro.integrator.ntask.core.internal.TasksDSComponent.activate(TasksDSComponent.java:88)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    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.buildNewlySatisfied(Resolver.java:473)
    at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
    at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
    at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
    at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
    at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
Caused by: org.apache.synapse.SynapseException: Error in instantiating class : org.wso2.carbon.connector.amazons3.auth.AmazonS3URLSignatureCreation
    at org.apache.synapse.config.xml.ClassMediatorFactory.createSpecificMediator(ClassMediatorFactory.java:114)
    at org.apache.synapse.config.xml.AbstractMediatorFactory.createMediator(AbstractMediatorFactory.java:96)
    at org.apache.synapse.config.xml.MediatorFactoryFinder.getMediator(MediatorFactoryFinder.java:223)
    at org.apache.synapse.config.xml.AbstractListMediatorFactory.addChildren(AbstractListMediatorFactory.java:46)
    at org.apache.synapse.config.xml.FilterMediatorFactory.createSpecificMediator(FilterMediatorFactory.java:136)
    at org.apache.synapse.config.xml.AbstractMediatorFactory.createMediator(AbstractMediatorFactory.java:96)
    at org.apache.synapse.config.xml.MediatorFactoryFinder.getMediator(MediatorFactoryFinder.java:223)
    at org.apache.synapse.config.xml.AbstractListMediatorFactory.addChildren(AbstractListMediatorFactory.java:46)
    at org.apache.synapse.config.xml.TemplateMediatorFactory.createSpecificMediator(TemplateMediatorFactory.java:62)
    at org.apache.synapse.config.xml.AbstractMediatorFactory.createMediator(AbstractMediatorFactory.java:96)
    at org.apache.synapse.config.xml.MediatorFactoryFinder.getMediator(MediatorFactoryFinder.java:223)
    at org.apache.synapse.libraries.model.LibraryArtifact$TemplateArtifactFile.build(LibraryArtifact.java:191)
    ... 70 more
Caused by: java.lang.NoClassDefFoundError: org/wso2/carbon/registry/core/exceptions/RegistryException
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.newInstance(Class.java:412)
    at org.apache.synapse.config.xml.ClassMediatorFactory.createSpecificMediator(ClassMediatorFactory.java:110)
    ... 81 more
Caused by: java.lang.ClassNotFoundException: Class Not found : org.wso2.carbon.registry.core.exceptions.RegistryException
    at org.apache.axis2.deployment.DeploymentClassLoader.findClass(DeploymentClassLoader.java:95)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at org.apache.axis2.deployment.DeploymentClassLoader.loadClass(DeploymentClassLoader.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 86 more