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 newTMultiplexedservice to the builder.build()Builds a new instance ofTHttpService.decorate(Function<? super com.linecorp.armeria.server.RpcService, ? extends com.linecorp.armeria.server.RpcService> decoratorFunction) AFunction<? super RpcService, ? extends RpcService>to decorate theRpcService.defaultSerializationFormat(com.linecorp.armeria.common.SerializationFormat defaultSerializationFormat) Adds the default serialization format which will be used when the client does not specify one in request.exceptionHandler(BiFunction<? super com.linecorp.armeria.server.ServiceRequestContext, ? super Throwable, ? extends com.linecorp.armeria.common.RpcResponse> exceptionHandler) Sets theBiFunctionthat returns anRpcResponseusing the givenThrowableandServiceRequestContext.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 com.linecorp.armeria.server.RpcService,THttpService> Returns a newly-createdTHttpServicedecorator with the properties of this builder.otherSerializationFormats(com.linecorp.armeria.common.SerializationFormat otherSerializationFormat) Adds otherSerializationFormatto the builder.otherSerializationFormats(Iterable<com.linecorp.armeria.common.SerializationFormat> otherSerializationFormats) Adds otherSerializationFormats to the builder.
-
Method Details
-
addService
Adds a newTMultiplexedservice to the builder.- Parameters:
name- name of the service.implementation- an implementation of*.Ifaceor*.AsyncIfaceservice interface generated by the Apache Thrift compiler.
-
addService
Adds a new service implementation to the builder.- Parameters:
implementation- an implementation of*.Ifaceor*.AsyncIfaceservice interface generated by the Apache Thrift compiler
-
otherSerializationFormats
public THttpServiceBuilder otherSerializationFormats(com.linecorp.armeria.common.SerializationFormat otherSerializationFormat) Adds otherSerializationFormatto the builder. By default, allSerializationFormats inThriftSerializationFormatsare 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<com.linecorp.armeria.common.SerializationFormat> otherSerializationFormats) Adds otherSerializationFormats to the builder. If nothing is specified then allSerializationFormats 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(com.linecorp.armeria.common.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
TBinaryProtocolandTCompactProtocol.- Parameters:
maxRequestStringLength- the maximum allowed string length.0disables the length limit.- See Also:
-
ServerBuilder.maxRequestLength(long)
-
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
TBinaryProtocolandTCompactProtocol.- Parameters:
maxRequestContainerLength- the maximum allowed string length.0disables the length limit.
-
exceptionHandler
public THttpServiceBuilder exceptionHandler(BiFunction<? super com.linecorp.armeria.server.ServiceRequestContext, ? super Throwable, ? extends com.linecorp.armeria.common.RpcResponse> exceptionHandler) Sets theBiFunctionthat returns anRpcResponseusing the givenThrowableandServiceRequestContext. -
decorate
public THttpServiceBuilder decorate(Function<? super com.linecorp.armeria.server.RpcService, ? extends com.linecorp.armeria.server.RpcService> decoratorFunction) AFunction<? super RpcService, ? extends RpcService>to decorate theRpcService. -
build
Builds a new instance ofTHttpService. -
newDecorator
Returns a newly-createdTHttpServicedecorator with the properties of this builder.
-