I tried to use the StatefulFilter but I am not able to achieve what I just wanted. I have the below configuration for the server. For particular ISO fields (field 7) I want to
I want to reply back with the same value as was sent by the client. If an inbuilt filter like org.jpos.iso.filter.StatefulFilter can do this I would not choose to add the logic
through the code.
<server name="eSewa-server-65000" class="org.jpos.q2.iso.QServer" logger="Q2">
<attr name="port" type="java.lang.Integer">65000</attr>
<attr name="minSessions" type="java.lang.Integer">1</attr>
<attr name="maxSessions" type="java.lang.Integer">5</attr>
<property name="debug" value="true"/>
<channel class="org.jpos.iso.channel.TelnetXMLChannel"
packager="org.jpos.iso.packager.XMLPackager"
type="server"
logger="Q2"
realm="server-channel-65000">
<filter class="org.jpos.iso.filter.StatefulFilter" logger="Q2" realm="server-StatefulFilter-65000">
<property name="direction" value="outgoing"/>
<property name="saved-fields" value="7"/>
</filter>
<property name="timeout" value="30000"/>
<filter class="org.jpos.iso.filter.DebugFilter" direction="incoming"/>
</channel>
<request-listener class="org.jpos.iso.IncomingListener" logger="Q2"
realm="incoming-request-listener">
<property name="space" value="tspace:default"/>
<property name="queue" value="TXNMGR"/>
<property name="ctx.DESTINATION" value="jPOS-AUTORESPONDER"/>
<property name="timeout" value="30000"/>
</request-listener>
</server>
You need to change the
directionproperty toincoming, from theStatefulFilterjavadoc onmatchDirection:And it seems you want to match the previously incoming request, when you send a response to include the original DE 7.
You'd need to change the
StatefulFilterdefinition to:Actually,
incomingis the default if not defined, because it's the most common use case, unless you want to match it in the channel that talks to the other end of your gateway. But (I believe) the most common use case if for retrieving something that precisely is lost in the internal use, but the client expects to receive the same value in the request.Well it's not a much used filter and its implementation has some issues. For instance, it does not check the MTI matches, and you cannot add field 0 to the key, because the MTI of the response will not match the one of the request. It should do what
QMUXdoes, but its implementation is too basic.