diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/Client.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/Client.java index ad7f1271..c4efcd25 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/Client.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/Client.java @@ -23,12 +23,37 @@ import cn.hippo4j.rpc.model.Response; import java.io.Closeable; /** - * the client for RPC, Explain the role of the client in the request + *
+ * Request request = new Request(); + * try(Client client = new Client()){ + * Response response = client.connection(request); + * } + *+ * + * The client implements Closeable and supports automatic shutdown, However, you can manually + * disable it when you want to use it + * + * @since 1.5.1 */ public interface Client extends Closeable { /** * Start the client and try to send and receive data + * + * @param request Request information, Requested methods and parameters + * @return response Response from server side */ Response connection(Request request); diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/ClientConnection.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/ClientConnection.java index 43791228..e3fb241c 100644 --- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/ClientConnection.java +++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/client/ClientConnection.java @@ -22,7 +22,9 @@ import cn.hippo4j.rpc.model.Request; import cn.hippo4j.rpc.model.Response; /** - * Applicable to client connections + * Applicable to client connections
+ * This is not a strict and stateless Connection interface, it contains the necessary
+ * operations that should be done in the connection. It is more like integrating the
+ * connection and the connection channel together, so creating {@link Connection} is
+ * very resource intensive, for which caching is recommended
+ *
+ * @since 1.5.1
*/
public interface Connection extends Closeable {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/HandlerManager.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/HandlerManager.java
index f4ebb4b9..c5071829 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/HandlerManager.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/handler/HandlerManager.java
@@ -17,12 +17,16 @@
package cn.hippo4j.rpc.handler;
+import cn.hippo4j.common.web.exception.IllegalException;
+import io.netty.channel.ChannelHandler;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* Manage the Handler used in the processing.
* The Handler must be able to exist multiple times and be invoked once in a single execution
+ *
+ * @since 1.5.1
*/
public interface HandlerManager
* Use the fully qualified name key of the interface and override equals and hashCode
+ *
+ * @since 1.5.1
*/
public final class DefaultRequest implements Request {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/DefaultResponse.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/DefaultResponse.java
index d6602a72..0fc68f44 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/DefaultResponse.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/DefaultResponse.java
@@ -25,6 +25,8 @@ import java.util.Objects;
/**
* default request
* Use the fully qualified name key of the interface and override equals and hashCode
+ *
+ * @since 1.5.1
*/
public class DefaultResponse implements Response {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Request.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Request.java
index 461e40e5..128d069e 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Request.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Request.java
@@ -21,6 +21,8 @@ import java.io.Serializable;
/**
* request
+ *
+ * @since 1.5.1
*/
public interface Request extends Serializable {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Response.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Response.java
index 83b31444..a7b2642a 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Response.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/model/Response.java
@@ -21,6 +21,8 @@ import java.io.Serializable;
/**
* Response
+ *
+ * @since 1.5.1
*/
public interface Response extends Serializable {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActivePostProcess.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActivePostProcess.java
index 9e7fee18..a183d335 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActivePostProcess.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActivePostProcess.java
@@ -22,6 +22,8 @@ import cn.hippo4j.rpc.model.Response;
/**
* Callback while the connection is in progress
+ *
+ * @since 1.5.1
*/
public interface ActivePostProcess {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActiveProcessChain.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActiveProcessChain.java
index cb59491e..aa181ee4 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActiveProcessChain.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/process/ActiveProcessChain.java
@@ -30,6 +30,7 @@ import java.util.List;
* reference resources: spring HandlerExecutionChain
*
* @see ActivePostProcess
+ * @since 1.5.1
*/
@Slf4j
public final class ActiveProcessChain {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/NettyServerConnection.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/NettyServerConnection.java
index 8a30d055..f4cf86d0 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/NettyServerConnection.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/NettyServerConnection.java
@@ -37,6 +37,8 @@ import java.util.List;
/**
* adapter to the netty server
+ *
+ * @since 1.5.1
*/
@Slf4j
public class NettyServerConnection extends AbstractNettyHandlerManager implements ServerConnection {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java
index d5247a38..bc35957e 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/RPCServer.java
@@ -25,6 +25,8 @@ import java.util.concurrent.CompletableFuture;
/**
* Server Implementation
+ *
+ * @since 1.5.1
*/
public class RPCServer implements Server {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/Server.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/Server.java
index 9c21f788..5c346525 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/Server.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/Server.java
@@ -21,6 +21,8 @@ import java.io.Closeable;
/**
* the service for RPC, Explain the role of the service in the request
+ *
+ * @since 1.5.1
*/
public interface Server extends Closeable {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/ServerConnection.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/ServerConnection.java
index 37edfc62..a1a830ca 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/ServerConnection.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/server/ServerConnection.java
@@ -22,6 +22,8 @@ import cn.hippo4j.rpc.handler.Connection;
/**
* This applies to server-side connections
+ *
+ * @since 1.5.1
*/
public interface ServerConnection extends Connection {
diff --git a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/ClientFactoryBean.java b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/ClientFactoryBean.java
index b63e81b6..37b63596 100644
--- a/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/ClientFactoryBean.java
+++ b/hippo4j-rpc/src/main/java/cn/hippo4j/rpc/support/ClientFactoryBean.java
@@ -17,6 +17,7 @@
package cn.hippo4j.rpc.support;
+import cn.hippo4j.common.toolkit.Assert;
import cn.hippo4j.rpc.client.Client;
import cn.hippo4j.rpc.discovery.DiscoveryAdapter;
import cn.hippo4j.rpc.exception.ConnectionException;
@@ -30,11 +31,30 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import java.net.InetSocketAddress;
+import java.util.Optional;
/**
* A FactoryBean that builds interfaces to invoke proxy objects
* is responsible for managing the entire life cycle of the proxy objects
+ * APPLICATION START
+ * When the application is started, the request initiator needs to complete the proxy of the calling interface,
+ * which ensures that the method can be requested to the server side when the method is called, rather than simply
+ * request an interface that cannot be instantiated. The classes involved in adding proxy to the interface are:
+ *
+ *
+ * AND SPRING
+ * In order to fully integrate {@link ClientFactoryBean} into the life cycle of spring beans,
+ * {@link ClientFactoryBean} also needs to implement the following interfaces:
+ *
+ *
*
+ * @since 1.5.1
* @deprecated With {@link cn.hippo4j.config.service.ThreadPoolAdapterService} structure, FactoryBean is not the best choice
*/
@Deprecated
@@ -52,10 +72,16 @@ public class ClientFactoryBean implements FactoryBean