2017-08-16 6 views
2

jposチャンネルのヘッ​​ダー文字列にスペースが含まれていると問題が発生しました。以下のようなチャンネル構成で設定しましたが、Q2サーバーを起動すると、ヘッダー値がトリミングされているようです。その結果、特定の要求については、私はJposサーバーから何の応答も得られません。スペースで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); 
    } 
} 

を拡張しますか?

+0

こんにちは、私たちはそれが何であるか、それがどこから拡張されているのかわからないので、あなたはカスタムチャンネルの実装を持っています。あなたのsetHeaderがどのように実装されているのかわからないので、 CBCChannelコードを追加してください。または、残りの部分がclasseifiedの場合は、少なくとも拡張部分を追加してください。 –

+0

こんにちはAndres、私はCBCChannelコードを追加しました。これはRawChannelインターフェイスを拡張するだけで、ヘッダーには何もしません。 – Chanikag

+0

どのような方法でもオーバーライドしなかった場合、なぜRawChannelを拡張するのか分かりませんが、主な問題は、RawChannelがbcdとしてエンコードするので、唯一の数字のヘッダーが必要だということです。 –

答えて

0

私はあなただけのsetHeaderメソッドオーバーライドする必要があると思います:

public CBCChannel extends RawChannel { 
.... 
    public void setHeader(String header){ 
     super.setHeader(header.getBytes()); 
    } 

} 

しかし、あなたは唯一のBaseChannelはヘッダに関して何をやっているだろうし。 RawChannelベースのチャンネルが必要ですか?

関連する問題