首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何@ JPOS QServer侦听器中的自动春豆?

如何@ JPOS QServer侦听器中的自动春豆?
EN

Stack Overflow用户
提问于 2017-06-20 11:47:43
回答 1查看 1.8K关注 0票数 1

我们正在运行spring引导应用程序。在这里,在Spring被引导之后,我们尝试运行JPOS QServer。它启动了Q2,我们可以从模拟器clinet获得ISOmsgs,我们也可以响应beck。

为了启动Q2,我们使用了,如下所示。

代码语言:javascript
运行
复制
<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中可以看到,它侦听ISOMessangerListener类,这当然不是spring相关的类,而且我认为spring和QServer运行在不同的Servlets上。因此,这里出现了这样的问题:我们这里没有任何与Spring相关的bean,我们不能@Autowired。但是我们所有的业务逻辑已经在春天写好了。

到目前为止我们尝试了什么

1)使应用程序上下文保持静态,并在需要时在ISOMessageListener中使用它(失败后,上下文在接收到侦听器的消息后为空)。

2)做这样的事。SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

阅读了很多文章,说明了如何从春天之外获得上下文。

到目前为止,我使用jvisualvm检查Q2和Springboot是否都是作为一个应用程序运行的。

希望至少能得到一些建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 16:53:25

如果有人对我如何使它工作感兴趣,而不是通过ISOServer ( Q2文件)运行它,我只是在我的spring已经启动时手动执行它,然后取下已经存在的ISORequestListener bean并将它传递给服务器。

代码语言:javascript
运行
复制
@Component
public class ISOserver implements ISORequestListener {

@Autowired
ISOserver isOserver;

@EventListener(ContextRefreshedEvent.class)
public void contextRefreshedEvent() throws Exception{
    Logger logger = new Logger();
    logger.addListener(new SimpleLogListener(System.out));
    ServerChannel channel = new XMLChannel(new XMLPackager());
    ((LogSource) channel).setLogger(logger, "channel");
    ISOServer isoServer = new ISOServer(8118, channel, null);
    isoServer.setLogger(logger, "server");
    isoServer.addISORequestListener(isOserver);
    new Thread(isoServer).start();
}

@Override
public boolean process(ISOSource isoSource, ISOMsg receivedISOmsg) {

    return false;
}
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44652231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档