Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 串口通信与web应用_Java_Web Services_Web Applications_Serial Port - Fatal编程技术网

Java 串口通信与web应用

Java 串口通信与web应用,java,web-services,web-applications,serial-port,Java,Web Services,Web Applications,Serial Port,我需要集成我的REST(Jersey)和串行端口通信。我现在在处理服务器操作时遇到问题。基本上,我使用的是RXTXcomm.jar库,并在中直接打开端口(串行端口的参数是硬编码的): 我的问题: init类在第一次调用我的API时被实例化。我是否可以在服务器启动后提前强制初始化 二是港口关闭。当我停止服务器时,我需要关闭我的端口。如何检测服务器停止事件 您认为这种方法存在一些问题吗?(这是可选问题) 谢谢 我不想通过HTTP请求传递数据。只需使用一些参数,然后在REST资源内部填充串行数据。请

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

我的问题:

  • init类在第一次调用我的API时被实例化。我是否可以在服务器启动后提前强制初始化
  • 二是港口关闭。当我停止服务器时,我需要关闭我的端口。如何检测服务器停止事件
  • 您认为这种方法存在一些问题吗?(这是可选问题)
  • 谢谢



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

    我认为如果在第一个请求仍在写入串行端口时发出第二个请求,可能会出现潜在问题

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

    如果您实现了一个,您可以在服务器启动时初始化init类

  • ServletContextListener
    有一个
    contextInitialized(javax.servlet.ServletContextEvent)
    方法,该方法在服务器启动时被调用,您可以覆盖该方法来初始化init类
  • ServletContextListener
    有一个
    contextDestroyed(javax.servlet.ServletContextEvent)
    ,当服务器停止时会调用它,您可以覆盖它以关闭端口
  • 您的项目似乎是一个爱好项目,所以我建议您先让它工作起来,然后再考虑优化/清理

  • 谢谢你的意见。我的要求将是非常罕见的,只有一个'客户'。我不想使用非常复杂的解决方案,因为没有时间这样做。但我想我明白你的意思。这可能是一个很好的解决方案。这更像是演示/试用项目。我接受你的建议。对于一个启动/停止循环,工作正常。但当重新部署我的应用程序时,我看到异常:
    java.lang.UnsatisfiedLinkError:本机库rxtxSerial.dll已加载到加载gnu.io.RXTXCommDriver时抛出的另一个类加载器中。您可能希望停止/启动服务器,而不是仅仅重新部署。如果您不想这样做,发布您的代码可能会帮助我们进行调试。您还可以在捕获
    未满足的LinkError
    时使用try/catch将
    System.load()
    调用包装起来。非常感谢!您的解决方案非常适合正常工作:单周期启动/停止服务器。我只是发布错误以供参考(我观察到这一点是因为我在IDE中启用了“保存时部署”)。
    public class ApplicationConfig extends Application {
          public ApplicationConfig () {
                // init serial port here
          }
    }