如何在服务器通道中使用StatefulFilter回传客户端ISO字段值?
用jPOS StatefulFilter实现响应回传请求的ISO字段7
你的配置问题在于只设置了outgoing方向的StatefulFilter,但该过滤器需要先在incoming阶段保存请求里的字段,才能在outgoing阶段填充到响应中。以下是修正后的配置:
<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"> <!-- 先在incoming方向保存请求的字段7 --> <filter class="org.jpos.iso.filter.StatefulFilter" logger="Q2" realm="server-StatefulFilter-incoming"> <property name="direction" value="incoming"/> <property name="saved-fields" value="7"/> </filter> <!-- 在outgoing方向将保存的字段7填充到响应 --> <filter class="org.jpos.iso.filter.StatefulFilter" logger="Q2" realm="server-StatefulFilter-outgoing"> <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>
关键说明:
- incoming过滤器:当服务器接收客户端请求时,会将字段7的值保存到当前会话的状态中
- outgoing过滤器:当服务器发送响应时,会从会话状态中取出保存的字段7值,自动覆盖响应报文中对应的字段7
- 确保你的
jPOS-AUTORESPONDER生成的响应报文包含字段7(即使是占位值),这样过滤器才能完成替换
这样配置后,无需自行编写代码逻辑,就能实现响应回传请求的字段7值。
内容的提问来源于stack exchange,提问作者Sanjok
相关产品推荐
相关产品推荐

