スプリング ブート アプリケーションを実行しています。そこで、Spring の起動後に JPOS QServer を実行しようとします。Q2 が開始され、シミュレータ clinet から ISOmsg を受信でき、Beck に応答することもできます。
第 2 四半期を開始するために、次のような xml 構成を使用しました。
<server class="org.jpos.q2.iso.QServer" name="Server-A-Server" logger="Q2">
<attr name="port" type="java.lang.Integer">8118</attr>
<attr name="maxSessions" type="java.lang.Integer">100</attr>
<attr name="minSessions" type="java.lang.Integer">0</attr>
<!-- Format server name: "Project Name" + "-" + "Channel" -->
<channel name="Server-A-Channel" class="org.jpos.iso.channel.XMLChannel" logger="Q2"
packager="org.jpos.iso.packager.XMLPackager">
</channel>
<request-listener class="fi.neocard.jpos.ISOMessageListener">
<property name="timeout" value="10000"/>
</request-listener>
上記の xml からわかるように、当然、Spring 関連のクラスではない ISOMessangerListener クラスをリッスンします。さらに、Spring と QServer は異なるサーブレットで実行されていると思います。したがって、ここに Spring 関連の Bean がなく、@Autowired を実行できないという問題が発生します。しかし、すべてのビジネス ロジックはすでに春に書かれています。
これまでに試したこと
1) アプリケーション コンテキストを静的に保持し、必要に応じて ISOMessageListener で使用します (リスナーへのメッセージを受信した後、コンテキストが null で失敗しました)。
2) このようなことをする。SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
そして、春以外からコンテキストを取得する方法について多くの記事を読みました。
これまでのところjvisualvm
、Q2 と Springboot の両方が単一のアプリケーションとして実行されていることを確認しました。
何をすべきか、少なくともいくつかの提案を得ることを願っています。