下面列出了io.grpc.ManagedChannelBuilder#usePlaintext ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static ManagedChannel build(
String host,
int port,
@Nullable String serverHostOverride,
boolean useTls,
@Nullable InputStream testCa) {
ManagedChannelBuilder<?> channelBuilder = ManagedChannelBuilder.forAddress(host, port)
.maxInboundMessageSize(16 * 1024 * 1024);
if (serverHostOverride != null) {
// Force the hostname to match the cert the server uses.
channelBuilder.overrideAuthority(serverHostOverride);
}
if (useTls) {
try {
((OkHttpChannelBuilder) channelBuilder).useTransportSecurity();
((OkHttpChannelBuilder) channelBuilder).sslSocketFactory(getSslSocketFactory(testCa));
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
channelBuilder.usePlaintext();
}
return channelBuilder.build();
}
/**
* Constructs a new instance of the exporter based on the builder's values.
*
* @return a new exporter's instance
*/
public OtlpGrpcSpanExporter build() {
if (endpoint != null) {
final ManagedChannelBuilder<?> managedChannelBuilder =
ManagedChannelBuilder.forTarget(endpoint);
if (useTls) {
managedChannelBuilder.useTransportSecurity();
} else {
managedChannelBuilder.usePlaintext();
}
if (metadata != null) {
managedChannelBuilder.intercept(MetadataUtils.newAttachHeadersInterceptor(metadata));
}
channel = managedChannelBuilder.build();
}
return new OtlpGrpcSpanExporter(channel, deadlineMs);
}
/**
* Constructs a managed server channel.
* @param server The server
* @param executorService The executor service
* @param clientInterceptors The client interceptors
* @return The channel
*/
@Singleton
@Named(NAME)
@Requires(beans = GrpcEmbeddedServer.class)
@Bean(preDestroy = "shutdown")
protected ManagedChannel serverChannel(
GrpcEmbeddedServer server,
@javax.inject.Named(TaskExecutors.IO) ExecutorService executorService,
List<ClientInterceptor> clientInterceptors) {
final ManagedChannelBuilder<?> builder = ManagedChannelBuilder.forAddress(
server.getHost(),
server.getPort()
).executor(executorService);
if (!server.getServerConfiguration().isSecure()) {
builder.usePlaintext();
}
if (CollectionUtils.isNotEmpty(clientInterceptors)) {
builder.intercept(clientInterceptors);
}
return builder.build();
}
/**
* Constructs a managed server channel.
* @param server The server
* @param executorService The executor service
* @param clientInterceptors The client interceptors
* @return The channel
*/
@Singleton
@Named(NAME)
@Requires(beans = GrpcEmbeddedServer.class)
@Bean(preDestroy = "shutdown")
protected ManagedChannel serverChannel(
GrpcEmbeddedServer server,
@javax.inject.Named(TaskExecutors.IO) ExecutorService executorService,
List<ClientInterceptor> clientInterceptors) {
final ManagedChannelBuilder<?> builder = ManagedChannelBuilder.forAddress(
server.getHost(),
server.getPort()
).executor(executorService);
if (!server.getServerConfiguration().isSecure()) {
builder.usePlaintext();
}
if (CollectionUtils.isNotEmpty(clientInterceptors)) {
builder.intercept(clientInterceptors);
}
return builder.build();
}
@Before
public final void setupChannels() throws IOException {
if(gRpcServerProperties.isEnabled()) {
ManagedChannelBuilder<?> channelBuilder = ManagedChannelBuilder.forAddress("localhost", getPort());
Resource certChain = Optional.ofNullable(gRpcServerProperties.getSecurity())
.map(GRpcServerProperties.SecurityProperties::getCertChain)
.orElse(null);
if(null!= certChain){
((NettyChannelBuilder)channelBuilder)
.useTransportSecurity()
.sslContext(GrpcSslContexts.forClient().trustManager(certChain.getInputStream()).build());
}else{
channelBuilder.usePlaintext();
}
channel = onChannelBuild(channelBuilder).build();
}
if(StringUtils.hasText(gRpcServerProperties.getInProcessServerName())){
inProcChannel = onChannelBuild(
InProcessChannelBuilder.forName(gRpcServerProperties.getInProcessServerName())
.usePlaintext()
).build();
}
}
@Override
public Channel createChannel(String name) {
RoundRobinLoadBalancerFactory instance = RoundRobinLoadBalancerFactory.getInstance();
ManagedChannelBuilder builder = ManagedChannelBuilder.forTarget("spring://" + name)
.nameResolverFactory(new DiscoveryClientResolverFactory(client))
.loadBalancerFactory(instance);
if (channels.getChannels().containsKey(name)) {
if (channels.getChannels().get(name).isPlaintext()) {
builder.usePlaintext();
}
} else {
builder.usePlaintext();
}
return builder.build();
}
public static ManagedChannel build(
String host,
int port,
@Nullable String serverHostOverride,
boolean useTls,
@Nullable InputStream testCa) {
ManagedChannelBuilder<?> channelBuilder = ManagedChannelBuilder.forAddress(host, port)
.maxInboundMessageSize(16 * 1024 * 1024);
if (serverHostOverride != null) {
// Force the hostname to match the cert the server uses.
channelBuilder.overrideAuthority(serverHostOverride);
}
if (useTls) {
try {
((OkHttpChannelBuilder) channelBuilder).useTransportSecurity();
((OkHttpChannelBuilder) channelBuilder).sslSocketFactory(getSslSocketFactory(testCa));
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
channelBuilder.usePlaintext();
}
return channelBuilder.build();
}
/** Sets up the SSL provider and configures the gRPC channel. */
private ManagedChannel initChannel(Context context, DatabaseInfo databaseInfo) {
try {
// We need to upgrade the Security Provider before any network channels are initialized.
// `OkHttp` maintains a list of supported providers that is initialized when the JVM first
// resolves the static dependencies of ManagedChannel.
ProviderInstaller.installIfNeeded(context);
} catch (GooglePlayServicesNotAvailableException /* Thrown by ProviderInstaller */
| GooglePlayServicesRepairableException /* Thrown by ProviderInstaller */
| IllegalStateException e /* Thrown by Robolectric */) {
// Mark the SSL initialization as done, even though we may be using outdated SSL
// ciphers. gRPC-Java recommends obtaining updated ciphers from GMSCore, but we allow
// the device to fall back to other SSL ciphers if GMSCore is not available.
Logger.warn(LOG_TAG, "Failed to update ssl context: %s", e);
}
ManagedChannelBuilder<?> channelBuilder;
if (overrideChannelBuilderSupplier != null) {
channelBuilder = overrideChannelBuilderSupplier.get();
} else {
channelBuilder = ManagedChannelBuilder.forTarget(databaseInfo.getHost());
if (!databaseInfo.isSslEnabled()) {
// Note that the boolean flag does *NOT* switch the wire format from Protobuf to Plaintext.
// It merely turns off SSL encryption.
channelBuilder.usePlaintext();
}
}
// Ensure gRPC recovers from a dead connection. (Not typically necessary, as the OS will
// usually notify gRPC when a connection dies. But not always. This acts as a failsafe.)
channelBuilder.keepAliveTime(30, TimeUnit.SECONDS);
// Wrap the ManagedChannelBuilder in an AndroidChannelBuilder. This allows the channel to
// respond more gracefully to network change events (such as switching from cell to wifi).
AndroidChannelBuilder androidChannelBuilder =
AndroidChannelBuilder.usingBuilder(channelBuilder).context(context);
return androidChannelBuilder.build();
}
public ManagedChannel channel() {
ManagedChannelBuilder channelBuilder = ManagedChannelBuilder
.forAddress(host, port);
if (!tls)
channelBuilder.usePlaintext();
return channelBuilder.build();
}
@Override protected ManagedChannelBuilder<?> usePlainText(ManagedChannelBuilder<?> builder) {
return builder.usePlaintext(true);
}
@Override protected ManagedChannelBuilder<?> usePlainText(ManagedChannelBuilder<?> builder) {
return builder.usePlaintext(true);
}
@Override protected ManagedChannelBuilder<?> usePlainText(ManagedChannelBuilder<?> builder) {
return builder.usePlaintext();
}
@Override protected ManagedChannelBuilder<?> usePlainText(ManagedChannelBuilder<?> builder) {
return builder.usePlaintext();
}