Dynamically Fetch VFS Parameters from a Properties/Local Entry File

51 Views Asked by At

I am trying to setup a vfs proxy service in wso2, I want to set the vfs parameters of the proxy config using a properties or local entry file.

I tried using the Local Entries file in my ESB project but it doesn't seem to work. Browsing through Internet did not help, tried chat-gpt, it suggested me to use local entry, but the solution does not work.

Local Entry File:

<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="vfs-parameters"
    xmlns="http://ws.apache.org/ns/synapse">
    <vfs-parameters xmlns="">
        <parameter name="transport.vfs.ContentType">text/plain</parameter>
        <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
        <parameter name="sequential">true</parameter>
        <parameter name="transport.vfs.MoveAfterFailure">file:///C:/WSO2/Trimark/Products/Error</parameter>
        <parameter name="transport.vfs.MoveAfterProcess">file:///C:/WSO2/Trimark/Products/Done</parameter>
        <parameter name="coordination">true</parameter>
        <parameter name="transport.vfs.Streaming">true</parameter>
        <parameter name="transport.PollInterval">2000</parameter>
        <parameter name="transport.vfs.MaxRetryCount">1</parameter>
        <parameter name="transport.vfs.FileURI">file:///C:/WSO2/Trimark/Products/In</parameter>
        <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
        <parameter name="transport.vfs.FileSortAttribute">Name</parameter>
        <parameter name="transport.vfs.FileNamePattern">.*.xml</parameter>
    </vfs-parameters>
</localEntry>

Proxy Config:

<?xml version="1.0" encoding="UTF-8"?>
<proxy name="ProxyA" startOnLoad="true" transports="vfs"
    xmlns="http://ws.apache.org/ns/synapse">
    <target>
        <inSequence>
            <log level="custom" separator="&#xa;">
                <property name="PROXY NAME" value="PROXY A" />
                <property
                    expression="get-property('transport', 'FILE_NAME')"
                    name="FILE NAME" />
                <property
                    expression="get-property('transport', 'LAST_MODIFIED')"
                    name="LAST MODIFIED" />
            </log>
            <class name="com.sample.Sample" />
        </inSequence>
        <outSequence />
        <faultSequence />
    </target>
    <parameter name="transport.vfs.ContentType" key="vfs-parameters" />
    <parameter name="transport.vfs.ActionAfterProcess" key="vfs-parameters" />
    <parameter name="sequential" key="vfs-parameters" />
    <parameter name="transport.vfs.MoveAfterFailure" key="vfs-parameters" />
    <parameter name="transport.vfs.MoveAfterProcess" key="vfs-parameters" />
    <parameter name="coordination" key="vfs-parameters" />
    <parameter name="transport.vfs.Streaming" key="vfs-parameters" />
    <parameter name="transport.PollInterval" key="vfs-parameters" />
    <parameter name="transport.vfs.MaxRetryCount" key="vfs-parameters" />
    <parameter name="transport.vfs.FileURI" key="vfs-parameters" />
    <parameter name="transport.vfs.ActionAfterFailure" key="vfs-parameters" />
    <parameter name="transport.vfs.FileSortAttribute" key="vfs-parameters" />
    <parameter name="transport.vfs.FileNamePattern" key="vfs-parameters" />
</proxy>

Stack Trace:

[2023-09-22 17:29:25,216] ERROR {VFSTransportListener} - Unexpected error when configuring service ProxyA for the VFS transport. It will be disabled for this transport and marked as faulty. java.lang.NumberFormatException: For input string: ""
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
        at java.base/java.lang.Integer.parseInt(Integer.java:675)
        at java.base/java.lang.Integer.parseInt(Integer.java:781)
        at org.apache.synapse.transport.vfs.PollTableEntry.loadConfigurationsFromService(PollTableEntry.java:590)
        at org.apache.synapse.transport.vfs.PollTableEntry.loadConfiguration(PollTableEntry.java:490)
        at org.apache.axis2.transport.base.AbstractTransportListenerEx.startListeningForService(AbstractTransportListenerEx.java:153)
        at org.apache.axis2.transport.base.AbstractTransportListener.internalStartListeningForService(AbstractTransportListener.java:213)
        at org.apache.axis2.transport.base.AbstractTransportListener$2.serviceAdded(AbstractTransportListener.java:126)
        at org.apache.axis2.transport.base.tracker.AxisServiceTracker.serviceAdded(AxisServiceTracker.java:212)
        at org.apache.axis2.transport.base.tracker.AxisServiceTracker.start(AxisServiceTracker.java:188)
        at org.apache.axis2.transport.base.AbstractTransportListener.start(AbstractTransportListener.java:178)
        at org.apache.axis2.transport.base.AbstractTransportListenerEx.start(AbstractTransportListenerEx.java:83)
        at org.apache.axis2.engine.ListenerManager.start(ListenerManager.java:168)
        at org.apache.axis2.engine.ListenerManager.startSystem(ListenerManager.java:186)
        at org.wso2.micro.integrator.initializer.StartupFinalizer.completeInitialization(StartupFinalizer.java:79)
        at org.wso2.micro.integrator.initializer.StartupFinalizer.finalizeStartup(StartupFinalizer.java:61)
        at org.wso2.micro.integrator.initializer.deployment.AppDeployerServiceComponent.activate(AppDeployerServiceComponent.java:83)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)
        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:192)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)
        at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
        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:147)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)
        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)
0

There are 0 best solutions below