【发布时间】:2017-08-16 09:22:53
【问题描述】:
当 jpos 频道标题字符串包含空格时,我遇到了一个问题。我在通道适配器配置中进行了如下配置,但是当我启动 Q2 服务器时,它似乎修剪了标头值。因此,对于某些请求,我没有从 jpos 服务器得到任何响应。
<channel-adaptor class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2" name="my-channel">
<channel class="CBCChannel" logger="Q2"
packager="org.jpos.iso.packager.GenericPackager" header="ISOHEADER ">
<property name="packager-config" value="/path/to/PACKAGER/iso87ascii.xml" />
<property name="host" value="xxx.xx.xx.xx"/>
<property name="port" value="yyyy" />
</channel>
<in>channel-send</in>
<out>channel-receive</out>
<property name="timeout" value="300000" />
<property name="keep-alive" value="true" />
<reconnect-delay>10000</reconnect-delay>
</channel-adaptor>
CBCChannel 只是扩展了 RawChannel
public class CBCChannel extends RawChannel {
public CBCChannel() throws ISOException {
}
public CBCChannel(String host, int port, ISOPackager p, byte[] header) {
super(host, port, p, header);
}
public CBCChannel(ISOPackager p, byte[] header) throws IOException {
super(p, header);
}
public CBCChannel(ISOPackager p, byte[] header, ServerSocket serverSocket) throws IOException {
super(p, header, serverSocket);
}
}
有什么方法可以配置包含空格而不忽略空格的频道头?
【问题讨论】:
-
您好,您有一个自定义通道实现,因为我们不知道它的作用或它从哪里扩展的通道我们无法说明您的 setHeader 是如何实现的,因此我们无法指导您.请添加 CBCChannel 代码,或者如果其余部分已分类,请至少添加 extends 部分。
-
嗨 Andres,我添加了 CBCChannel 代码。它只是扩展了 RawChannel 接口,不对标头做任何事情。
-
如果你没有重写任何方法,我不知道你为什么要扩展 RawChannel,但无论如何主要问题是 RawChannel 需要一个只有数字的标题,因为它将它们编码为 bcd。跨度>
-
当我在构造函数中设置标题(不带参数)并删除通道适配器配置中的标题配置时,它工作正常。但我需要将标头配置移出代码。
-
或者推荐的方式是什么?