我有本地REST服务(嵌入式Jersey)从本地连接的硬件(3M MRZ阅读器)获取数据。
硬件API允许定义事件处理程序以使用设备生成的数据。应该通过服务调用初始化设备。
要从服务中获取数据,我将其放入变量并尝试从服务方法中读取它。
private String mrzRead = null;
@GET
@Path("/scan")
@Produces(MediaType.TEXT_PLAIN)
public String scan() {
initReader();
String res = null;
mrzRead = null;
do {
try {
Thread.sleep(100L);
} catch (InterruptedException e) {
}
synchronized(this) {
res = mrzRead;
}
} while(res==null);
mrzRead = null;
return res;
}
//Event handler
@Override
public void OnFullPageReaderEvent(EventCode aEventType) {
...
synchronized(this) {
mrzRead = lCodeline.Data;
}
...
}
这种方法不允许从外部(另一个服务调用)中断等待周期,这有时需要。
有没有更好的方法从服务返回事件处理程序生成的值?
答案 0 :(得分:0)
将值读取器和REST服务分开会更好。 一些方法: