0

我需要集成我的 REST (Jersey) 和串行端口通信。我现在在处理服务器操作时遇到问题。基本上我使用的是 RXTXcomm.jar 库并直接打开端口(串行端口的参数是硬编码的):

public class ApplicationConfig extends Application {
      public ApplicationConfig () {
            // init serial port here
      }
}

我的问题:

  1. init 类是通过第一次调用我的 API 来实例化的。我可以在服务器启动后以某种方式强制初始化吗?
  2. 二是关闭港口。当我停止服务器时,我需要关闭我的端口。如何检测服务器停止事件?
  3. 您是否发现这种方法存在一些问题?(这是可选问题)。

谢谢。


我不想通过 HTTP 请求传递数据。只需使用一些参数,然后在 REST 资源内部填充串行数据。请求将非常罕见,并且仅来自一个“客户”。

4

2 回答 2

1

如果您实现 aServletContextListener您可以在服务器启动时初始化您的 init 类。

  1. ServletContextListener有一个contextInitialized(javax.servlet.ServletContextEvent)在服务器启动时被调用的方法,你可以重写它来初始化你的 init 类。
  2. ServletContextListenercontextDestroyed(javax.servlet.ServletContextEvent)当服务器停止时,它会被调用,你可以覆盖它来关闭你的端口。
  3. 你的似乎是一个爱好项目,所以我建议你先让它工作,然后再考虑优化/清理。
于 2013-09-10T23:50:19.000 回答
1

我想可能会有一个潜在的问题,如果在第一个请求仍在写入串行端口时发出第二个请求。

您可以创建一个独立的应用程序,该应用程序将通过 tcp/ip(或命名管道或其他 ipc 方式)接收数据,将其缓存在队列中并将其转发到串行端口。

于 2013-09-10T23:13:11.357 回答