Class THttpServiceBuilder
THttpService
. This builder allows to bind multiple thrift
service implementations along with mixing TMultiplexed protocol to a route.
Example
Server server =
Server.builder()
.http(8080)
.service("/", THttpService.builder()
.addService(new FooService()) // foo() method
.addService(new BarService()) // bar() method
.addService("foobar", new FooBarService()) // TMultiplexed service
.build())
.build();
When the thrift request has a method foo()
then FooService.foo()
handles the request and
similarly when thrift request has a method bar()
then BarService.bar()
handles the request.
And when the service name is "foobar" then FooBarService
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionaddService
(Object implementation) Adds a new service implementation to the builder.addService
(String name, Object implementation) Adds a newTMultiplexed
service to the builder.build()
Builds a new instance ofTHttpService
.decorate
(Function<? super RpcService, ? extends RpcService> decoratorFunction) AFunction<? super RpcService, ? extends RpcService>
to decorate theRpcService
.defaultSerializationFormat
(SerializationFormat defaultSerializationFormat) Adds the default serialization format which will be used when the client does not specify one in request.exceptionHandler
(BiFunction<? super ServiceRequestContext, ? super Throwable, ? extends RpcResponse> exceptionHandler) Sets theBiFunction
that returns anRpcResponse
using the givenThrowable
andServiceRequestContext
.maxRequestContainerLength
(int maxRequestContainerLength) Sets the maximum allowed number of containers to read from the transport for maps, sets and lists.maxRequestStringLength
(int maxRequestStringLength) Sets the maximum allowed number of bytes to read from the transport for variable-length fields (such as strings or binary).Function
<? super RpcService, THttpService> Returns a newly-createdTHttpService
decorator with the properties of this builder.otherSerializationFormats
(SerializationFormat otherSerializationFormat) Adds otherSerializationFormat
to the builder.otherSerializationFormats
(Iterable<SerializationFormat> otherSerializationFormats) Adds otherSerializationFormat
s to the builder.useBlockingTaskExecutor
(boolean useBlockingTaskExecutor) Sets whether the service executes service methods using the blocking executor.
-
Method Details
-
addService
Adds a newTMultiplexed
service to the builder.- Parameters:
name
- name of the service.implementation
- an implementation of*.Iface
or*.AsyncIface
service interface generated by the Apache Thrift compiler.
-
addService
Adds a new service implementation to the builder.- Parameters:
implementation
- an implementation of*.Iface
or*.AsyncIface
service interface generated by the Apache Thrift compiler
-
otherSerializationFormats
Adds otherSerializationFormat
to the builder. By default, allSerializationFormat
s inThriftSerializationFormats
are supported. If nothing is specified then they are added. To add a new custom Thrift serialization format, define a new SPIThriftProtocolFactoryProvider
.Currently, the only way to specify a serialization format at request time is by using the HTTP session protocol and setting the
"Content-Type"
header to the appropriateSerializationFormat.mediaType()
. -
otherSerializationFormats
public THttpServiceBuilder otherSerializationFormats(Iterable<SerializationFormat> otherSerializationFormats) Adds otherSerializationFormat
s to the builder. If nothing is specified then allSerializationFormat
s returned byThriftSerializationFormats.values()
are added.Currently, the only way to specify a serialization format at request time is by using the HTTP session protocol and setting the
"Content-Type"
header to the appropriateSerializationFormat.mediaType()
. -
defaultSerializationFormat
public THttpServiceBuilder defaultSerializationFormat(SerializationFormat defaultSerializationFormat) Adds the default serialization format which will be used when the client does not specify one in request.Currently, the only way to specify a serialization format is by using the HTTP session protocol and setting the
"Content-Type"
header to the appropriateSerializationFormat.mediaType()
. -
maxRequestStringLength
Sets the maximum allowed number of bytes to read from the transport for variable-length fields (such as strings or binary). If unspecified, the default value ofServerBuilder.maxRequestLength(long)
will be used.Note that this options is only valid for
TBinaryProtocol
andTCompactProtocol
.- Parameters:
maxRequestStringLength
- the maximum allowed string length.0
disables the length limit.- See Also:
-
maxRequestContainerLength
Sets the maximum allowed number of containers to read from the transport for maps, sets and lists. If unspecified, the default value ofServerBuilder.maxRequestLength(long)
will be used.Note that this options is only valid for
TBinaryProtocol
andTCompactProtocol
.- Parameters:
maxRequestContainerLength
- the maximum allowed string length.0
disables the length limit.
-
useBlockingTaskExecutor
Sets whether the service executes service methods using the blocking executor. By default, service methods are executed directly on the event loop for implementing fully asynchronous services. If your service uses blocking logic, you should either execute such logic in a separate thread using something likeExecutors.newCachedThreadPool()
or enable this setting. -
exceptionHandler
public THttpServiceBuilder exceptionHandler(BiFunction<? super ServiceRequestContext, ? super Throwable, ? extends RpcResponse> exceptionHandler) Sets theBiFunction
that returns anRpcResponse
using the givenThrowable
andServiceRequestContext
. -
decorate
public THttpServiceBuilder decorate(Function<? super RpcService, ? extends RpcService> decoratorFunction) AFunction<? super RpcService, ? extends RpcService>
to decorate theRpcService
. -
build
Builds a new instance ofTHttpService
. -
newDecorator
Returns a newly-createdTHttpService
decorator with the properties of this builder.
-