Skip to content

Commit

Permalink
not to use CDI for simplicity
Browse files Browse the repository at this point in the history
  • Loading branch information
dapengzhang0 committed Aug 17, 2018
1 parent 166d3d9 commit 6667208
Show file tree
Hide file tree
Showing 12 changed files with 46 additions and 178 deletions.
7 changes: 0 additions & 7 deletions examples/example-servlet/build.gradle
Expand Up @@ -28,13 +28,6 @@ dependencies {
compile "io.grpc:grpc-protobuf:${grpcVersion}"
compile "io.grpc:grpc-servlet:${grpcVersion}"

// for container that already supports CDI 2
// providedCompile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'

// for container that needs CDI 2
compile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'
compile "org.jboss.weld.servlet:weld-servlet-core:3.0.5.Final"

compile ("com.google.protobuf:protobuf-java-util:${protobufVersion}") {
exclude group: 'com.google.guava', module: 'guava'
}
Expand Down
Expand Up @@ -16,23 +16,43 @@

package io.grpc.servlet.examples.helloworld;

import io.grpc.stub.StreamObserver;
import io.grpc.examples.helloworld.GreeterGrpc;
import io.grpc.examples.helloworld.HelloReply;
import io.grpc.examples.helloworld.HelloRequest;
import io.grpc.servlet.ServletAdapter;
import io.grpc.servlet.ServletServerBuilder;
import java.io.IOException;
import javax.inject.Inject;
import java.util.concurrent.Executors;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* A servlet that hosts a gRPC server.
* A servlet that hosts a gRPC server over HTTP/2 and shares the resource URI for the normal servlet
* clients over HTTP1.1.
*
* <p>For creating a servlet that solely serves gRPC services, do not follow this example, simply
* extend or register a {@link io.grpc.servlet.GrpcServlet} instead.
*/
@WebServlet(urlPatterns = {"/helloworld.Greeter/SayHello"}, asyncSupported = true)
public class HelloWorldServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

@Inject
private ServletAdapter servletAdapter;
private final ServletAdapter servletAdapter = ServletAdapter.Factory.create(
new ServletServerBuilder().addService(new GreeterImpl()));

private static final class GreeterImpl extends GreeterGrpc.GreeterImplBase {
GreeterImpl() {}

@Override
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + req.getName()).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
Expand All @@ -51,4 +71,10 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
response.getWriter().println("<p>Hello non-gRPC client!</p>");
}
}

@Override
public void destroy() {
servletAdapter.destroy();
super.destroy();
}
}

This file was deleted.

7 changes: 0 additions & 7 deletions examples/example-servlet/src/main/webapp/WEB-INF/beans.xml

This file was deleted.

Expand Up @@ -2,6 +2,5 @@
<!-- Need this file for deployment to GlassFish -->
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<context-root></context-root>
<class-loader delegate="false"/>
</glassfish-web-app>
10 changes: 3 additions & 7 deletions servlet/interop-testing/build.gradle
Expand Up @@ -46,13 +46,9 @@ dependencies {
compile project(':grpc-stub')
compile project(':grpc-protobuf')
compile project(':grpc-servlet')

// for container that already supports CDI 2
// providedCompile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'

// for container that needs CDI 2
compile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'
compile "org.jboss.weld.servlet:weld-servlet-core:3.0.5.Final"
compile (project(':grpc-benchmarks')) {
exclude group: 'org.hamcrest'
exclude group: 'com.squareup.okio'}

compile ("com.google.protobuf:protobuf-java-util:${protobufVersion}") {
exclude group: 'com.google.guava', module: 'guava'
Expand Down
Expand Up @@ -16,27 +16,18 @@

package io.grpc.servlet.interoptest;

import io.grpc.servlet.ServletAdapter;
import java.io.IOException;
import javax.inject.Inject;
import io.grpc.servlet.GrpcServlet;
import io.grpc.testing.integration.TestServiceImpl;
import java.util.Collections;
import java.util.concurrent.Executors;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* A servlet that hosts a gRPC server.
*/
@WebServlet(urlPatterns = {"/grpc.testing.TestService/*"}, asyncSupported = true)
public class InteropTestServlet extends HttpServlet {
/** A servlet that hosts a gRPC server. */
@WebServlet(urlPatterns = "/grpc.testing.TestService/*", asyncSupported = true)
public class InteropTestServlet extends GrpcServlet {
private static final long serialVersionUID = 1L;

@Inject
private ServletAdapter servletAdapter;

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
servletAdapter.doPost(request, response);
public InteropTestServlet() {
super(Collections.singletonList(new TestServiceImpl(Executors.newScheduledThreadPool(2))));
}
}

This file was deleted.

7 changes: 0 additions & 7 deletions servlet/interop-testing/src/main/webapp/WEB-INF/beans.xml

This file was deleted.

Expand Up @@ -2,6 +2,5 @@
<!-- Need this file for deployment to GlassFish -->
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<context-root></context-root>
<class-loader delegate="false"/>
</glassfish-web-app>
13 changes: 4 additions & 9 deletions servlet/src/main/java/io/grpc/servlet/GrpcServlet.java
Expand Up @@ -19,7 +19,6 @@
import io.grpc.BindableService;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
Expand All @@ -38,7 +37,9 @@ public class GrpcServlet extends HttpServlet {
* Instantiate the servlet serving the given list of gRPC services.
*/
public GrpcServlet(List<? extends BindableService> grpcServices) {
servletAdapter = ServletAdapter.Factory.create(grpcServices);
ServletServerBuilder serverBuilder = new ServletServerBuilder();
grpcServices.forEach(service -> serverBuilder.addService(service));
servletAdapter = ServletAdapter.Factory.create(serverBuilder);
}

@Override
Expand All @@ -50,13 +51,7 @@ protected final void doGet(HttpServletRequest request, HttpServletResponse respo
@Override
protected final void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
servletAdapter.doGet(request, response);
}

@Override
public void init() throws ServletException {
super.init();
servletAdapter.init();
servletAdapter.doPost(request, response);
}

@Override
Expand Down
22 changes: 0 additions & 22 deletions servlet/src/main/java/io/grpc/servlet/ServletAdapter.java
Expand Up @@ -22,7 +22,6 @@
import static java.util.logging.Level.FINE;
import static java.util.logging.Level.FINEST;

import io.grpc.BindableService;
import io.grpc.Metadata;
import io.grpc.internal.GrpcUtil;
import io.grpc.internal.LogId;
Expand All @@ -33,16 +32,13 @@
import io.grpc.servlet.ServletServerStream.WriteState;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.servlet.AsyncContext;
import javax.servlet.ReadListener;
import javax.servlet.ServletContext;
Expand Down Expand Up @@ -252,16 +248,9 @@ public void onError(Throwable t) {
});
}

/**
* Call this method before the adapter is in use.
*/
@PostConstruct
public void init() {}

/**
* Call this method when the adapter is no longer need.
*/
@PreDestroy
public void destroy() {
transportListener.transportTerminated();
}
Expand Down Expand Up @@ -305,16 +294,5 @@ public static ServletAdapter create(ServletServerBuilder serverBuilder) {
ServerTransportListener listener = serverBuilder.buildAndStart();
return new ServletAdapter(listener, serverBuilder.getScheduledExecutorService());
}

/**
* Creates an instance of ServletAdapter. A gRPC server with the given services and default
* settings will be built and started. The servlet using this servletAdapter will be backed by
* the gRPC server.
*/
public static ServletAdapter create(List<? extends BindableService> services) {
ServletServerBuilder serverBuilder = new ServletServerBuilder();
services.forEach(service -> serverBuilder.addService(service));
return create(serverBuilder);
}
}
}

0 comments on commit 6667208

Please sign in to comment.