Class ServletAdapter
HttpServletRequest into gRPC request and lets a gRPC server
process it, and transforms the gRPC response into HttpServletResponse. An adapter can be
instantiated by ServletServerBuilder.buildServletAdapter().
In a servlet, calling doPost(HttpServletRequest, HttpServletResponse) inside HttpServlet.doPost(HttpServletRequest, HttpServletResponse) makes the servlet
backed by the gRPC server associated with the adapter. The servlet must support Asynchronous
Processing and must be deployed to a container that supports servlet 4.0 and enables HTTP/2.
The API is experimental. The authors would like to know more about the real usecases. Users are welcome to provide feedback by commenting on the tracking issue.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final classprivate static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Attributes(package private) static final Loggerprivate final intprivate final List<? extends ServerStreamTracer.Factory> private final ServerTransportListener -
Constructor Summary
ConstructorsConstructorDescriptionServletAdapter(ServerTransportListener transportListener, List<? extends ServerStreamTracer.Factory> streamTracerFactories, int maxInboundMessageSize) -
Method Summary
Modifier and TypeMethodDescriptionvoiddestroy()Call this method when the adapter is no longer needed.voiddoGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) Call this method insideHttpServlet.doGet(HttpServletRequest, HttpServletResponse)to serve gRPC GET request.voiddoPost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) Call this method insideHttpServlet.doPost(HttpServletRequest, HttpServletResponse)to serve gRPC POST request.private static StringgetAuthority(javax.servlet.http.HttpServletRequest req) private static MetadatagetHeaders(javax.servlet.http.HttpServletRequest req) static booleanisGrpc(javax.servlet.http.HttpServletRequest request) Checks whether an incomingHttpServletRequestmay come from a gRPC client.
-
Field Details
-
logger
-
transportListener
-
streamTracerFactories
-
maxInboundMessageSize
private final int maxInboundMessageSize -
attributes
-
-
Constructor Details
-
ServletAdapter
ServletAdapter(ServerTransportListener transportListener, List<? extends ServerStreamTracer.Factory> streamTracerFactories, int maxInboundMessageSize)
-
-
Method Details
-
doGet
public void doGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws IOException Call this method insideHttpServlet.doGet(HttpServletRequest, HttpServletResponse)to serve gRPC GET request.This method is currently not implemented.
Note that in rare case gRPC client sends GET requests.
Do not modify
reqandrespbefore or after calling this method. However, callingresp.setBufferSize()before invocation is allowed.- Throws:
IOException
-
doPost
public void doPost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws IOException Call this method insideHttpServlet.doPost(HttpServletRequest, HttpServletResponse)to serve gRPC POST request.Do not modify
reqandrespbefore or after calling this method. However, callingresp.setBufferSize()before invocation is allowed.- Throws:
IOException
-
getHeaders
-
getAuthority
-
destroy
public void destroy()Call this method when the adapter is no longer needed. The gRPC server will be terminated. -
isGrpc
public static boolean isGrpc(javax.servlet.http.HttpServletRequest request) Checks whether an incomingHttpServletRequestmay come from a gRPC client.- Returns:
- true if the request comes from a gRPC client
-