Skip to content

Commit ffe0498

Browse files
committed
not to use CDI for simplicity
1 parent 166d3d9 commit ffe0498

File tree

13 files changed

+46
-193
lines changed

13 files changed

+46
-193
lines changed

examples/example-servlet/build.gradle

-7
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,6 @@ dependencies {
2828
compile "io.grpc:grpc-protobuf:${grpcVersion}"
2929
compile "io.grpc:grpc-servlet:${grpcVersion}"
3030

31-
// for container that already supports CDI 2
32-
// providedCompile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'
33-
34-
// for container that needs CDI 2
35-
compile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'
36-
compile "org.jboss.weld.servlet:weld-servlet-core:3.0.5.Final"
37-
3831
compile ("com.google.protobuf:protobuf-java-util:${protobufVersion}") {
3932
exclude group: 'com.google.guava', module: 'guava'
4033
}

examples/example-servlet/src/main/java/io/grpc/servlet/examples/helloworld/HelloWorldServlet.java

+30-4
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,43 @@
1616

1717
package io.grpc.servlet.examples.helloworld;
1818

19+
import io.grpc.stub.StreamObserver;
20+
import io.grpc.examples.helloworld.GreeterGrpc;
21+
import io.grpc.examples.helloworld.HelloReply;
22+
import io.grpc.examples.helloworld.HelloRequest;
1923
import io.grpc.servlet.ServletAdapter;
24+
import io.grpc.servlet.ServletServerBuilder;
2025
import java.io.IOException;
21-
import javax.inject.Inject;
26+
import java.util.concurrent.Executors;
2227
import javax.servlet.annotation.WebServlet;
2328
import javax.servlet.http.HttpServlet;
2429
import javax.servlet.http.HttpServletRequest;
2530
import javax.servlet.http.HttpServletResponse;
2631

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

34-
@Inject
35-
private ServletAdapter servletAdapter;
43+
private final ServletAdapter servletAdapter = ServletAdapter.Factory.create(
44+
new ServletServerBuilder().addService(new GreeterImpl()));
45+
46+
private static final class GreeterImpl extends GreeterGrpc.GreeterImplBase {
47+
GreeterImpl() {}
48+
49+
@Override
50+
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
51+
HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + req.getName()).build();
52+
responseObserver.onNext(reply);
53+
responseObserver.onCompleted();
54+
}
55+
}
3656

3757
@Override
3858
protected void doGet(HttpServletRequest request, HttpServletResponse response)
@@ -51,4 +71,10 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
5171
response.getWriter().println("<p>Hello non-gRPC client!</p>");
5272
}
5373
}
74+
75+
@Override
76+
public void destroy() {
77+
servletAdapter.destroy();
78+
super.destroy();
79+
}
5480
}

examples/example-servlet/src/main/java/io/grpc/servlet/examples/helloworld/ServletAdapterProvider.java

-54
This file was deleted.

examples/example-servlet/src/main/webapp/WEB-INF/beans.xml

-7
This file was deleted.

examples/example-servlet/src/main/webapp/WEB-INF/glassfish-web.xml

-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@
22
<!-- Need this file for deployment to GlassFish -->
33
<!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">
44
<glassfish-web-app error-url="">
5-
<context-root></context-root>
65
<class-loader delegate="false"/>
76
</glassfish-web-app>

servlet/interop-testing/build.gradle

+3-7
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,9 @@ dependencies {
4646
compile project(':grpc-stub')
4747
compile project(':grpc-protobuf')
4848
compile project(':grpc-servlet')
49-
50-
// for container that already supports CDI 2
51-
// providedCompile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'
52-
53-
// for container that needs CDI 2
54-
compile group: 'javax.enterprise', name: 'cdi-api', version: '2.0.SP1'
55-
compile "org.jboss.weld.servlet:weld-servlet-core:3.0.5.Final"
49+
compile (project(':grpc-benchmarks')) {
50+
exclude group: 'org.hamcrest'
51+
exclude group: 'com.squareup.okio'}
5652

5753
compile ("com.google.protobuf:protobuf-java-util:${protobufVersion}") {
5854
exclude group: 'com.google.guava', module: 'guava'

servlet/interop-testing/src/main/java/io/grpc/servlet/interoptest/InteropTestServlet.java

+9-18
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,18 @@
1616

1717
package io.grpc.servlet.interoptest;
1818

19-
import io.grpc.servlet.ServletAdapter;
20-
import java.io.IOException;
21-
import javax.inject.Inject;
19+
import io.grpc.servlet.GrpcServlet;
20+
import io.grpc.testing.integration.TestServiceImpl;
21+
import java.util.Collections;
22+
import java.util.concurrent.Executors;
2223
import javax.servlet.annotation.WebServlet;
23-
import javax.servlet.http.HttpServlet;
24-
import javax.servlet.http.HttpServletRequest;
25-
import javax.servlet.http.HttpServletResponse;
2624

27-
/**
28-
* A servlet that hosts a gRPC server.
29-
*/
30-
@WebServlet(urlPatterns = {"/grpc.testing.TestService/*"}, asyncSupported = true)
31-
public class InteropTestServlet extends HttpServlet {
25+
/** A servlet that hosts a gRPC server. */
26+
@WebServlet(urlPatterns = "/grpc.testing.TestService/*", asyncSupported = true)
27+
public class InteropTestServlet extends GrpcServlet {
3228
private static final long serialVersionUID = 1L;
3329

34-
@Inject
35-
private ServletAdapter servletAdapter;
36-
37-
@Override
38-
protected void doPost(HttpServletRequest request, HttpServletResponse response)
39-
throws IOException {
40-
servletAdapter.doPost(request, response);
30+
public InteropTestServlet() {
31+
super(Collections.singletonList(new TestServiceImpl(Executors.newScheduledThreadPool(2))));
4132
}
4233
}

servlet/interop-testing/src/main/java/io/grpc/servlet/interoptest/ServletAdapterProvider.java

-41
This file was deleted.

servlet/interop-testing/src/main/webapp/WEB-INF/beans.xml

-7
This file was deleted.

servlet/interop-testing/src/main/webapp/WEB-INF/glassfish-web.xml

-7
This file was deleted.

servlet/interop-testing/src/main/webapp/WEB-INF/jboss-web.xml

-9
This file was deleted.

servlet/src/main/java/io/grpc/servlet/GrpcServlet.java

+4-9
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import io.grpc.BindableService;
2020
import java.io.IOException;
2121
import java.util.List;
22-
import javax.servlet.ServletException;
2322
import javax.servlet.http.HttpServlet;
2423
import javax.servlet.http.HttpServletRequest;
2524
import javax.servlet.http.HttpServletResponse;
@@ -38,7 +37,9 @@ public class GrpcServlet extends HttpServlet {
3837
* Instantiate the servlet serving the given list of gRPC services.
3938
*/
4039
public GrpcServlet(List<? extends BindableService> grpcServices) {
41-
servletAdapter = ServletAdapter.Factory.create(grpcServices);
40+
ServletServerBuilder serverBuilder = new ServletServerBuilder();
41+
grpcServices.forEach(service -> serverBuilder.addService(service));
42+
servletAdapter = ServletAdapter.Factory.create(serverBuilder);
4243
}
4344

4445
@Override
@@ -50,13 +51,7 @@ protected final void doGet(HttpServletRequest request, HttpServletResponse respo
5051
@Override
5152
protected final void doPost(HttpServletRequest request, HttpServletResponse response)
5253
throws IOException {
53-
servletAdapter.doGet(request, response);
54-
}
55-
56-
@Override
57-
public void init() throws ServletException {
58-
super.init();
59-
servletAdapter.init();
54+
servletAdapter.doPost(request, response);
6055
}
6156

6257
@Override

servlet/src/main/java/io/grpc/servlet/ServletAdapter.java

-22
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import static java.util.logging.Level.FINE;
2323
import static java.util.logging.Level.FINEST;
2424

25-
import io.grpc.BindableService;
2625
import io.grpc.Metadata;
2726
import io.grpc.internal.GrpcUtil;
2827
import io.grpc.internal.LogId;
@@ -33,16 +32,13 @@
3332
import io.grpc.servlet.ServletServerStream.WriteState;
3433
import java.io.IOException;
3534
import java.util.Arrays;
36-
import java.util.List;
3735
import java.util.Queue;
3836
import java.util.concurrent.ConcurrentLinkedDeque;
3937
import java.util.concurrent.ScheduledExecutorService;
4038
import java.util.concurrent.TimeUnit;
4139
import java.util.concurrent.atomic.AtomicReference;
4240
import java.util.logging.Level;
4341
import java.util.logging.Logger;
44-
import javax.annotation.PostConstruct;
45-
import javax.annotation.PreDestroy;
4642
import javax.servlet.AsyncContext;
4743
import javax.servlet.ReadListener;
4844
import javax.servlet.ServletContext;
@@ -252,16 +248,9 @@ public void onError(Throwable t) {
252248
});
253249
}
254250

255-
/**
256-
* Call this method before the adapter is in use.
257-
*/
258-
@PostConstruct
259-
public void init() {}
260-
261251
/**
262252
* Call this method when the adapter is no longer need.
263253
*/
264-
@PreDestroy
265254
public void destroy() {
266255
transportListener.transportTerminated();
267256
}
@@ -305,16 +294,5 @@ public static ServletAdapter create(ServletServerBuilder serverBuilder) {
305294
ServerTransportListener listener = serverBuilder.buildAndStart();
306295
return new ServletAdapter(listener, serverBuilder.getScheduledExecutorService());
307296
}
308-
309-
/**
310-
* Creates an instance of ServletAdapter. A gRPC server with the given services and default
311-
* settings will be built and started. The servlet using this servletAdapter will be backed by
312-
* the gRPC server.
313-
*/
314-
public static ServletAdapter create(List<? extends BindableService> services) {
315-
ServletServerBuilder serverBuilder = new ServletServerBuilder();
316-
services.forEach(service -> serverBuilder.addService(service));
317-
return create(serverBuilder);
318-
}
319297
}
320298
}

0 commit comments

Comments
 (0)