我正在开发一个Java应用程序,它由一个服务器和一个客户端(将来可能有多个客户端)组成,它们可以在不同的主机上运行。对于这两者之间的通信,我目前使用自定义协议(protocol),该协议(protocol)由通过网络套接字发送并在两端转换回JavaBean对象的JSON消息组成。然而,应用程序变得越复杂,我发现这种方法不符合我的标准,而且太复杂了。我正在寻找一个完善的、可能是标准化的替代方案。我看过远程方法调用(RMI),但读到该协议(protocol)很慢(网络开销大)。我正在寻找的技术应该是轻量级的(协议(protocol)和库明智的)、健壮的、可能支持压缩(如果支持的话,还有很大
我需要在同一台机器(两个不同的JVM)上运行的两个Java应用程序之间共享数据。我确切地说要共享的数据很大(大约7GB)。应用程序必须非常快速地访问数据,因为它们必须以非常高的速度回答传入的查询。我不希望应用程序为每个应用程序保存一份数据副本。我看到一种选择是使用内存映射文件。应用程序A从某处(假设是数据库)获取数据并将其存储在文件中。然后应用程序B可以使用java.nio访问这些文件。我不知道内存映射文件究竟是如何工作的,我只知道数据存储在一个文件中,并且这个文件(或其中的一部分)被映射到内存的一个区域(虚拟内存?)。因此,这两个应用程序可以读写内存中的数据,并且更改会自动(我猜?)
我试图找出JavaAttachAPI在主要操作系统上使用的进程间通信机制,但我似乎找不到太多关于底层机制的引用。我发现的唯一提及是here这里指的是Sun前段时间开发的DOORS进程间通信机制。但我怀疑这是在Windows或Mac上使用的。大多数文章都描述了JavaAttachAPI以及如何加载共享库/DLL,但没有说明jvisualvm和本地JVM进程之间的通信实际上是如何工作的。Here提到tools.jar和libattach.so(在Unix系统上)或attach.dll(在Windows上)负责支持AttachAPI,但我找不到有关它们内部工作方式的详细信息。那么JavaAt
我必须在没有任何代理或服务器的情况下获得两个不同的客户端应用程序对话。在Java和.NET两个进程之间进行IPC的最佳方法是什么?它必须能够在多用户终端服务器上工作,所以请不要套接字。我希望它轻巧简单,即插即用,所以请不要使用RMI/WS。我现在正在考虑使用JNI访问Mutex和命名管道,我的方向是否正确?欢迎任何想法!谢谢丹尼斯 最佳答案 我是jni4net的作者,JVM和CLR之间的开源进程内桥梁。它建立在JNI和PInvoke之上。无需C/C++代码。希望对您有所帮助。 关于c#-
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭2年前。Improvethisquestion我有一个Java应用程序,我已经开发了一两年了。我想创建一个非常简单的接口(interface)集(以后可能会增加复杂性),我可以用它来从另一个JVM(例如MATLAB)控制我的Java应用程序。我假设RMI是执行此操作的最佳方法,但我不确定,因为我对此几乎一无所知。快速学习RMI的最佳方法是什么?假设我想使用这样的界面:interfaceApplication{publicvoidsetLoggingE
我正在从主应用程序执行另一个JVM(java.exe)。有什么方法可以与新创建的进程(在创建时或创建后)共享一个对象(相当大的对象)。someObjectsO=newsomeObject();//sOispopulated//CreatingnewprocessRuntimert=Runtime.getRuntime();Processproc=rt.exec("java-cp"+tempDir+jarsInPath+""+appMain);现在我希望sO对象可用于proc对象表示的进程ProcessBuilder是否为此目的提供任何实用程序? 最佳答案
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我想知道我是否可以访问Java中的Posix消息队列,因为我有一个无法修改的应用程序并使用消息队列与其他进程通信。是否有任何api或包可以做到这一点?我知道我可以使用JNI,但我需要尽快执行此操作,所以没有时间开发它。问候。
我有一个Java应用程序需要不同进程之间的通信。进程可以运行在相同的JVM或不同的JVM中,但运行在同一台机器上。我的应用程序需要向另一个进程(相同或不同的JVM)提交“消息”,但忘记了它。类似于IBM“MQ”之类的消息队列,但是简单,并且只使用内存,没有硬盘的IO以提高性能。我不确定性能规范的最佳方法是什么。我想知道RMI在性能方面是否高效,我认为它需要一些开销。使用本地主机的TCP/IP套接字怎么样?还有什么想法吗? 最佳答案 IwonderifRMIisefficientintermsofPerformance,Ithinki
故事:前几天在想基于文件交换的进程间通信。假设进程A在其工作期间创建了多个文件,然后进程B读取这些文件。为了确保所有文件都被正确写入,创建一个特殊文件会很方便,该文件的存在将表示所有操作已完成。简单的工作流程:进程A创建文件"file1.txt"进程A创建文件"file2.txt"进程A创建文件“processA.ready”进程B正在等待文件“processA.ready”出现,然后读取文件1和文件2。疑惑:文件操作由操作系统执行,特别是文件子系统。由于在Unix、Windows或MacOS中的实现可能不同,我不确定文件交换进程间通信的可靠性。即使OS会保证这种一致性,也有像Java
我正在处理一个更复杂的版本(车辆在X和Y两个方向上移动)我做这个例子是为了获得更好的方法来完成这个。我有一辆汽车以(24.5872mps)的速度沿X方向行驶我通过使用执行器每100毫秒递增X值来对此进行模拟(以使其X位置更加准确和实时)每一秒后,我都会向另一个进程发送一条消息,其中包含我刚刚覆盖的行的xMin和xMax值另一个进程将用JMS消息(通常是即时的)响应,如果在之前的X区域中存在“坑洞”(消息回调消息到linkedblockingqueue),告诉我停止。我遇到的问题是“通常立即”部分。如果我没有足够快地得到响应,我认为它会影响我的算法的整个计时。处理这种情况的更好方法是什么