BAEL-7218: Inter-Process Communication Methods in Java (#15286)
This commit is contained in:
parent
b80ceb7ceb
commit
f4c35c055c
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>core-java-ipc</artifactId>
|
||||
<name>core-java-ipc</name>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
<groupId>com.baeldung.core-java-modules</groupId>
|
||||
<artifactId>core-java-modules</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,32 @@
|
|||
package com.baeldung.ipc;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardWatchEventKinds;
|
||||
import java.nio.file.WatchKey;
|
||||
import java.nio.file.WatchEvent;
|
||||
import java.nio.file.WatchService;
|
||||
|
||||
|
||||
public class DirectoryLiveTest {
|
||||
@Test
|
||||
public void consumer() throws Exception {
|
||||
WatchService watchService = FileSystems.getDefault().newWatchService();
|
||||
// Set this to an appropriate directory.
|
||||
Path path = Paths.get("/tmp/ipc");
|
||||
|
||||
path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
|
||||
|
||||
WatchKey key;
|
||||
while ((key = watchService.take()) != null) {
|
||||
for (WatchEvent<?> event : key.pollEvents()) {
|
||||
// React to new file.
|
||||
System.out.println(event);
|
||||
}
|
||||
key.reset();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package com.baeldung.ipc;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.management.JMX;
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectName;
|
||||
import javax.management.remote.JMXConnector;
|
||||
import javax.management.remote.JMXConnectorFactory;
|
||||
import javax.management.remote.JMXServiceURL;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class JmxLiveTest {
|
||||
/*
|
||||
* This test needs to be run with the following system properties defined:
|
||||
* -Dcom.sun.management.jmxremote=true
|
||||
* -Dcom.sun.management.jmxremote.port=1234
|
||||
* -Dcom.sun.management.jmxremote.authenticate=false
|
||||
* -Dcom.sun.management.jmxremote.ssl=false
|
||||
*/
|
||||
@Test
|
||||
public void consumer() throws Exception {
|
||||
ObjectName objectName = new ObjectName("com.baeldung.ipc:type=basic,name=test");
|
||||
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
|
||||
server.registerMBean(new IPCTest(), objectName);
|
||||
|
||||
TimeUnit.MINUTES.sleep(50);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void producer() throws Exception {
|
||||
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi");
|
||||
try (JMXConnector jmxc = JMXConnectorFactory.connect(url, null)) {
|
||||
ObjectName objectName = new ObjectName("com.baeldung.ipc:type=basic,name=test");
|
||||
|
||||
IPCTestMBean mbeanProxy = JMX.newMBeanProxy(jmxc.getMBeanServerConnection(), objectName, IPCTestMBean.class, true);
|
||||
mbeanProxy.sendMessage("Hello");
|
||||
}
|
||||
}
|
||||
|
||||
public interface IPCTestMBean {
|
||||
void sendMessage(String message);
|
||||
}
|
||||
|
||||
class IPCTest implements IPCTestMBean {
|
||||
@Override
|
||||
public void sendMessage(String message) {
|
||||
System.out.println("Received message: " + message);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.baeldung.ipc;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
|
||||
public class SocketsLiveTest {
|
||||
@Test
|
||||
public void consumer() throws Exception {
|
||||
try (ServerSocket serverSocket = new ServerSocket(1234)) {
|
||||
Socket clientSocket = serverSocket.accept();
|
||||
|
||||
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
||||
|
||||
String line;
|
||||
while ((line = in.readLine()) != null) {
|
||||
System.out.println("Received message: " + line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void producer() throws Exception {
|
||||
try (Socket clientSocket = new Socket("localhost", 1234)) {
|
||||
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
||||
|
||||
out.println("Hello");
|
||||
|
||||
String response = in.readLine();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -54,6 +54,7 @@
|
|||
<module>core-java-concurrency-simple</module>
|
||||
<module>core-java-datetime-string</module>
|
||||
<module>core-java-io-conversions-2</module>
|
||||
<module>core-java-ipc</module>
|
||||
<module>core-java-jpms</module>
|
||||
<module>core-java-lang-oop-constructors-2</module>
|
||||
<module>core-java-methods</module>
|
||||
|
|
Loading…
Reference in New Issue