Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 - Fatal编程技术网

在实例之间共享内存中的java对象

在实例之间共享内存中的java对象,java,Java,我有一个对象,它是COBOL内存结构的映射,我的想法是使用它,这样我就可以在java中读取COBOL固定长度的文件。我希望对象与java程序的所有实例共享,所以我不需要每次有人启动java程序实例时都从磁盘加载它 java程序将从另一个COBOL程序调用,使用“system”(cmd或terminal),它基本上用于将数据保存到SQL数据库中 用例: 在COBOL中,变量的结构如下: 01 USER-INFORMATION. 02 USER-B-DAY. 03 B-DAY

我有一个对象,它是COBOL内存结构的映射,我的想法是使用它,这样我就可以在java中读取COBOL固定长度的文件。我希望对象与java程序的所有实例共享,所以我不需要每次有人启动java程序实例时都从磁盘加载它

java程序将从另一个COBOL程序调用,使用“system”(cmd或terminal),它基本上用于将数据保存到SQL数据库中

用例:

在COBOL中,变量的结构如下:

01 USER-INFORMATION.
   02 USER-B-DAY.
      03 B-DAY   PIC 9(02).
      03 B-MONTH PIC 9(02).
      03 B-YEAR  PIC 9(04).
   02 USER-NAME  PIC X(50).
使用以下命令保存用户时: Name=Toniotti 出生日期=2002年6月11日

数据如下:11062002Toniotti

我希望能够在Java中读取这些内容(并创建一个用户对象,包含所有的“属性”/“变量”),我将能够通过映射变量结构来实现这一点,因此我可以从数据“字符串”中确定,在位置0到6处,我有用户的出生日期,它需要是一个整数(图9)。 我的问题是,一直读取带有映射变量的文件会减慢进程。它需要尽可能快,因为我已经通过稍后在sql数据库中保存数据来增加时间。 我的第一个选择是将映射存储在内存数据库中,但我想知道是否还有其他更快的选择可以使用

我不需要使用java,所以如果您知道另一种能够做到这一点的程序语言,我很想知道它的名称以及它是如何制作的


数据的最大大小约为200kb。cobol程序中的变量结构略多于2000行(约2000个变量)。操作系统为IBM AIX。它需要如此之快,因为它每天大约有10万个请求。

您可以使用单个对象来实现。因此,它将只有对象的一个副本。您不能简单地通过多个Java进程实例“共享”对象,但是,可以编写一个独立的Java程序,该程序始终运行,表示与数据库的对象/连接,然后您的其他程序可以调用该程序来执行您提到的操作—有点像设备驱动程序。为了更好地帮助您,我们需要更多关于用例和该对象的“接口”的信息。您要搜索的术语是“java进程间通信”或“java ipc”。有很多方法可以让多个java实例彼此共享信息,也有其他方法可以让COBOL程序与长时间运行的java程序通信,而不是每次启动一个新的程序。如果没有更多的信息(操作系统、数据有多大、您最关心的是什么——速度、原子性等等),恐怕人们无法为您推荐“最佳”文件。嗯,我想到了内存映射文件。这不是100%的要求,因为它不是严格地在内存中,这取决于操作系统。这个java ipc允许我直接访问另一个程序内存中的对象?我最关心的是速度,我考虑过内存数据库,但我正在尝试找到最快的方法(在处理时间方面)。数据大小最大为200kb,操作系统为IBM AIX。