Java
Gate provides a Java API for integrating with your Java applications using gRPC. You can use the API to interact with Gate programmatically.
Installation
First, configure your package manager to add the Buf registry. You only need to do this once:
xml
<!-- pom.xml -->
<repositories>
<repository>
<name>Buf Maven Repository</name>
<id>buf</id>
<url>https://buf.build/gen/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
kotlin
// build.gradle.kts
repositories {
mavenCentral()
maven {
name = "buf"
url = uri("https://buf.build/gen/maven")
}
}
groovy
// build.gradle
repositories {
mavenCentral()
maven {
name = 'buf'
url 'https://buf.build/gen/maven'
}
}
Then add the dependencies:
Latest Version Check
Make sure to check buf.build/minekube/gate/sdks for the latest versions of the dependencies.
xml
<dependencies>
<!-- Check latest version at https://buf.build/minekube/gate/sdks -->
<dependency>
<groupId>build.buf.gen</groupId>
<artifactId>minekube_gate_protocolbuffers_java</artifactId>
<version>28.3.0.2.20241118150055.50fffb007499</version>
</dependency>
<dependency>
<groupId>build.buf.gen</groupId>
<artifactId>minekube_gate_grpc_java</artifactId>
<version>1.68.1.1.20241118150055.50fffb007499</version>
</dependency>
</dependencies>
kotlin
dependencies {
// Check latest version at https://buf.build/minekube/gate/sdks
implementation("build.buf.gen:minekube_gate_protocolbuffers_java:28.3.0.2.20241118150055.50fffb007499")
implementation("build.buf.gen:minekube_gate_grpc_java:1.68.1.1.20241118150055.50fffb007499")
}
groovy
dependencies {
// Check latest version at https://buf.build/minekube/gate/sdks
implementation 'build.buf.gen:minekube_gate_protocolbuffers_java:28.3.0.2.20241118150055.50fffb007499'
implementation 'build.buf.gen:minekube_gate_grpc_java:1.68.1.1.20241118150055.50fffb007499'
}
Usage Example
Here's a basic example of using the Gate Java API to connect to Gate and list servers:
java
package com.example;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import build.buf.gen.minekube.gate.v1.*;
public class Main {
public static void main(String[] args) {
try {
// Create a gRPC channel
ManagedChannel channel = ManagedChannelBuilder
.forAddress("localhost", 8080)
.usePlaintext()
.build();
// Create a blocking stub
GateServiceGrpc.GateServiceBlockingStub stub = GateServiceGrpc.newBlockingStub(channel);
// List all servers
ListServersResponse response = stub.listServers(ListServersRequest.getDefaultInstance());
// Print protobuf response
System.out.println(response);
// Shutdown the channel
channel.shutdown();
} catch (Exception e) {
System.err.println("Make sure Gate is running with the API enabled");
e.printStackTrace();
}
}
}
Running the Example
- Run Gate with the API enabled
- Navigate to the docs/developers/api/java directory
- Run the following commands:
bash
mvn compile
mvn exec:java -Dexec.mainClass="com.example.Main"
servers {
name: "server3"
address: "localhost:25568"
}
servers {
name: "server4"
address: "localhost:25569"
}
servers {
name: "server1"
address: "localhost:25566"
}
servers {
name: "server2"
address: "localhost:25567"
}
Learn More
For more details on using gRPC with Java, check out the gRPC Java Documentation.