You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/11/25 19:25:42 UTC

[pulsar] branch master updated: Fixes for Java 11 (#3006)

This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 716a6b4  Fixes for Java 11 (#3006)
716a6b4 is described below

commit 716a6b46fb18929a1f85851377098891e84ee114
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Sun Nov 25 11:25:37 2018 -0800

    Fixes for Java 11 (#3006)
    
    * [java-11] Compilation fixes
    
    * Runtime fixes
    
    * Fix dependencies for discovery service
    
    * Fixed json mapper provider in new jersey
    
    * Fixed license files
    
    * Added hk2 dep to proxy
    
    * Added hk2 deps to pulsar-client-admin as well
    
    * added missing jar in license file
    
    * More license fixes
---
 distribution/server/licenses/LICENSE-Lombok.txt    | 19 ------
 distribution/server/pom.xml                        |  6 ++
 distribution/server/src/assemble/LICENSE.bin.txt   | 70 ++++++++++++----------
 distribution/server/src/assemble/bin.xml           |  2 +
 pom.xml                                            | 60 +++++++++++++++++--
 .../pulsar/broker/web/JsonMapperProvider.java      | 36 +++++++++++
 pulsar-broker/pom.xml                              | 18 +++++-
 .../org/apache/pulsar/broker/web/WebService.java   | 14 ++---
 .../broker/auth/MockedPulsarServiceBaseTest.java   |  9 +--
 .../worker/PulsarWorkerAssignmentTest.java         |  9 ++-
 .../apache/pulsar/io/PulsarFunctionAdminTest.java  |  7 +--
 .../apache/pulsar/io/PulsarFunctionE2ETest.java    | 23 ++++---
 pulsar-client-admin/pom.xml                        | 15 +++++
 .../org/apache/pulsar/client/admin/Topics.java     |  1 -
 .../pulsar/common/policies/data/TenantInfo.java    |  3 -
 .../org/apache/pulsar/common/stats/JvmMetrics.java | 42 ++++++++-----
 .../org/apache/pulsar/common/stats/Metrics.java    |  3 +-
 pulsar-discovery-service/pom.xml                   | 15 +++++
 pulsar-functions/pom.xml                           | 20 -------
 pulsar-functions/proto/pom.xml                     | 11 ++++
 .../runtime/src/test/resources/log4j2.yml          | 37 ------------
 .../worker/src/test/resources/log4j2.yml           | 37 ------------
 pulsar-proxy/pom.xml                               | 15 +++++
 .../org/apache/pulsar/proxy/server/WebServer.java  |  5 +-
 pulsar-sql/presto-distribution/LICENSE             | 10 +++-
 .../pulsar/websocket/service/ProxyServer.java      |  7 +--
 pulsar-zookeeper-utils/pom.xml                     |  3 +-
 pulsar-zookeeper/pom.xml                           |  4 +-
 28 files changed, 282 insertions(+), 219 deletions(-)

diff --git a/distribution/server/licenses/LICENSE-Lombok.txt b/distribution/server/licenses/LICENSE-Lombok.txt
deleted file mode 100644
index 5da7dbe..0000000
--- a/distribution/server/licenses/LICENSE-Lombok.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2009-2015 The Project Lombok Authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/distribution/server/pom.xml b/distribution/server/pom.xml
index e9525df..739f82a 100644
--- a/distribution/server/pom.xml
+++ b/distribution/server/pom.xml
@@ -56,6 +56,12 @@
       <groupId>org.apache.pulsar</groupId>
       <artifactId>pulsar-client-tools</artifactId>
       <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>io.grpc</groupId>
+          <artifactId>grpc-testing</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
 
     <dependency>
diff --git a/distribution/server/src/assemble/LICENSE.bin.txt b/distribution/server/src/assemble/LICENSE.bin.txt
index 57f9638..bd6e8ae 100644
--- a/distribution/server/src/assemble/LICENSE.bin.txt
+++ b/distribution/server/src/assemble/LICENSE.bin.txt
@@ -417,25 +417,25 @@ The Apache Software License, Version 2.0
  * HttpClient
     - org.apache.httpcomponents-httpclient-4.5.5.jar
     - org.apache.httpcomponents-httpcore-4.4.9.jar
- * Google Error Prone Annotations - com.google.errorprone-error_prone_annotations-2.1.2.jar
+ * Google Error Prone Annotations - com.google.errorprone-error_prone_annotations-2.2.0.jar
  * OkHttp - com.squareup.okhttp-okhttp-2.5.0.jar
  * Okio - com.squareup.okio-okio-1.13.0.jar
  * Javassist -- org.javassist-javassist-3.21.0-GA.jar
   * gRPC
-    - io.grpc-grpc-all-1.12.0.jar
-    - io.grpc-grpc-auth-1.12.0.jar
-    - io.grpc-grpc-context-1.12.0.jar
-    - io.grpc-grpc-core-1.12.0.jar
-    - io.grpc-grpc-netty-1.12.0.jar
-    - io.grpc-grpc-okhttp-1.12.0.jar
-    - io.grpc-grpc-protobuf-1.12.0.jar
-    - io.grpc-grpc-protobuf-lite-1.12.0.jar
-    - io.grpc-grpc-protobuf-nano-1.12.0.jar
-    - io.grpc-grpc-stub-1.12.0.jar
+    - io.grpc-grpc-all-1.16.1.jar
+    - io.grpc-grpc-auth-1.16.1.jar
+    - io.grpc-grpc-context-1.16.1.jar
+    - io.grpc-grpc-core-1.16.1.jar
+    - io.grpc-grpc-netty-1.16.1.jar
+    - io.grpc-grpc-okhttp-1.16.1.jar
+    - io.grpc-grpc-protobuf-1.16.1.jar
+    - io.grpc-grpc-protobuf-lite-1.16.1.jar
+    - io.grpc-grpc-protobuf-nano-1.16.1.jar
+    - io.grpc-grpc-stub-1.16.1.jar
     - io.grpc-grpc-testing-1.12.0.jar
   * OpenCensus
-    - io.opencensus-opencensus-api-0.11.0.jar
-    - io.opencensus-opencensus-contrib-grpc-metrics-0.11.0.jar
+    - io.opencensus-opencensus-api-0.12.3.jar
+    - io.opencensus-opencensus-contrib-grpc-metrics-0.12.3.jar
   * Paranamer
     - com.thoughtworks.paranamer-paranamer-2.7.jar
   * Jodah
@@ -469,6 +469,8 @@ The Apache Software License, Version 2.0
     - io.dropwizard.metrics-metrics-jvm-3.1.0.jar
   * Prometheus
     - io.prometheus-simpleclient_httpserver-0.5.0.jar
+  * JavaX Injection
+    - javax.inject-javax.inject-1.jar
 
 
 BSD 3-clause "New" or "Revised" License
@@ -476,7 +478,7 @@ BSD 3-clause "New" or "Revised" License
     - com.google.auth-google-auth-library-credentials-0.9.0.jar -- licenses/LICENSE-google-auth-library.txt
  * JLine -- jline-jline-0.9.94.jar -- licenses/LICENSE.JLine.txt
  * LevelDB -- (included in org.rocksdb.*.jar) -- licenses/LICENSE-LevelDB.txt
- * JSR305 -- com.google.code.findbugs-jsr305-3.0.0.jar -- licenses/LICENSE-JSR305.txt
+ * JSR305 -- com.google.code.findbugs-jsr305-3.0.2.jar -- licenses/LICENSE-JSR305.txt
 
 BSD 2-Clause License
  * HdrHistogram -- org.hdrhistogram-HdrHistogram-2.1.9.jar -- licenses/LICENSE-HdrHistogram.txt
@@ -487,7 +489,8 @@ MIT License
     - org.slf4j-jul-to-slf4j-1.7.25.jar
     - org.slf4j-slf4j-api-1.7.25.jar
     - org.slf4j-jcl-over-slf4j-1.7.25.jar
- * Lombok -- org.projectlombok-lombok-1.18.0.jar  -- licenses/LICENSE-Lombok.txt
+ * Animal Sniffer Annotations
+    - org.codehaus.mojo-animal-sniffer-annotations-1.17.jar
 
 Protocol Buffers License
  * Protocol Buffers
@@ -498,33 +501,36 @@ Protocol Buffers License
 CDDL-1.1 -- licenses/LICENSE-CDDL-1.1.txt
  * Java Annotations API
     - javax.annotation-javax.annotation-api-1.2.jar
+    - javax.activation-javax.activation-api-1.2.0.jar
+    - javax.xml.bind-activation-1.0.2.jar
+    - javax.xml.bind-jaxb-api-2.3.1.jar
  * Java Servlet API -- javax.servlet-javax.servlet-api-3.1.0.jar
  * WebSocket Server API -- javax.websocket-javax.websocket-client-api-1.0.jar
  * Java Web Service REST API -- javax.ws.rs-javax.ws.rs-api-2.1.jar
  * HK2 - Dependency Injection Kernel
-    - org.glassfish.hk2-hk2-api-2.5.0-b30.jar
-    - org.glassfish.hk2-hk2-locator-2.5.0-b30.jar
-    - org.glassfish.hk2-hk2-utils-2.5.0-b30.jar
+    - org.glassfish.hk2-hk2-api-2.5.0-b42.jar
+    - org.glassfish.hk2-hk2-locator-2.5.0-b42.jar
+    - org.glassfish.hk2-hk2-utils-2.5.0-b42.jar
     - org.glassfish.hk2-osgi-resource-locator-1.0.1.jar
-    - org.glassfish.hk2.external-aopalliance-repackaged-2.5.0-b30.jar
-    - org.glassfish.hk2.external-javax.inject-2.5.0-b30.jar
+    - org.glassfish.hk2.external-aopalliance-repackaged-2.5.0-b42.jar
+    - org.glassfish.hk2.external-javax.inject-2.5.0-b42.jar
  * Jersey
-    - org.glassfish.jersey.bundles.repackaged-jersey-guava-2.25.jar
-    - org.glassfish.jersey.containers-jersey-container-servlet-2.25.jar
-    - org.glassfish.jersey.containers-jersey-container-servlet-core-2.25.jar
-    - org.glassfish.jersey.core-jersey-client-2.25.jar
-    - org.glassfish.jersey.core-jersey-common-2.25.jar
-    - org.glassfish.jersey.core-jersey-server-2.25.jar
-    - org.glassfish.jersey.ext-jersey-entity-filtering-2.25.jar
-    - org.glassfish.jersey.media-jersey-media-jaxb-2.25.jar
-    - org.glassfish.jersey.media-jersey-media-json-jackson-2.25.jar
-    - org.glassfish.jersey.media-jersey-media-multipart-2.25.jar
+    - org.glassfish.jersey.containers-jersey-container-servlet-2.27.jar
+    - org.glassfish.jersey.containers-jersey-container-servlet-core-2.27.jar
+    - org.glassfish.jersey.core-jersey-client-2.27.jar
+    - org.glassfish.jersey.core-jersey-common-2.27.jar
+    - org.glassfish.jersey.core-jersey-server-2.27.jar
+    - org.glassfish.jersey.ext-jersey-entity-filtering-2.27.jar
+    - org.glassfish.jersey.media-jersey-media-jaxb-2.27.jar
+    - org.glassfish.jersey.media-jersey-media-json-jackson-2.27.jar
+    - org.glassfish.jersey.media-jersey-media-multipart-2.27.jar
+    - org.glassfish.jersey.inject-jersey-hk2-2.27.jar
  * Mimepull -- org.jvnet.mimepull-mimepull-1.9.6.jar
 
 Eclipse Public License 1.0 -- licenses/LICENSE-AspectJ.txt
  * AspectJ
-    - org.aspectj-aspectjrt-1.9.1.jar
-    - org.aspectj-aspectjweaver-1.9.1.jar
+    - org.aspectj-aspectjrt-1.9.2.jar
+    - org.aspectj-aspectjweaver-1.9.2.jar
 
 Public Domain
  * XZ for Java -- licenses/LICENSE-xz.txt
diff --git a/distribution/server/src/assemble/bin.xml b/distribution/server/src/assemble/bin.xml
index 72ee09b..c2d5996 100644
--- a/distribution/server/src/assemble/bin.xml
+++ b/distribution/server/src/assemble/bin.xml
@@ -137,6 +137,8 @@
         <!-- Explicitely remove JUnit which is getting pulled in even
              though it's set to the scope 'test' -->
         <exclude>junit:junit</exclude>
+
+        <exclude>org.projectlombok:lombok</exclude>
       </excludes>
     </dependencySet>
   </dependencySets>
diff --git a/pom.xml b/pom.xml
index ffdca39..da02e5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -146,10 +146,10 @@ flexible messaging model and an intuitive client API.</description>
     <netty.version>4.1.22.Final</netty.version>
     <storm.version>1.0.5</storm.version>
     <jetty.version>9.4.12.v20180830</jetty.version>
-    <jersey.version>2.25</jersey.version>
+    <jersey.version>2.27</jersey.version>
     <athenz.version>1.7.17</athenz.version>
     <prometheus.version>0.5.0</prometheus.version>
-    <aspectj.version>1.9.1</aspectj.version>
+    <aspectj.version>1.9.2</aspectj.version>
     <rocksdb.version>5.13.3</rocksdb.version>
     <slf4j.version>1.7.25</slf4j.version>
     <commons.collections.version>3.2.2</commons.collections.version>
@@ -163,7 +163,7 @@ flexible messaging model and an intuitive client API.</description>
     <protobuf2.version>2.4.1</protobuf2.version>
     <protobuf3.version>3.5.1</protobuf3.version>
     <protoc3.version>3.5.1-1</protoc3.version>
-    <grpc.version>1.12.0</grpc.version>
+    <grpc.version>1.16.1</grpc.version>
     <protoc-gen-grpc-java.version>1.0.0</protoc-gen-grpc-java.version>
     <gson.version>2.8.2</gson.version>
     <sketches.version>0.8.3</sketches.version>
@@ -181,6 +181,7 @@ flexible messaging model and an intuitive client API.</description>
     <flink.version>1.6.0</flink.version>
     <scala.binary.version>2.11</scala.binary.version>
     <debezium.version>0.8.2</debezium.version>
+    <opencensus.version>0.12.3</opencensus.version>
 
     <!-- test dependencies -->
     <arquillian-cube.version>1.15.1</arquillian-cube.version>
@@ -190,8 +191,9 @@ flexible messaging model and an intuitive client API.</description>
     <testcontainers.version>1.8.0</testcontainers.version>
 
     <!-- Plugin dependencies -->
-    <protobuf-maven-plugin.version>0.5.0</protobuf-maven-plugin.version>
+    <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
     <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
+    <aspectj-maven-plugin.version>1.11.1</aspectj-maven-plugin.version>
   </properties>
 
   <dependencyManagement>
@@ -520,6 +522,12 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>jersey-client</artifactId>
         <version>${jersey.version}</version>
       </dependency>
+      
+      <dependency>
+        <groupId>org.glassfish.jersey.inject</groupId>
+        <artifactId>jersey-hk2</artifactId>
+        <version>${jersey.version}</version>
+      </dependency>
 
       <dependency>
         <groupId>org.glassfish.jersey.containers</groupId>
@@ -576,6 +584,12 @@ flexible messaging model and an intuitive client API.</description>
       </dependency>
 
       <dependency>
+        <groupId>com.fasterxml.jackson.module</groupId>
+        <artifactId>jackson-module-jaxb-annotations</artifactId>
+        <version>${jackson.version}</version>
+      </dependency>
+
+      <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-annotations</artifactId>
         <version>${jackson.version}</version>
@@ -863,6 +877,41 @@ flexible messaging model and an intuitive client API.</description>
     	<artifactId>assertj-core</artifactId>
     	<version>3.11.1</version>
 	  </dependency>
+
+      <dependency>
+        <groupId>org.projectlombok</groupId>
+        <artifactId>lombok</artifactId>
+        <version>1.18.4</version>
+      </dependency>
+
+      <dependency>
+        <groupId>javax.annotation</groupId>
+        <artifactId>javax.annotation-api</artifactId>
+        <version>1.2</version>
+      </dependency>
+
+      <dependency>
+        <groupId>javax.xml.bind</groupId>
+        <artifactId>jaxb-api</artifactId>
+        <version>2.3.1</version>
+      </dependency>
+
+      <dependency>
+        <groupId>javax.xml.bind</groupId>
+        <artifactId>activation</artifactId>
+        <version>1.0.2</version>
+      </dependency>
+
+      <dependency>
+        <groupId>io.opencensus</groupId>
+        <artifactId>opencensus-api</artifactId>
+        <version>${opencensus.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.opencensus</groupId>
+        <artifactId>opencensus-contrib-grpc-metrics</artifactId>
+        <version>${opencensus.version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
@@ -908,7 +957,6 @@ flexible messaging model and an intuitive client API.</description>
     <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
-      <version>1.18.0</version>
       <scope>provided</scope>
     </dependency>
 
@@ -1224,7 +1272,7 @@ flexible messaging model and an intuitive client API.</description>
         </plugin>
         <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>3.7.0</version>
+          <version>3.8.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/web/JsonMapperProvider.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/web/JsonMapperProvider.java
new file mode 100644
index 0000000..cb4ef7f
--- /dev/null
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/web/JsonMapperProvider.java
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.broker.web;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.Provider;
+
+import org.apache.pulsar.common.util.ObjectMapperFactory;
+
+@Provider
+public class JsonMapperProvider implements ContextResolver<ObjectMapper> {
+    private final ObjectMapper mapper = ObjectMapperFactory.create();
+
+    @Override
+    public ObjectMapper getContext(Class<?> type) {
+        return mapper;
+    }
+}
\ No newline at end of file
diff --git a/pulsar-broker/pom.xml b/pulsar-broker/pom.xml
index b7905fe..7ba1f15 100644
--- a/pulsar-broker/pom.xml
+++ b/pulsar-broker/pom.xml
@@ -174,6 +174,11 @@
       <groupId>com.fasterxml.jackson.jaxrs</groupId>
       <artifactId>jackson-jaxrs-json-provider</artifactId>
     </dependency>
+    
+    <dependency>
+      <groupId>org.glassfish.jersey.inject</groupId>
+      <artifactId>jersey-hk2</artifactId>
+    </dependency>
 
     <dependency>
       <groupId>com.fasterxml.jackson.module</groupId>
@@ -277,14 +282,23 @@
       <scope>test</scope>
     </dependency>
 
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>activation</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
+        <groupId>com.github.m50d</groupId>
         <artifactId>aspectj-maven-plugin</artifactId>
-        <version>1.10</version>
+        <version>${aspectj-maven-plugin.version}</version>
         <configuration>
           <complianceLevel>1.8</complianceLevel>
           <source>1.8</source>
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java
index 9fa6ac9..04df62f 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java
@@ -18,6 +18,10 @@
  */
 package org.apache.pulsar.broker.web;
 
+import com.google.common.collect.Lists;
+
+import io.prometheus.client.jetty.JettyStatisticsCollector;
+
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
 import java.util.EnumSet;
@@ -29,7 +33,6 @@ import javax.servlet.DispatcherType;
 
 import org.apache.pulsar.broker.PulsarServerException;
 import org.apache.pulsar.broker.PulsarService;
-import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.apache.pulsar.common.util.SecurityUtility;
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.Server;
@@ -54,11 +57,6 @@ import org.glassfish.jersey.servlet.ServletContainer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
-import com.google.common.collect.Lists;
-
-import io.prometheus.client.jetty.JettyStatisticsCollector;
-
 /**
  * Web Service embedded into Pulsar
  */
@@ -111,11 +109,9 @@ public class WebService implements AutoCloseable {
     }
 
     public void addRestResources(String basePath, String javaPackages, boolean requiresAuthentication, Map<String,Object> attributeMap) {
-        JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
-        provider.setMapper(ObjectMapperFactory.create());
         ResourceConfig config = new ResourceConfig();
         config.packages("jersey.config.server.provider.packages", javaPackages);
-        config.register(provider);
+        config.register(JsonMapperProvider.class);
         config.register(MultiPartFeature.class);
         ServletHolder servletHolder = new ServletHolder(new ServletContainer(config));
         servletHolder.setAsyncSupported(true);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
index aa6dd71..e0130d2 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
@@ -21,6 +21,7 @@ package org.apache.pulsar.broker.auth;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
 import java.io.IOException;
@@ -29,8 +30,8 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Executors;
 import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Predicate;
 import java.util.function.Supplier;
@@ -38,17 +39,13 @@ import java.util.function.Supplier;
 import org.apache.bookkeeper.client.BKException;
 import org.apache.bookkeeper.client.BookKeeper;
 import org.apache.bookkeeper.client.PulsarMockBookKeeper;
-import org.apache.bookkeeper.conf.ClientConfiguration;
 import org.apache.bookkeeper.test.PortManager;
 import org.apache.bookkeeper.util.ZkUtils;
 import org.apache.pulsar.broker.BookKeeperClientFactory;
 import org.apache.pulsar.broker.PulsarService;
 import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.broker.namespace.NamespaceService;
-import org.apache.pulsar.broker.service.schema.BookkeeperSchemaStorage;
 import org.apache.pulsar.client.admin.PulsarAdmin;
-import org.apache.pulsar.client.api.Authentication;
-import org.apache.pulsar.client.api.Message;
 import org.apache.pulsar.client.api.PulsarClient;
 import org.apache.pulsar.compaction.Compactor;
 import org.apache.pulsar.zookeeper.ZooKeeperClientFactory;
@@ -60,8 +57,6 @@ import org.apache.zookeeper.data.ACL;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.util.concurrent.MoreExecutors;
-
 /**
  * Base class for all tests that need a Pulsar instance without a ZK and BK cluster
  */
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java
index 1b4c2aa..5210491 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java
@@ -23,6 +23,9 @@ import static org.mockito.Mockito.spy;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
 import java.lang.reflect.Method;
 import java.net.InetAddress;
 import java.net.URI;
@@ -40,11 +43,11 @@ import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.PulsarAdminException;
 import org.apache.pulsar.client.api.ClientBuilder;
 import org.apache.pulsar.client.api.PulsarClient;
+import org.apache.pulsar.common.functions.FunctionConfig;
 import org.apache.pulsar.common.functions.Utils;
 import org.apache.pulsar.common.policies.data.ClusterData;
 import org.apache.pulsar.common.policies.data.TenantInfo;
 import org.apache.pulsar.functions.proto.Function.Assignment;
-import org.apache.pulsar.common.functions.FunctionConfig;
 import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,10 +55,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Sets;
-
-import jersey.repackaged.com.google.common.collect.Lists;
-
 /**
  * Test Pulsar sink on function
  *
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java
index 415a814..a2a5b28 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java
@@ -21,6 +21,9 @@ package org.apache.pulsar.io;
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
 import static org.mockito.Mockito.spy;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
 import java.lang.reflect.Method;
 import java.net.InetAddress;
 import java.net.URL;
@@ -53,10 +56,6 @@ import org.slf4j.LoggerFactory;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 
-import com.google.common.collect.Sets;
-
-import jersey.repackaged.com.google.common.collect.Lists;
-
 /**
  * Test Pulsar sink on function
  *
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java
index 4dbdf3b..6d89634 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java
@@ -26,10 +26,17 @@ import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotEquals;
 import static org.testng.Assert.assertTrue;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
 import java.lang.reflect.Method;
 import java.net.InetAddress;
 import java.net.URL;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -42,8 +49,15 @@ import org.apache.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl;
 import org.apache.pulsar.client.admin.BrokerStats;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.PulsarAdminException;
-import org.apache.pulsar.client.api.*;
+import org.apache.pulsar.client.api.Authentication;
+import org.apache.pulsar.client.api.ClientBuilder;
+import org.apache.pulsar.client.api.Consumer;
+import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.Producer;
+import org.apache.pulsar.client.api.PulsarClient;
+import org.apache.pulsar.client.api.Schema;
 import org.apache.pulsar.client.impl.auth.AuthenticationTls;
+import org.apache.pulsar.common.functions.FunctionConfig;
 import org.apache.pulsar.common.functions.Utils;
 import org.apache.pulsar.common.policies.data.ClusterData;
 import org.apache.pulsar.common.policies.data.FunctionStats;
@@ -51,7 +65,6 @@ import org.apache.pulsar.common.policies.data.SubscriptionStats;
 import org.apache.pulsar.common.policies.data.TenantInfo;
 import org.apache.pulsar.functions.proto.InstanceCommunication.FunctionStatus;
 import org.apache.pulsar.functions.proto.InstanceCommunication.FunctionStatusList;
-import org.apache.pulsar.common.functions.FunctionConfig;
 import org.apache.pulsar.functions.worker.FunctionRuntimeManager;
 import org.apache.pulsar.functions.worker.WorkerConfig;
 import org.apache.pulsar.functions.worker.WorkerService;
@@ -63,10 +76,6 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Sets;
-
-import jersey.repackaged.com.google.common.collect.Lists;
-
 /**
  * Test Pulsar sink on function
  *
diff --git a/pulsar-client-admin/pom.xml b/pulsar-client-admin/pom.xml
index 79625bf..b87962f 100644
--- a/pulsar-client-admin/pom.xml
+++ b/pulsar-client-admin/pom.xml
@@ -67,6 +67,21 @@
     </dependency>
 
     <dependency>
+      <groupId>org.glassfish.jersey.inject</groupId>
+      <artifactId>jersey-hk2</artifactId>
+    </dependency>
+
+   <dependency>
+     <groupId>javax.xml.bind</groupId>
+     <artifactId>jaxb-api</artifactId>
+   </dependency>
+
+   <dependency>
+     <groupId>javax.xml.bind</groupId>
+     <artifactId>activation</artifactId>
+   </dependency>
+
+    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jul-to-slf4j</artifactId>
     </dependency>
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Topics.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Topics.java
index 1994275..f3f95ac 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Topics.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Topics.java
@@ -36,7 +36,6 @@ import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats;
 import org.apache.pulsar.common.policies.data.PartitionedTopicStats;
 import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats;
 import org.apache.pulsar.common.policies.data.TopicStats;
-import org.omg.CosNaming.NamingContextPackage.NotFound;
 
 import com.google.gson.JsonObject;
 
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java
index c03eb91..b8f6b63 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java
@@ -22,11 +22,8 @@ import com.google.common.collect.Sets;
 
 import java.util.Set;
 
-import javax.xml.bind.annotation.XmlRootElement;
-
 import lombok.Data;
 
-@XmlRootElement
 @Data
 public class TenantInfo {
     /**
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/JvmMetrics.java b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/JvmMetrics.java
index 6353dfa..15dfd86 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/JvmMetrics.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/JvmMetrics.java
@@ -18,31 +18,32 @@
  */
 package org.apache.pulsar.common.stats;
 
+import com.google.common.collect.Lists;
+
+import io.netty.buffer.PoolArenaMetric;
+import io.netty.buffer.PoolChunkListMetric;
+import io.netty.buffer.PoolChunkMetric;
+import io.netty.buffer.PooledByteBufAllocator;
+import io.netty.util.internal.PlatformDependent;
+
+import java.lang.management.BufferPoolMXBean;
 import java.lang.management.ManagementFactory;
 import java.lang.reflect.Field;
+import java.nio.ByteBuffer;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
 
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 
-import org.apache.pulsar.common.stats.Metrics;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.Lists;
-
-import io.netty.buffer.PoolArenaMetric;
-import io.netty.buffer.PoolChunkListMetric;
-import io.netty.buffer.PoolChunkMetric;
-import io.netty.buffer.PooledByteBufAllocator;
-import io.netty.util.internal.PlatformDependent;
-import java.util.concurrent.atomic.AtomicLong;
-
 public class JvmMetrics {
 
     private volatile long accumulatedYoungGcCount = 0;
@@ -54,10 +55,10 @@ public class JvmMetrics {
     private volatile long currentOldGcCount = 0;
     private volatile long accumulatedOldGcTime = 0;
     private volatile long currentOldGcTime = 0;
-    
+
     private static final Logger log = LoggerFactory.getLogger(JvmMetrics.class);
     private static Field directMemoryUsage = null;
-    
+
     private final String componentName;
     static {
         try {
@@ -87,7 +88,7 @@ public class JvmMetrics {
         m.put("jvm_total_memory", r.totalMemory());
 
         m.put("jvm_direct_memory_used", getJvmDirectMemoryUsed());
-        m.put("jvm_max_direct_memory", sun.misc.VM.maxDirectMemory());
+        m.put("jvm_max_direct_memory", PlatformDependent.maxDirectMemory());
         m.put("jvm_thread_cnt", getThreadCount());
 
         m.put("jvm_gc_young_pause", currentYoungGcTime);
@@ -127,7 +128,18 @@ public class JvmMetrics {
                 }
             }
         }
-        return sun.misc.SharedSecrets.getJavaNioAccess().getDirectBufferPool().getMemoryUsed();
+
+
+
+        List<BufferPoolMXBean> pools = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
+        for (BufferPoolMXBean pool : pools) {
+            if (pool.getName().equals("direct")) {
+                return pool.getMemoryUsed();
+            }
+        }
+
+        // Couldnt get direct memory usage
+        return -1;
     }
 
     private static ObjectName youngGenName = null;
@@ -178,7 +190,7 @@ public class JvmMetrics {
 
         return parentThreadGroup.activeCount();
     }
-    
+
     private Metrics createMetrics() {
         return createMetrics(Collections.singletonMap("metric", "jvm_metrics"));
     }
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java
index 045acc1..fe52ee8 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java
@@ -23,7 +23,6 @@ import java.util.Map;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.google.common.base.Objects;
 import com.google.common.collect.Maps;
 
@@ -47,7 +46,7 @@ public class Metrics {
         metrics = Maps.newTreeMap();
         dimensions = Maps.newHashMap();
     }
-    
+
     // hide constructor
     protected Metrics(Map<String, String> unmodifiableDimensionMap) {
         this.metrics = Maps.newTreeMap();
diff --git a/pulsar-discovery-service/pom.xml b/pulsar-discovery-service/pom.xml
index 5480013..04e5cd2 100644
--- a/pulsar-discovery-service/pom.xml
+++ b/pulsar-discovery-service/pom.xml
@@ -126,6 +126,21 @@
       <groupId>io.swagger</groupId>
       <artifactId>swagger-annotations</artifactId>
     </dependency>
+    
+    <dependency>
+      <groupId>org.glassfish.jersey.inject</groupId>
+      <artifactId>jersey-hk2</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>activation</artifactId>
+    </dependency>
 
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/pulsar-functions/pom.xml b/pulsar-functions/pom.xml
index 6de88a8..06ceca5 100644
--- a/pulsar-functions/pom.xml
+++ b/pulsar-functions/pom.xml
@@ -45,24 +45,4 @@
     <module>secrets</module>
   </modules>
 
-  <dependencyManagement>
-    <dependencies>
-
-      <dependency>
-        <groupId>org.projectlombok</groupId>
-        <artifactId>lombok</artifactId>
-        <version>1.16.12</version>
-      </dependency>
-
-    </dependencies>
-  </dependencyManagement>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-
 </project>
diff --git a/pulsar-functions/proto/pom.xml b/pulsar-functions/proto/pom.xml
index 951639f..5bae183 100644
--- a/pulsar-functions/proto/pom.xml
+++ b/pulsar-functions/proto/pom.xml
@@ -42,6 +42,17 @@
         </dependency>
 
         <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java-util</artifactId>
+            <version>${protobuf3.version}</version>
+        </dependency>
+        
+        <dependency>
+          <groupId>javax.annotation</groupId>
+          <artifactId>javax.annotation-api</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-all</artifactId>
             <exclusions>
diff --git a/pulsar-functions/runtime/src/test/resources/log4j2.yml b/pulsar-functions/runtime/src/test/resources/log4j2.yml
deleted file mode 100644
index fb99e32..0000000
--- a/pulsar-functions/runtime/src/test/resources/log4j2.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-Configuration:
-  name: test
-
-  Appenders:
-
-    # Console
-    Console:
-      name: Console
-      target: SYSTEM_OUT
-      PatternLayout:
-        Pattern: "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
-
-  Loggers:
-
-    Root:
-      level: info
-      AppenderRef:
-        - ref: Console
\ No newline at end of file
diff --git a/pulsar-functions/worker/src/test/resources/log4j2.yml b/pulsar-functions/worker/src/test/resources/log4j2.yml
deleted file mode 100644
index 807c8b4..0000000
--- a/pulsar-functions/worker/src/test/resources/log4j2.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-Configuration:
-  name: test
-
-  Appenders:
-
-    # Console
-    Console:
-      name: Console
-      target: SYSTEM_OUT
-      PatternLayout:
-        Pattern: "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
-
-  Loggers:
-
-    Root:
-      level: info
-      AppenderRef:
-        - ref: Console
diff --git a/pulsar-proxy/pom.xml b/pulsar-proxy/pom.xml
index 47955d3..05e2b39 100644
--- a/pulsar-proxy/pom.xml
+++ b/pulsar-proxy/pom.xml
@@ -90,6 +90,21 @@
     </dependency>
 
     <dependency>
+      <groupId>org.glassfish.jersey.inject</groupId>
+      <artifactId>jersey-hk2</artifactId>
+    </dependency>
+
+   <dependency>
+     <groupId>javax.xml.bind</groupId>
+     <artifactId>jaxb-api</artifactId>
+   </dependency>
+
+   <dependency>
+     <groupId>javax.xml.bind</groupId>
+     <artifactId>activation</artifactId>
+   </dependency>
+
+    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jul-to-slf4j</artifactId>
     </dependency>
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java
index cf4469b..76e3b40 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java
@@ -39,6 +39,7 @@ import javax.servlet.DispatcherType;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.pulsar.broker.authentication.AuthenticationService;
 import org.apache.pulsar.broker.web.AuthenticationFilter;
+import org.apache.pulsar.broker.web.JsonMapperProvider;
 import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.apache.pulsar.common.util.SecurityUtility;
 import org.eclipse.jetty.server.Connector;
@@ -148,11 +149,9 @@ public class WebServer {
     }
 
     public void addRestResources(String basePath, String javaPackages, String attribute, Object attributeValue) {
-        JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
-        provider.setMapper(ObjectMapperFactory.create());
         ResourceConfig config = new ResourceConfig();
         config.packages("jersey.config.server.provider.packages", javaPackages);
-        config.register(provider);
+        config.register(JsonMapperProvider.class);
         ServletHolder servletHolder = new ServletHolder(new ServletContainer(config));
         servletHolder.setAsyncSupported(true);
         ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
diff --git a/pulsar-sql/presto-distribution/LICENSE b/pulsar-sql/presto-distribution/LICENSE
index 866ba23..201269c 100644
--- a/pulsar-sql/presto-distribution/LICENSE
+++ b/pulsar-sql/presto-distribution/LICENSE
@@ -372,7 +372,7 @@ The Apache Software License, Version 2.0
     - rocksdbjni-5.13.3.jar
   * SnakeYAML
     - snakeyaml-1.17.jar
-    - snakeyaml-1.23.jar 
+    - snakeyaml-1.23.jar
   * Snappy Java
     - snappy-java-1.1.1.3.jar
   * Bean Validation API
@@ -413,7 +413,9 @@ BSD License
    - paranamer-2.7.jar
 
 MIT License
- * Animal Sniffer Annotations -- animal-sniffer-annotations-1.14.jar
+ * Animal Sniffer Annotations
+   - animal-sniffer-annotations-1.14.jar
+   - animal-sniffer-annotations-1.17.jar
  * Checker Qua -- checker-compat-qual-2.0.0.jar
  * PCollections
    - pcollections-2.1.2.jar
@@ -432,7 +434,10 @@ CDDL - 1.0
 
 CDDL-1.1 -- licenses/LICENSE-CDDL-1.1.txt
  * Java Annotations API
+   - javax.annotation-api-1.2.jar
    - javax.annotation-api-1.3.1.jar
+   - javax.activation-api-1.2.0.jar
+   - activation-1.0.2.jar
  * HK2 - Dependency Injection Kernel
    - hk2-api-2.5.0-b42.jar
    - hk2-locator-2.5.0-b42.jar
@@ -449,6 +454,7 @@ CDDL-1.1 -- licenses/LICENSE-CDDL-1.1.txt
  * JavaBeans(TM) Activation Framework -- activation-1.1.1.jar
  * JAXB
     - jaxb-api-2.2.6.jar
+    - jaxb-api-2.3.1.jar
     - jaxb-impl-2.2.6.jar
 
  Eclipse Public License 1.0 -- licenses/LICENSE-AspectJ.txt
diff --git a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/ProxyServer.java b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/ProxyServer.java
index 455b2de..c7fd3b1 100644
--- a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/ProxyServer.java
+++ b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/ProxyServer.java
@@ -18,7 +18,6 @@
  */
 package org.apache.pulsar.websocket.service;
 
-import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import com.google.common.collect.Lists;
 
 import java.net.MalformedURLException;
@@ -32,8 +31,8 @@ import javax.servlet.ServletException;
 import javax.websocket.DeploymentException;
 
 import org.apache.pulsar.broker.PulsarServerException;
+import org.apache.pulsar.broker.web.JsonMapperProvider;
 import org.apache.pulsar.client.api.PulsarClientException;
-import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.apache.pulsar.common.util.SecurityUtility;
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.Server;
@@ -105,11 +104,9 @@ public class ProxyServer {
     }
 
     public void addRestResources(String basePath, String javaPackages, String attribute, Object attributeValue) {
-        JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
-        provider.setMapper(ObjectMapperFactory.create());
         ResourceConfig config = new ResourceConfig();
         config.packages("jersey.config.server.provider.packages", javaPackages);
-        config.register(provider);
+        config.register(JsonMapperProvider.class);
         ServletHolder servletHolder = new ServletHolder(new ServletContainer(config));
         servletHolder.setAsyncSupported(true);
         ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
diff --git a/pulsar-zookeeper-utils/pom.xml b/pulsar-zookeeper-utils/pom.xml
index 99da694..dcd06dc 100644
--- a/pulsar-zookeeper-utils/pom.xml
+++ b/pulsar-zookeeper-utils/pom.xml
@@ -122,8 +122,9 @@
         </executions>
       </plugin>
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
+        <groupId>com.github.m50d</groupId>
         <artifactId>aspectj-maven-plugin</artifactId>
+        <version>${aspectj-maven-plugin.version}</version>
         <configuration>
           <complianceLevel>1.8</complianceLevel>
           <source>1.8</source>
diff --git a/pulsar-zookeeper/pom.xml b/pulsar-zookeeper/pom.xml
index 4bab4dd..e2371d8 100644
--- a/pulsar-zookeeper/pom.xml
+++ b/pulsar-zookeeper/pom.xml
@@ -80,9 +80,9 @@
   <build>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
+        <groupId>com.github.m50d</groupId>
         <artifactId>aspectj-maven-plugin</artifactId>
-        <version>1.10</version>
+        <version>${aspectj-maven-plugin.version}</version>
         <configuration>
           <complianceLevel>1.8</complianceLevel>
           <source>1.8</source>