Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 在两个单独的流之间建立通信_Java_Multithreading_Design Patterns - Fatal编程技术网

Java 在两个单独的流之间建立通信

Java 在两个单独的流之间建立通信,java,multithreading,design-patterns,Java,Multithreading,Design Patterns,因此,我正在为我的应用程序开发一个简单的服务器。此服务器的基本用途是侦听请求,理解请求,将请求转发到域(服务器中的一个对象),然后域与文件系统交互以创建一些对象并将数据返回到请求的来源 到目前为止,我已经提出了如下设计: 因此,我所做的是启动一个具有连接器和引擎的服务 连接器具有多个处理指定协议的协议处理程序。每个协议处理程序初始化一个端点侦听器,该侦听器打开一个套接字并侦听传入的请求 引擎有多个域,其中每个域在文件系统上都有其指定的用于读/写数据的目录 我能够初始化服务层,包括它的所有对

因此,我正在为我的应用程序开发一个简单的服务器。此服务器的基本用途是侦听请求,理解请求,将请求转发到域(服务器中的一个对象),然后域与文件系统交互以创建一些对象并将数据返回到请求的来源

到目前为止,我已经提出了如下设计:

因此,我所做的是启动一个具有连接器和引擎的服务

  • 连接器具有多个处理指定协议的协议处理程序。每个协议处理程序初始化一个端点侦听器,该侦听器打开一个套接字并侦听传入的请求

  • 引擎有多个域,其中每个域在文件系统上都有其指定的用于读/写数据的目录

我能够初始化服务层,包括它的所有对象,但我无法弄清楚如何使连接器和引擎能够交换数据

问题来了。 服务只有一个连接器,引擎只有一个域,连接器只有一个协议处理程序,这并不是固定不变的。所有内容都是通过XML文件配置的。服务器也可以运行多个服务

此外,接头不得意识到发动机,因此不能直接通知发动机

可能有用的其他信息。
  • 图中的所有内容都有一个生命周期(除了协议处理程序和端点),即
    init()->start()->stop()->destroy()
    。可以添加侦听器以侦听生命周期状态中的更改
  • 可能的生命周期状态为
    新建、启动前、初始化、初始化、启动后、启动前、启动后、启动后、停止前、停止后、停止后、销毁前、销毁、销毁后
  • 永远只有一个引擎
  • 服务器作为线程运行,因此它应该是线程安全的
  • 对于图中可见的每个对象,我都有接口


我不知道这是否是一个好问题,或者实现没有我想的那么混乱,但我想知道其他人认为什么是一个好方法…

问题到底是什么?我希望引擎在端点接收到请求时处理请求…最大的问题是什么?你想让这两个组件解耦吗?是的。但是必须至少有一个连接器打开一个插座(在端口80上),任何传入的请求都应该由引擎处理,同时保持连接器不知道引擎。