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

jzemerick pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/opennlp-sandbox.git


The following commit(s) were added to refs/heads/master by this push:
     new 0e58920  modernizes several components to rely on a more recent 
version of Jersey 2.x instead of ancient 1.x versions (#97)
0e58920 is described below

commit 0e58920d1901a2f4238d98ff37724401aba6d4b4
Author: Martin Wiesner <[email protected]>
AuthorDate: Sun Apr 16 20:57:15 2023 +0200

    modernizes several components to rely on a more recent version of Jersey 
2.x instead of ancient 1.x versions (#97)
    
    - tagging-server
    - corpus-server and its components
    - caseditor-corpus-server-plugin
    - wikinews-importer (Jersey never used/required here)
    - addresses PR reviewer comments
    - optimizes some code towards best practices
---
 caseditor-corpus-server-plugin/pom.xml             |  32 ++++--
 .../caseditor/DefaultCasDocumentProvider.java      |  49 +++++----
 .../caseditor/SearchCorpusServerJob.java           |  42 ++++----
 .../corpus_server/caseditor/TaskQueueView.java     |  25 +++--
 corpus-server/corpus-server-connector/pom.xml      |  43 +++++---
 .../corpus_server/connector/CSCasWriter.java       |  95 +++++++++--------
 .../connector/CSQueueCollectionReader.java         | 116 +++++++++------------
 .../opennlp/corpus_server/connector/UimaUtil.java  |   6 +-
 corpus-server/corpus-server-core/feature.xml       |  23 ++--
 corpus-server/corpus-server-core/pom.xml           |  29 +++++-
 .../opennlp/corpus_server/CorpusServerBundle.java  |   3 +-
 corpus-server/corpus-server-impl/pom.xml           |   6 +-
 corpus-server/corpus-server-tools/pom.xml          |  28 +++--
 .../opennlp/corpus_server/tools/CASImporter.java   |  28 ++---
 .../opennlp/corpus_server/tools/CorpusBackup.java  |  82 +++++++--------
 .../opennlp/corpus_server/tools/CreateCorpus.java  |  63 +++++------
 .../corpus_server/tools/CreateTaskQueue.java       |  33 +++---
 .../opennlp/corpus_server/tools/DropCorpus.java    |  37 +++----
 .../opennlp/corpus_server/tools/FileUtil.java      |   3 +-
 .../opennlp/corpus_server/tools/RemoveCAS.java     |  26 ++---
 .../corpus_server/tools/ReplaceTypeSystem.java     |  51 ++++-----
 .../opennlp/corpus_server/tools/SearchCorpus.java  |  42 ++++----
 corpus-server/pom.xml                              |  87 ++++++++--------
 mahout-addon/pom.xml                               |  50 +++++++++
 pom.xml                                            |  17 ++-
 tagging-server/feature.xml                         |  11 +-
 tagging-server/pom.xml                             |  65 ++++++++----
 .../tagging_server/TaggingServerBundle.java        |   4 +-
 wikinews-importer/pom.xml                          |  15 ---
 29 files changed, 605 insertions(+), 506 deletions(-)

diff --git a/caseditor-corpus-server-plugin/pom.xml 
b/caseditor-corpus-server-plugin/pom.xml
index 1bce6c1..451e0b7 100644
--- a/caseditor-corpus-server-plugin/pom.xml
+++ b/caseditor-corpus-server-plugin/pom.xml
@@ -66,17 +66,29 @@
                </dependency>
 
                <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-json</artifactId>
-                   <version>1.19.4</version>
+                       <groupId>org.glassfish.jersey.core</groupId>
+                       <artifactId>jersey-client</artifactId>
+                       <version>${jersey-client.version}</version>
                </dependency>
 
                <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-client</artifactId>
-                   <version>1.19.4</version>
+                       <groupId>org.glassfish.jersey.media</groupId>
+                       <artifactId>jersey-media-json-jettison</artifactId>
+                       <version>${jersey-server.version}</version>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.codehaus.jettison</groupId>
+                                       <artifactId>jettison</artifactId>
+                               </exclusion>
+                       </exclusions>
                </dependency>
-               
+
+               <dependency>
+                       <groupId>org.codehaus.jettison</groupId>
+                       <artifactId>jettison</artifactId>
+                       <version>${jettison.version}</version>
+               </dependency>
+
                <!-- UIMA dependencies -->
                <!-- don't depend on the runtime plugin, instead, depend on the 
parts needed -->
                <dependency>
@@ -223,8 +235,7 @@
                                                                        
org.eclipse.ui,
                                                                        
org.eclipse.ui.workbench,
                                                                        
org.eclipse.core.runtime,
-                                                                       
org.eclipse.core.resources,
-                                                                       
org.junit4;bundle-version="4.13.2";resolution:=optional
+                                                                       
org.eclipse.core.resources
                                                                
</Require-Bundle>
                                                                <Import-Package>
                                                                        
!org.eclipse.jface.text,
@@ -238,7 +249,8 @@
                                                                        
!org.eclipse.ui.model,
                                                                        
!org.eclipse.ui.part,
                                                                        
!org.eclipse.core.runtime,
-                                                                       
com.sun.jersey.api.client.config,
+                                                                       
org.codehaus.jettison,
+                                                                       
org.glassfish.jersey.client.config,
                                                                        *
                                                                
</Import-Package>
                                                        </instructions>
diff --git 
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
 
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
index aeda502..d7da8bd 100644
--- 
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
+++ 
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
@@ -29,7 +29,12 @@ import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.uima.ResourceSpecifierFactory;
 import org.apache.uima.UIMAFramework;
@@ -60,10 +65,8 @@ import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.preference.PreferenceStore;
 import org.eclipse.swt.widgets.Composite;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientProperties;
+import org.glassfish.jersey.client.ClientResponse;
 
 public class DefaultCasDocumentProvider extends
         org.apache.uima.caseditor.editor.CasDocumentProvider {
@@ -127,23 +130,22 @@ public class DefaultCasDocumentProvider extends
       //       the user if downloading the CAS fails?
       
       CorpusServerCasEditorInput casInput = (CorpusServerCasEditorInput) 
element;
-      
-      Client client = Client.create();
-      client.setReadTimeout(READ_TIMEOUT);
-      WebResource webResource = client.resource(casInput.getServerUrl());
-      
+
+      Client c = ClientBuilder.newClient();
+      c.property(ClientProperties.READ_TIMEOUT, READ_TIMEOUT);
+      WebTarget webResource = c.target(casInput.getServerUrl());
+
       // Note: The type system could be cached to avoid downloading it
       //       for every opened CAS, a time stamp can be used to detect
       //       if it has been changed or not.
       
       ClientResponse tsResponse = webResource.path("_typesystem")
-              .accept(MediaType.TEXT_XML)
-              // TODO: How to fix this? Shouldn't accept do it?
+              .request(MediaType.TEXT_XML)
               .header("Content-Type", MediaType.TEXT_XML)
               .get(ClientResponse.class);
       
       TypeSystemDescription tsDesc = null;
-      try (InputStream tsIn = tsResponse.getEntityInputStream()) {
+      try (InputStream tsIn = tsResponse.getEntityStream()) {
         tsDesc = createTypeSystemDescription(tsIn);
       }
       catch (IOException e) {
@@ -159,13 +161,12 @@ public class DefaultCasDocumentProvider extends
       
       ClientResponse casResponse;
       casResponse = webResource.path(URLEncoder.encode(casInput.getName(), 
StandardCharsets.UTF_8))
-          .accept(MediaType.TEXT_XML)
-          // TODO: How to fix this? Shouldn't accept do it?
+          .request(MediaType.TEXT_XML)
           .header("Content-Type", MediaType.TEXT_XML)
           .get(ClientResponse.class);
 
       org.apache.uima.caseditor.editor.ICasDocument doc;
-      try (InputStream casIn = casResponse.getEntityInputStream()) {
+      try (InputStream casIn = casResponse.getEntityStream()) {
         IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
         IPath pluginStatePath = 
CorpusServerPlugin.getDefault().getStateLocation();
         IPath tempPath = 
pluginStatePath.append(casInput.getName()).addFileExtension(MediaType.TEXT_XML);
@@ -200,19 +201,21 @@ public class DefaultCasDocumentProvider extends
         ByteArrayOutputStream outStream = new ByteArrayOutputStream(40000); 
         documentImpl.serialize(outStream);
         
-        Client client = Client.create();
-        client.setReadTimeout(READ_TIMEOUT);
-        WebResource webResource = client.resource(casInput.getServerUrl());
+        Client c = ClientBuilder.newClient();
+        c.property(ClientProperties.READ_TIMEOUT, READ_TIMEOUT);
+        WebTarget webResource = c.target(casInput.getServerUrl());
         
         byte[] xmiBytes = outStream.toByteArray();
         
         String encodedCasId = URLEncoder.encode(casInput.getName(), 
StandardCharsets.UTF_8);
+        String contentDisposition = "attachment; filename=\"" + encodedCasId + 
"\"";
 
-        ClientResponse response = webResource.path(encodedCasId)
-                .accept(MediaType.TEXT_XML)
-                // TODO: How to fix this? Shouldn't accept do it?
-                .header("Content-Type", MediaType.TEXT_XML)
-                .put(ClientResponse.class, xmiBytes);
+        Response response = webResource.path(encodedCasId)
+                .request(MediaType.TEXT_XML)
+                .header("Content-Type", 
MediaType.APPLICATION_OCTET_STREAM_TYPE)
+                .header("Content-Disposition", contentDisposition)
+                .header("Content-Length", xmiBytes.length)
+                .put(Entity.entity(xmiBytes, 
MediaType.APPLICATION_OCTET_STREAM_TYPE));
         
         if (response.getStatus() != 204) {
           throw new CoreException(new Status(Status.ERROR, 
CorpusServerPlugin.PLUGIN_ID,
diff --git 
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
 
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
index 8dda9aa..2ce736d 100644
--- 
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
+++ 
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
@@ -17,7 +17,12 @@
 
 package org.apache.opennlp.corpus_server.caseditor;
 
+import javax.ws.rs.ProcessingException;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.codehaus.jettison.json.JSONArray;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -25,9 +30,7 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientProperties;
 
 /**
  * A job to retrieve search results from the corpus server.
@@ -53,30 +56,25 @@ public class SearchCorpusServerJob extends Job {
   @Override
   protected IStatus run(IProgressMonitor monitor) {
     
-    Client c = Client.create();
-    c.setConnectTimeout(10000);
-    WebResource r = c.resource(serverAddress);
-    
-    ClientResponse response;
-    
+    Client c = ClientBuilder.newClient();
+    c.property(ClientProperties.READ_TIMEOUT, 10000);
+    WebTarget r = c.target(serverAddress);
+
     try {
-      response = r
-          .path("_search")
+      Response response = r.path("_search")
           .queryParam("q", searchQuery)
-          .accept(MediaType.APPLICATION_JSON)
-          .get(ClientResponse.class);
+          .request(MediaType.APPLICATION_JSON)
+          .get();
+      if (response.getStatusInfo().getStatusCode() != 200) {
+        return new Status(IStatus.WARNING, CorpusServerPlugin.PLUGIN_ID, 
"Failed to retrieve results from server!");
+      }
+
+      searchResult = response.readEntity(JSONArray.class);
+      return new Status(IStatus.OK, CorpusServerPlugin.PLUGIN_ID, "OK");
     }
-    catch (com.sun.jersey.api.client.ClientHandlerException e) {
+    catch (ProcessingException e) {
       return new Status(IStatus.WARNING, CorpusServerPlugin.PLUGIN_ID, "Failed 
to connect to server!");
     }
-    
-    if (response.getStatusInfo().getStatusCode() != 200) {
-      return new Status(IStatus.WARNING, CorpusServerPlugin.PLUGIN_ID, "Failed 
to retrieve results from server!");
-    }
-    
-    searchResult = response.getEntity(JSONArray.class);
-    
-    return new Status(IStatus.OK, CorpusServerPlugin.PLUGIN_ID, "OK");
   }
   
   JSONArray getSearchResult() {
diff --git 
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
 
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
index 11ba134..53c8d87 100644
--- 
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
+++ 
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
@@ -20,7 +20,11 @@ package org.apache.opennlp.corpus_server.caseditor;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.viewers.ILabelProviderListener;
@@ -43,10 +47,6 @@ import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.part.ViewPart;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-
 /**
  * A task queue view to retrieve the next annotation task subject from the 
corpus server.
  */
@@ -89,17 +89,16 @@ public class TaskQueueView extends ViewPart {
       @Override
       public void widgetSelected(SelectionEvent event) {
 
-        Client c = Client.create();
-        
-        WebResource queueWebResource = c.resource(serverUrl.getText());
-        
-        ClientResponse response2 = queueWebResource
+        Client c = ClientBuilder.newClient();
+        WebTarget queueWebResource = c.target(serverUrl.getText());
+
+        Response response2 = queueWebResource
             .path("_nextTask")
-            .accept(MediaType.APPLICATION_JSON)
+            .request(MediaType.APPLICATION_JSON)
             .header("Content-Type", MediaType.TEXT_XML)
-            .get(ClientResponse.class);
-        
-        String casId = response2.getEntity(String.class);
+            .get();
+
+        String casId = response2.readEntity(String.class);
         
         // How to get the corpus uri for the item returned from the queue ???
         // Queue could always return full URI ...
diff --git a/corpus-server/corpus-server-connector/pom.xml 
b/corpus-server/corpus-server-connector/pom.xml
index e427162..e4e7c81 100644
--- a/corpus-server/corpus-server-connector/pom.xml
+++ b/corpus-server/corpus-server-connector/pom.xml
@@ -34,27 +34,29 @@
 
        <dependencies>
                <dependency>
-                       <groupId>org.apache.opennlp</groupId>
-                       <artifactId>corpus-server-core</artifactId>
-                       <version>2.1.1-SNAPSHOT</version>
-                       <scope>provided</scope>
+                       <groupId>org.glassfish.jersey.core</groupId>
+                       <artifactId>jersey-client</artifactId>
                </dependency>
-               
+
                <dependency>
-                       <groupId>org.apache.opennlp</groupId>
-                       <artifactId>corpus-server-impl</artifactId>
-                       <version>2.1.1-SNAPSHOT</version>
-                       <scope>test</scope>
+                       <groupId>org.glassfish.jersey.media</groupId>
+                       <artifactId>jersey-media-json-jackson</artifactId>
                </dependency>
 
                <dependency>
-                       <groupId>com.sun.jersey</groupId>
-                       <artifactId>jersey-json</artifactId>
+                       <groupId>org.glassfish.jersey.media</groupId>
+                       <artifactId>jersey-media-json-jettison</artifactId>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.codehaus.jettison</groupId>
+                                       <artifactId>jettison</artifactId>
+                               </exclusion>
+                       </exclusions>
                </dependency>
 
                <dependency>
-                       <groupId>com.sun.jersey</groupId>
-                       <artifactId>jersey-client</artifactId>
+                       <groupId>org.codehaus.jettison</groupId>
+                       <artifactId>jettison</artifactId>
                </dependency>
 
        <dependency>
@@ -64,6 +66,21 @@
                        <scope>compile</scope>
                </dependency>
 
+               <!-- TEST scoped -->
+               <dependency>
+                       <groupId>org.apache.opennlp</groupId>
+                       <artifactId>corpus-server-core</artifactId>
+                       <version>2.1.1-SNAPSHOT</version>
+                       <scope>test</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.apache.opennlp</groupId>
+                       <artifactId>corpus-server-impl</artifactId>
+                       <version>2.1.1-SNAPSHOT</version>
+                       <scope>test</scope>
+               </dependency>
+               
                <dependency>
                        <groupId>org.junit.jupiter</groupId>
                        <artifactId>junit-jupiter-api</artifactId>
diff --git 
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
 
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
index c7a93f3..31f7741 100644
--- 
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
+++ 
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
@@ -18,8 +18,15 @@
 package org.apache.opennlp.corpus_server.connector;
 
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.uima.UimaContext;
 import org.apache.uima.analysis_component.CasAnnotator_ImplBase;
@@ -36,11 +43,6 @@ import org.apache.uima.util.Level;
 import org.apache.uima.util.Logger;
 import org.xml.sax.SAXException;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.WebResource.Builder;
-
 /**
  * The CSCasWriter writes a CAS into a Corpus Server.
  */
@@ -57,8 +59,7 @@ public class CSCasWriter extends CasAnnotator_ImplBase {
   private Logger logger;
 
   @Override
-  public void initialize(UimaContext context)
-      throws ResourceInitializationException {
+  public void initialize(UimaContext context) throws 
ResourceInitializationException {
     super.initialize(context);
 
     serverAddress = (String) 
context.getConfigParameterValue(CSQueueCollectionReader.SERVER_ADDRESS);
@@ -68,8 +69,7 @@ public class CSCasWriter extends CasAnnotator_ImplBase {
   }
 
   @Override
-  public void typeSystemInit(TypeSystem ts)
-      throws AnalysisEngineProcessException {
+  public void typeSystemInit(TypeSystem ts) throws 
AnalysisEngineProcessException {
     super.typeSystemInit(ts);
 
     String idTypeName = (String) 
getContext().getConfigParameterValue("IdFSTypeName");
@@ -91,48 +91,53 @@ public class CSCasWriter extends CasAnnotator_ImplBase {
       // TODO: Remove the FS here, so its client side only!
       // Was inserted in the reader ...
       cas.removeFsFromIndexes(idFs);
-      
-      ByteArrayOutputStream xmiBytes = new ByteArrayOutputStream();
-      try {
-        XmiCasSerializer.serialize(cas, xmiBytes);
-      } catch (SAXException e) {
-        throw new AnalysisEngineProcessException();
-      }
-      
-      Client client = Client.create();
-      
-      WebResource corpusWebResource = client.resource(serverAddress + 
"/corpora/"
-          + corpusName);
-      
-      Builder casResponseBuilder = corpusWebResource.path(casId)
-          .accept(MediaType.TEXT_XML).header("Content-Type", 
MediaType.TEXT_XML);
-      
-      ClientResponse response;
-      if ("add".equals(action)) {
-        response = casResponseBuilder.post(ClientResponse.class, xmiBytes);
-      }
-      else if ("update".equals(action)) {
-        response = casResponseBuilder.put(ClientResponse.class, xmiBytes);
-      }
-      else {
-        throw new AnalysisEngineProcessException(new Exception("Unknown 
action: " + action));
-      }
-      
-      int statusCode = response.getStatus();
-      
-      if (statusCode > 400) {
-        if (logger.isLoggable(Level.SEVERE)) {
-          logger.log(Level.SEVERE, "Error (" + statusCode + "), " + action + 
", " + casId);
+      try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+        XmiCasSerializer.serialize(cas, baos);
+
+        byte[] xmiBytes = baos.toByteArray();
+
+        Client c = ClientBuilder.newClient();
+        WebTarget r = c.target(serverAddress + "/corpora/" + corpusName);
+
+        Invocation.Builder casResponseBuilder = r.path(casId)
+                .request(MediaType.TEXT_XML)
+                .header("Content-Type", MediaType.TEXT_XML)
+                .header("Content-Length", xmiBytes.length);
+
+        if ("add".equals(action)) {
+          try (Response res = casResponseBuilder.post(
+                  Entity.entity(xmiBytes, 
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
+            logResponse(res, casId);
+          }
+        } else if ("update".equals(action)) {
+          try (Response res = casResponseBuilder.put(
+                  Entity.entity(xmiBytes, 
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
+            logResponse(res, casId);
+          }
         }
-      }
-      else {
-        if (logger.isLoggable(Level.FINE)) {
-          logger.log(Level.FINE, "OK (" + statusCode + "),  " + action + ", " 
+ casId);
+        else {
+          throw new AnalysisEngineProcessException(new Exception("Unknown 
action: " + action));
         }
+
+      } catch (IOException | SAXException e) {
+        throw new AnalysisEngineProcessException();
       }
     }
     else {
       throw new AnalysisEngineProcessException(new Exception("Missing Id 
Feature Structure!"));
     }
   }
+
+  private void logResponse(Response res, String casId) {
+    int statusCode = res.getStatus();
+    if (statusCode >= Response.Status.BAD_REQUEST.getStatusCode()) {
+      if (logger.isLoggable(Level.SEVERE)) {
+        logger.log(Level.SEVERE, "Error (" + statusCode + "), " + action + ", 
" + casId);
+      }
+    } else {
+      if (logger.isLoggable(Level.FINE)) {
+        logger.log(Level.FINE, "OK (" + statusCode + "),  " + action + ", " + 
casId);
+      }
+    }
+  }
 }
diff --git 
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
 
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
index ab6ef0c..f933ff8 100644
--- 
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
+++ 
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
@@ -23,7 +23,12 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.Feature;
@@ -36,14 +41,11 @@ import 
org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.util.Level;
 import org.apache.uima.util.Logger;
 import org.apache.uima.util.Progress;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientResponse;
 
 /**
- * a {@link org.apache.uima.collection.CollectionReader} which reads {@link 
CAS}s from a corpus
- * in the {@link org.apache.opennlp.corpus_server.CorpusServer}
+ * A {@link org.apache.uima.collection.CollectionReader} which reads {@link 
CAS CASes} from a corpus
+ * stored in a {@code CorpusServer}.
  */
 public class CSQueueCollectionReader extends CollectionReader_ImplBase {
 
@@ -79,70 +81,62 @@ public class CSQueueCollectionReader extends 
CollectionReader_ImplBase {
     corpusName = (String) getConfigParameterValue(CORPUS_NAME);
     
     String queueName = (String) getConfigParameterValue(QUEUE_NAME);
-    
     String searchQuery = (String) getConfigParameterValue(SEARCH_QUERY);
     
-    Client client = Client.create();
-    
+    Client c = ClientBuilder.newClient();
+
     // Create a queue if the search query is specified
     if (searchQuery != null) {
-      WebResource r = client.resource(serverAddress + "/queues/");
+      WebTarget r = c.target(serverAddress + "/queues/");
 
-      ClientResponse response = r.path("_createTaskQueue")
+      try (Response response = r.path("_createTaskQueue")
           .queryParam("corpusId", corpusName)
           .queryParam("queueId", queueName)
           .queryParam("q", searchQuery)
-          .accept(MediaType.TEXT_XML)
-          // TODO: How to fix this? Shouldn't accept do it?
-          .header("Content-Type", MediaType.TEXT_XML)
-          .post(ClientResponse.class);
-      
-      if (response.getStatus() != 204) {
-         throw new ResourceInitializationException(
-                         new Exception("Failed to create queue: " + 
response.getStatus()));
-      }
-      
-      if (logger.isLoggable(Level.INFO)) {
-        logger.log(Level.INFO, "Successfully created queue: " + queueName + " 
for corpus: " + corpusName);
+          .request(MediaType.TEXT_XML)
+          // as this is an query-param driven POST request,
+          // we just set an empty string to the body.
+          .post(Entity.entity("", MediaType.TEXT_PLAIN_TYPE))) {
+
+        if (response.getStatus() != 
Response.Status.NO_CONTENT.getStatusCode()) {
+          throw new ResourceInitializationException(
+                  new RuntimeException("Failed to create queue: " + 
response.getStatus()));
+        }
+
+        if (logger.isLoggable(Level.INFO)) {
+          logger.log(Level.INFO, "Successfully created queue: " + queueName + 
" for corpus: " + corpusName);
+        }
       }
     }
     
     // Retrieve queue link ...
     
     List<String> casIdList = new ArrayList<>();
-    
-    
-    WebResource r = client.resource(serverAddress +  "/queues/" + queueName);
-    
+    WebTarget r = c.target(serverAddress + "/queues/" + queueName);
+
     while (true) {
       System.out.println("Requesting next CAS ID!");
-       
+
       // TODO: Make query configurable ...
-      ClientResponse response = r
-              .path("_nextTask")
-              .accept(MediaType.APPLICATION_JSON)
-              .header("Content-Type", MediaType.TEXT_XML)
-              .get(ClientResponse.class);
-      
-      if (response.getStatus() == 
ClientResponse.Status.NO_CONTENT.getStatusCode()) {
-        System.out.println("##### FINISHED #####");
-        break;
-      }
-      else {
-      // TODO: Check if response was ok ...
+      try (Response response = 
r.path("_nextTask").request(MediaType.APPLICATION_JSON)
+              .header("Content-Type", MediaType.TEXT_XML).get()) {
+
+        if (response.getStatus() == Response.Status.OK.getStatusCode()) {
+            String casId = response.readEntity(String.class);
+            System.out.println("Received CAS ID: " + casId);
+            casIdList.add(casId);
+        } else if (response.getStatus() == 
Response.Status.NO_CONTENT.getStatusCode()) {
+          System.out.println("##### FINISHED #####");
+          break;
+        }
       }
-      String casId = response.getEntity(String.class);
-      casIdList.add(casId);
-      
-      System.out.println("Received CAS ID: " + casId);
     }
     
     casIds = casIdList.iterator();
   }
   
   @Override
-  public void typeSystemInit(TypeSystem ts)
-      throws ResourceInitializationException {
+  public void typeSystemInit(TypeSystem ts) throws 
ResourceInitializationException {
     super.typeSystemInit(ts);
     
     String idTypeName = (String) getConfigParameterValue("IdFSTypeName");
@@ -153,31 +147,24 @@ public class CSQueueCollectionReader extends 
CollectionReader_ImplBase {
   
   @Override
   public void getNext(CAS cas) throws IOException, CollectionException {
-         
+
     String casId = casIds.next();
-       
-    
-    Client client = Client.create();
-    
-    WebResource corpusWebResource = client.resource(serverAddress + 
"/corpora/" + corpusName);
-    
-    ClientResponse casResponse = corpusWebResource
-        .path(casId)
-        .accept(MediaType.TEXT_XML)
+
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(serverAddress + "/corpora/" + corpusName);
+
+    ClientResponse casResponse = r.path(casId)
+        .request(MediaType.TEXT_XML)
         .header("Content-Type", MediaType.TEXT_XML)
         .get(ClientResponse.class);
-    
 
-    try (InputStream casIn = casResponse.getEntityInputStream()) {
+    try (InputStream casIn = casResponse.getEntityStream()) {
       UimaUtil.deserializeXmiCAS(cas, casIn);
-    }
-    catch (IOException e) {
-      if (logger.isLoggable(Level.SEVERE)) {
-        logger.log(Level.SEVERE, "Failed to load CAS: " +  casId + " code: " + 
casResponse.getStatus());
-      }
+    } catch (IOException e) {
+      logger.log(Level.SEVERE,"Failed to load CAS: " +  casId + " code: " + 
casResponse.getStatus());
       throw e;
     }
-    
+
     if (idType != null && idFeature != null) {
       FeatureStructure idFS = cas.createFS(idType);
       idFS.setStringValue(idFeature, casId);
@@ -189,7 +176,6 @@ public class CSQueueCollectionReader extends 
CollectionReader_ImplBase {
   public boolean hasNext() throws IOException, CollectionException {
     
     // TODO: What to do if content for cas cannot be loaded? Skip CAS? Report 
error?
-    
     return casIds.hasNext();
   }
 
diff --git 
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
 
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
index b606fd9..6ce2f43 100644
--- 
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
+++ 
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
@@ -67,8 +67,7 @@ public class UimaUtil {
   }
 
   public static CAS createEmptyCAS(TypeSystemDescription typeSystem) {
-    ResourceSpecifierFactory resourceSpecifierFactory = UIMAFramework
-        .getResourceSpecifierFactory();
+    ResourceSpecifierFactory resourceSpecifierFactory = 
UIMAFramework.getResourceSpecifierFactory();
     TypePriorities typePriorities = resourceSpecifierFactory
         .createTypePriorities();
 
@@ -105,8 +104,7 @@ public class UimaUtil {
       throw new IllegalStateException("SAX error while creating parser!", e);
     }
 
-    XmiCasDeserializer dezerializer = new XmiCasDeserializer(
-        cas.getTypeSystem());
+    XmiCasDeserializer dezerializer = new 
XmiCasDeserializer(cas.getTypeSystem());
 
     try {
       saxParser.parse(xmiIn, dezerializer.getXmiCasHandler(cas));
diff --git a/corpus-server/corpus-server-core/feature.xml 
b/corpus-server/corpus-server-core/feature.xml
index a7804ab..8df9ba6 100644
--- a/corpus-server/corpus-server-core/feature.xml
+++ b/corpus-server/corpus-server-core/feature.xml
@@ -22,17 +22,18 @@
 <features>
        <!-- This feature.xml should be automatically be generated, all 
dependencies are duplicated here! -->
     <feature name="opennlp-corpus-server" version="2.1.1.SNAPSHOT">
-        
<bundle>http://repo1.maven.org/maven2/org/ops4j/pax/web/pax-web-jetty-bundle/0.7.1/pax-web-jetty-bundle-0.7.1.jar</bundle>
-        
<bundle>http://repo2.maven.org/maven2/org/ops4j/pax/web/pax-web-extender-war/0.7.1/pax-web-extender-war-0.7.1.jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-core&amp;v=1.12&amp;e=jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-server&amp;v=1.12&amp;e=jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-servlet&amp;v=1.12&amp;e=jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-json&amp;v=1.12&amp;e=jar</bundle>
-        
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar</bundle>
-        
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar</bundle>
-        
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar</bundle>
-        
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar</bundle>
-        
<bundle>http://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.3.1/jettison-1.3.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/ops4j/pax/web/pax-web-jetty-bundle/0.7.1/pax-web-jetty-bundle-0.7.1.jar</bundle>
+        
<bundle>https://repo2.maven.org/maven2/org/ops4j/pax/web/pax-web-extender-war/0.7.1/pax-web-extender-war-0.7.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common/2.39.1/jersey-common-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-server/2.39.1/jersey-server-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet/2.39.1/jersey-container-servlet-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core/2.39.1/jersey-container-servlet-core-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client/2.39.1/jersey-client-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.5.4/jettison-1.5.4.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar</bundle>
         <bundle>mvn:org.apache.opennlp/corpus-server/2.1.1-SNAPSHOT</bundle>
     </feature>
 </features>
\ No newline at end of file
diff --git a/corpus-server/corpus-server-core/pom.xml 
b/corpus-server/corpus-server-core/pom.xml
index 732ef60..6880c4e 100644
--- a/corpus-server/corpus-server-core/pom.xml
+++ b/corpus-server/corpus-server-core/pom.xml
@@ -49,22 +49,41 @@
     </dependency>
 
     <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-servlet</artifactId>
+      <groupId>org.glassfish.jersey.containers</groupId>
+      <artifactId>jersey-container-servlet</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.glassfish.jersey.media</groupId>
+      <artifactId>jersey-media-json-jackson</artifactId>
+      <scope>provided</scope>
     </dependency>
 
     <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-json</artifactId>
+      <groupId>org.glassfish.jersey.media</groupId>
+      <artifactId>jersey-media-json-jettison</artifactId>
       <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.jettison</groupId>
+          <artifactId>jettison</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
 
     <dependency>
-      <groupId>com.sun.jersey</groupId>
+      <groupId>org.glassfish.jersey.core</groupId>
       <artifactId>jersey-client</artifactId>
       <scope>provided</scope>
     </dependency>
 
+    <dependency>
+      <groupId>org.codehaus.jettison</groupId>
+      <artifactId>jettison</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-api</artifactId>
diff --git 
a/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
 
b/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
index 01fb678..721128a 100644
--- 
a/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
+++ 
b/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
@@ -32,7 +32,7 @@ import org.osgi.service.http.HttpService;
 import org.osgi.service.http.NamespaceException;
 import org.osgi.util.tracker.ServiceTracker;
 
-import com.sun.jersey.spi.container.servlet.ServletContainer;
+import org.glassfish.jersey.servlet.ServletContainer;
 
 public class CorpusServerBundle implements BundleActivator {
 
@@ -105,7 +105,6 @@ public class CorpusServerBundle implements BundleActivator {
          
         Dictionary<String, String> jerseyServletParams = new Hashtable<>();
         jerseyServletParams.put("javax.ws.rs.Application", 
CorpusServerApplication.class.getName());
-        jerseyServletParams.put("com.sun.jersey.api.json.POJOMappingFeature", 
"true");
         
         try {
           httpService.registerServlet("/rest", new ServletContainer(), 
jerseyServletParams, null);
diff --git a/corpus-server/corpus-server-impl/pom.xml 
b/corpus-server/corpus-server-impl/pom.xml
index 5ce9072..53f85e4 100644
--- a/corpus-server/corpus-server-impl/pom.xml
+++ b/corpus-server/corpus-server-impl/pom.xml
@@ -44,15 +44,11 @@
                <dependency>
                                <groupId>org.osgi</groupId>
                                <artifactId>org.osgi.core</artifactId>
-                               <version>4.2.0</version>
-                               <scope>provided</scope>
                </dependency>
 
                <dependency>
                                <groupId>org.osgi</groupId>
                                <artifactId>org.osgi.compendium</artifactId>
-                               <version>4.2.0</version>
-                               <scope>provided</scope>
                </dependency>
 
                <dependency>
@@ -119,7 +115,7 @@
                                                        <instructions>
                                                                
<Embed-Dependency>*;scope=compile;inline=false</Embed-Dependency>
                                                                
<Embed-Transitive>true</Embed-Transitive>
-                                                                       
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                                                                       
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                                                                        
<Import-Package>
                                                                                
!com.sun.jdmk.comm,
                                                                                
!javax.persistence.*,
diff --git a/corpus-server/corpus-server-tools/pom.xml 
b/corpus-server/corpus-server-tools/pom.xml
index 1b96650..f44bc8c 100644
--- a/corpus-server/corpus-server-tools/pom.xml
+++ b/corpus-server/corpus-server-tools/pom.xml
@@ -34,24 +34,34 @@
        <name>Apache OpenNLP Corpus Server Shell</name>
 
        <dependencies>
+
                <dependency>
-                       <groupId>org.apache.opennlp</groupId>
-                       <artifactId>corpus-server-core</artifactId>
-                       <version>2.1.1-SNAPSHOT</version>
-                       <scope>provided</scope>
+                       <groupId>org.glassfish.jersey.core</groupId>
+                       <artifactId>jersey-client</artifactId>
                </dependency>
 
                <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-json</artifactId>
+                       <groupId>org.glassfish.jersey.media</groupId>
+                       <artifactId>jersey-media-json-jackson</artifactId>
                </dependency>
 
                <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-client</artifactId>
+                       <groupId>org.glassfish.jersey.media</groupId>
+                       <artifactId>jersey-media-json-jettison</artifactId>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.codehaus.jettison</groupId>
+                                       <artifactId>jettison</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.codehaus.jettison</groupId>
+                       <artifactId>jettison</artifactId>
                </dependency>
     
-       <dependency>
+               <dependency>
                        <groupId>org.apache.uima</groupId>
                        <artifactId>uimaj-core</artifactId>
                        <version>${uimaj.version}</version>
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
index 796432a..b74bd9b 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
@@ -18,13 +18,13 @@
 package org.apache.opennlp.corpus_server.tools;
 
 import java.io.File;
-import java.io.FilenameFilter;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.core.Response;
 
 public class CASImporter {
 
@@ -35,9 +35,8 @@ public class CASImporter {
       System.exit(-1);
     }
 
-    Client c = Client.create();
-
-    WebResource r = c.resource(args[0]);
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(args[0]);
 
     File xmiFileOrFolder = new File(args[1]);
 
@@ -52,13 +51,14 @@ public class CASImporter {
     for (File xmiFile : xmiFiles) {
       byte[] xmiBytes = FileUtil.fileToBytes(xmiFile);
 
-      ClientResponse response = r.path(xmiFile.getName())
-          .accept(MediaType.TEXT_XML)
-          // TODO: How to fix this? Shouldn't accept do it?
-          .header("Content-Type", MediaType.TEXT_XML)
-          .post(ClientResponse.class, xmiBytes);
+      try (Response response = r.path(xmiFile.getName())
+              .request(MediaType.TEXT_XML)
+              .header("Content-Type", MediaType.TEXT_XML)
+              .header("Content-Length", xmiBytes.length)
+              .put(Entity.entity(xmiBytes, 
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
 
-      System.out.println(xmiFile.getName() + " " + response.getStatus());
+        System.out.println(xmiFile.getName() + " " + response.getStatus());
+      }
     }
   }
 }
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
index 66b7a65..3a9c31c 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
@@ -25,11 +25,14 @@ import java.io.OutputStream;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientResponse;
 
 /** 
  * Tools to back up a corpus from the corpus server into a zip package.
@@ -39,8 +42,7 @@ import com.sun.jersey.api.client.WebResource;
  */
 public class CorpusBackup {
 
-  private static void copyStream(InputStream in,
-      OutputStream out) throws IOException {
+  private static void copyStream(InputStream in, OutputStream out) throws 
IOException {
     
     byte[] buffer = new byte[1024];
     int len;
@@ -59,21 +61,24 @@ public class CorpusBackup {
       System.exit(-1);
     }
 
-    Client c = Client.create();
-
-    WebResource r = c.resource(args[0] + "/queues");
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(args[0] + "/queues");
 
     String corpusId = args[1];
     String backupQueueId = args[1] + "BackupQueue";
     
-    ClientResponse createQueueResponse = r.path("_createTaskQueue")
+    try (Response createQueueResponse = r.path("_createTaskQueue")
         .queryParam("corpusId", args[1])
         .queryParam("queueId", backupQueueId)
         .queryParam("q", "*:*")
-        .accept(MediaType.TEXT_XML)
-        // TODO: How to fix this? Shouldn't accept do it?
+        .request(MediaType.TEXT_XML)
         .header("Content-Type", MediaType.TEXT_XML)
-        .post(ClientResponse.class);
+        // as this is an query-param driven POST request,
+        // we just set an empty string to the body.
+        .post(Entity.entity("", MediaType.TEXT_PLAIN_TYPE))) {
+      
+      System.out.println("Result (_createTaskQueue): " + 
createQueueResponse.getStatus());
+    }
     
     // zip file name ...
     File backupFile = new File(args[2]);
@@ -82,58 +87,53 @@ public class CorpusBackup {
 
     try (OutputStream backupOut = new FileOutputStream(backupFile);
          ZipOutputStream zipPackageOut = new ZipOutputStream(backupOut)){
-    
-      WebResource corpusWebResource = c.resource(args[0] + "/corpora/" + 
corpusId);
-      
-      // fetch ts, does it work like this!?
-      ClientResponse tsResponse = corpusWebResource
-          .path("_typesystem")
-          .accept(MediaType.TEXT_XML)
-          // TODO: How to fix this? Shouldn't accept do it?
+
+      WebTarget corpusWebResource = c.target(args[0] + "/corpora/" + corpusId);
+
+      // fetch ts
+      ClientResponse tsResponse = corpusWebResource.path("_typesystem")
+          .request(MediaType.TEXT_XML)
           .header("Content-Type", MediaType.TEXT_XML)
           .get(ClientResponse.class);
-      
+
       zipPackageOut.putNextEntry(new ZipEntry("TypeSystem.xml"));
-      try (InputStream tsIn = tsResponse.getEntityInputStream()) {
+      try (InputStream tsIn = tsResponse.getEntityStream()) {
         copyStream(tsIn, zipPackageOut);
       }
       zipPackageOut.closeEntry();
-      
+
       // consume task queue
-      WebResource r2 = c.resource(args[0] + "/queues/" + backupQueueId);
-      
+      WebTarget r2 = c.target(args[0] + "/queues/" + backupQueueId);
+
       while (true) {
         // TODO: Make query configurable ...
-        ClientResponse response2 = r2
-                .path("_nextTask")
+        ClientResponse response2 = r2.path("_nextTask")
                 .queryParam("q", args[1])
-                .accept(MediaType.APPLICATION_JSON)
+                .request(MediaType.APPLICATION_JSON)
                 .header("Content-Type", MediaType.TEXT_XML)
                 .get(ClientResponse.class);
-        
-        if (response2.getStatus() == 
ClientResponse.Status.NO_CONTENT.getStatusCode()) {
+
+        if (response2.getStatus() == 
Response.Status.NO_CONTENT.getStatusCode()) {
           System.out.println("##### FINISHED #####");
           break;
         }
-        
+
         // check if response was ok ...
-        
-        String casId = response2.getEntity(String.class);
-        
-        ClientResponse casResponse = corpusWebResource
-            .path(casId)
-            .accept(MediaType.TEXT_XML)
+        String casId = response2.readEntity(String.class);
+
+        ClientResponse casResponse = corpusWebResource.path(casId)
+            .request(MediaType.TEXT_XML)
             .header("Content-Type", MediaType.TEXT_XML)
             .get(ClientResponse.class);
-        
+
         zipPackageOut.putNextEntry(new ZipEntry(casId));
 
-        try (InputStream casIn = casResponse.getEntityInputStream()) {
+        try (InputStream casIn = casResponse.getEntityStream()) {
           copyStream(casIn, zipPackageOut);
         }
-        
+
         zipPackageOut.closeEntry();
-        
+
         System.out.println(casId);
       }
     }
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
index ebcea1d..c2e0795 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
@@ -17,29 +17,29 @@
 
 package org.apache.opennlp.corpus_server.tools;
 
+import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.util.XMLInputSource;
 import org.apache.uima.util.XMLParser;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
-
 /**
  * Command Line Tool to create a new corpus in the corpus server.
  */
 public class CreateCorpus {
+
   public static void main(String[] args) throws Exception {
 
     if (args.length != 4) {
@@ -50,44 +50,37 @@ public class CreateCorpus {
 
     String corpusName = args[1];
 
-    ClientConfig clientConfig = new DefaultClientConfig();
-    clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
-        Boolean.TRUE);
-
-    Client c = Client.create(clientConfig);
-
-    WebResource r = c.resource(args[0]);
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(args[0]);
 
     byte[][] resources = new byte[2][];
 
     // Load and resolve type system before importing it
-    InputStream typeSystemIn = new FileInputStream(new File(args[2]));
+    try (InputStream typeSystemIn = new BufferedInputStream(new 
FileInputStream(args[2]))) {
 
-    XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn,
-        new File(args[2]));
+      XMLParser xmlParser = UIMAFramework.getXMLParser();
+      XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn,new 
File(args[2]));
 
-    XMLParser xmlParser = UIMAFramework.getXMLParser();
+      TypeSystemDescription typeSystemDescriptor =
+              (TypeSystemDescription) xmlParser.parse(xmlTypeSystemSource);
+      typeSystemDescriptor.resolveImports();
 
-    TypeSystemDescription typeSystemDescriptor = (TypeSystemDescription) 
xmlParser
-        .parse(xmlTypeSystemSource);
+      ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
+      typeSystemDescriptor.toXML(typeSystemBytes);
 
-    typeSystemDescriptor.resolveImports();
+      resources[0] = typeSystemBytes.toByteArray();
 
-    ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
-    typeSystemDescriptor.toXML(typeSystemBytes);
+      byte[] indexMappingBytes = FileUtil.fileToBytes(new File(args[3]));
+      resources[1] = indexMappingBytes;
 
-    resources[0] = typeSystemBytes.toByteArray();
+      try (Response response = r.path("_createCorpus")
+              .queryParam("corpusName", corpusName)
+              .request(MediaType.APPLICATION_JSON)
+              .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
+              .post(Entity.entity(resources, 
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
 
-    byte[] indexMappingBytes = FileUtil.fileToBytes(new File(args[3]));
-    resources[1] = indexMappingBytes;
-
-    ClientResponse response = r.path("_createCorpus")
-        .queryParam("corpusName", corpusName)
-        .accept(MediaType.APPLICATION_JSON)
-        // TODO: How to fix this? Shouldn't accept do it?
-        .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
-        .post(ClientResponse.class, resources);
-
-    System.out.println("Result: " + response.getStatus());
+        System.out.println("Result: " + response.getStatus());
+      }
+    }
   }
 }
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
index d459868..d91c5f5 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
@@ -17,11 +17,12 @@
 
 package org.apache.opennlp.corpus_server.tools;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.core.Response;
 
 public class CreateTaskQueue {
   
@@ -33,19 +34,21 @@ public class CreateTaskQueue {
 
     String corpusName = args[1];
 
-    Client c = Client.create();
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(args[0]);
 
-    WebResource r = c.resource(args[0]);
+    try (Response response = r.path("_createTaskQueue")
+            .queryParam("corpusId", corpusName)
+            .queryParam("queueId", args[2])
+            .queryParam("q", args[3])
+            .request(MediaType.TEXT_XML)
+            .header("Content-Type", MediaType.TEXT_XML)
+            // as this is an query-param driven POST request,
+            // we just set an empty string to the body.
+            .post(Entity.entity("", MediaType.TEXT_PLAIN_TYPE))) {
 
-    ClientResponse response = r.path("_createTaskQueue")
-        .queryParam("corpusId", corpusName)
-        .queryParam("queueId", args[2])
-        .queryParam("q", args[3])
-        .accept(MediaType.TEXT_XML)
-        // TODO: How to fix this? Shouldn't accept do it?
-        .header("Content-Type", MediaType.TEXT_XML)
-        .post(ClientResponse.class);
+      System.out.println("Result: " + response.getStatus());
+    }
 
-    System.out.println("Result: " + response.getStatus());
   }
 }
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
index a5b44b6..c4c8335 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
@@ -17,19 +17,18 @@
 
 package org.apache.opennlp.corpus_server.tools;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
+import javax.ws.rs.core.Response;
 
 /**
  * Command Line Tool to drop a corpus in the corpus server.
  */
 public class DropCorpus {
+
   public static void main(String[] args) throws Exception {
 
     if (args.length != 2) {
@@ -39,21 +38,19 @@ public class DropCorpus {
 
     String corpusName = args[1];
 
-    ClientConfig clientConfig = new DefaultClientConfig();
-    clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
-        Boolean.TRUE);
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(args[0]);
 
-    Client c = Client.create(clientConfig);
+    try (Response response = r.path("_dropCorpus")
+            .queryParam("corpusName", corpusName)
+            .request(MediaType.APPLICATION_JSON)
+            .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
+            // as this is an query-param driven POST request,
+            // we just set an empty string to the body.
+            .post(Entity.entity("", MediaType.APPLICATION_JSON))) {
 
-    WebResource r = c.resource(args[0]);
-
-    ClientResponse response = r.path("_dropCorpus")
-        .queryParam("corpusName", corpusName)
-        .accept(MediaType.APPLICATION_JSON)
-        // TODO: How to fix this? Shouldn't accept do it?
-        .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
-        .post(ClientResponse.class);
+      System.out.println("Result: " + response.getStatus());
+    }
 
-    System.out.println("Result: " + response.getStatus());
   }
 }
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
index 8f8a4f4..e768f4d 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
@@ -17,6 +17,7 @@
 
 package org.apache.opennlp.corpus_server.tools;
 
+import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
@@ -28,7 +29,7 @@ public class FileUtil {
   static byte[] fileToBytes(File file) throws IOException {
 
     try (ByteArrayOutputStream fileBytes = new ByteArrayOutputStream((int) 
file.length());
-         InputStream fileIn = new FileInputStream(file)) {
+         InputStream fileIn = new BufferedInputStream(new 
FileInputStream(file))) {
       byte[] buffer = new byte[1024];
       int length;
       while ((length = fileIn.read(buffer)) > 0) {
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
index e1ebc41..e2ec205 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
@@ -17,9 +17,10 @@
 
 package org.apache.opennlp.corpus_server.tools;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
 
 /**
  * Command Line Tool to remove a CAS from a corpus.
@@ -32,16 +33,15 @@ public class RemoveCAS {
       System.out.println("RemoveCAS corpusAddress casId");
       System.exit(-1);
     }
-    
-    Client c = Client.create();
 
-    WebResource r = c.resource(args[0]);
-    
-    ClientResponse response = r
-        .path(args[1])
-        .delete(ClientResponse.class);
-    
-    System.out.println("Result: " + response.getStatus());
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(args[0]);
+
+    try (Response response = r.path(args[1])
+        .request()
+        .delete()) {
+
+      System.out.println("Result: " + response.getStatus());
+    }
   }
-  
 }
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
index a590225..988076d 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
@@ -17,22 +17,24 @@
 
 package org.apache.opennlp.corpus_server.tools;
 
+import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.util.XMLInputSource;
 import org.apache.uima.util.XMLParser;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-
 public class ReplaceTypeSystem {
 
   public static void main(String[] args) throws Exception {
@@ -42,32 +44,31 @@ public class ReplaceTypeSystem {
       System.exit(-1);
     }
     
-    Client c = Client.create();
+    Client c = ClientBuilder.newClient();
+    WebTarget r = c.target(args[0]);
 
-    WebResource r = c.resource(args[0]);
-    
- // Load and resolve type system before importing it
-    InputStream typeSystemIn = new FileInputStream(new File(args[1]));
+    // Load and resolve type system before importing it
+    try (InputStream typeSystemIn = new BufferedInputStream(new 
FileInputStream(args[1]))) {
+      XMLParser xmlParser = UIMAFramework.getXMLParser();
+      XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn, 
new File(args[1]));
 
-    XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn,
-        new File(args[1]));
+      TypeSystemDescription typeSystemDesciptor = (TypeSystemDescription) 
xmlParser
+              .parse(xmlTypeSystemSource);
+      typeSystemDesciptor.resolveImports();
 
-    XMLParser xmlParser = UIMAFramework.getXMLParser();
+      ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
+      typeSystemDesciptor.toXML(typeSystemBytes);
 
-    TypeSystemDescription typeSystemDesciptor = (TypeSystemDescription) 
xmlParser
-        .parse(xmlTypeSystemSource);
+      byte[] bytes = typeSystemBytes.toByteArray();
+      try (Response response = r.path("_replaceTypeSystem")
+              .request(MediaType.TEXT_XML)
+              .header("Content-Type", MediaType.TEXT_XML)
+              .header("Content-Length", bytes.length)
+              .put(Entity.entity(bytes, 
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
 
-    typeSystemDesciptor.resolveImports();
+        System.out.println("Response: " + response.getStatus());
+      }
 
-    ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
-    typeSystemDesciptor.toXML(typeSystemBytes);
-    
-    ClientResponse response = r.path("_replaceTypeSystem")
-        .accept(MediaType.TEXT_XML)
-        // TODO: How to fix this? Shouldn't accept do it?
-        .header("Content-Type", MediaType.TEXT_XML)
-        .put(ClientResponse.class, typeSystemBytes.toByteArray());
-    
-    System.out.println("Response: " + response.getStatus());
+    }
   }
 }
diff --git 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
index 3c70c14..0a549ea 100644
--- 
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
+++ 
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
@@ -17,14 +17,14 @@
 
 package org.apache.opennlp.corpus_server.tools;
 
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.codehaus.jettison.json.JSONArray;
 
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-
 public class SearchCorpus {
 
        public static void main(String[] args) throws Exception {
@@ -33,24 +33,24 @@ public class SearchCorpus {
                        System.out.println("SearchCorpus address query");
                        System.exit(-1);
                }
+
+               Client c = ClientBuilder.newClient();
+               WebTarget r = c.target(args[0]);
                
-               Client c = Client.create();
-               
-               WebResource r = c.resource(args[0]);
-               
-               ClientResponse response = r
-                               .path("_search")
-                               .queryParam("q", args[1])
-                               .accept(MediaType.APPLICATION_JSON)
-                               .header("Content-Type", MediaType.TEXT_XML)
-                               .get(ClientResponse.class);
-               
-               JSONArray searchResult = response.getEntity(JSONArray.class);
-               
-               System.out.println("Status: " + response.getStatus());
-               
-               for (int i = 0; i < searchResult.length(); i++) {
-                       System.out.println("Hit: " + searchResult.getString(i));
+               try (Response response = r.path("_search")
+                                               .queryParam("q", args[1])
+                                               
.request(MediaType.APPLICATION_JSON)
+                                               .header("Content-Type", 
MediaType.TEXT_XML)
+                                               .get()) {
+
+                       JSONArray searchResult = 
response.readEntity(JSONArray.class);
+
+                       System.out.println("Status: " + response.getStatus());
+
+                       for (int i = 0; i < searchResult.length(); i++) {
+                               System.out.println("Hit: " + 
searchResult.getString(i));
+                       }
                }
+
        }
 }
diff --git a/corpus-server/pom.xml b/corpus-server/pom.xml
index a06826a..3626bfd 100644
--- a/corpus-server/pom.xml
+++ b/corpus-server/pom.xml
@@ -47,45 +47,62 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
-            <scope>provided</scope>
-        </dependency>
+        <groupId>javax.servlet</groupId>
+        <artifactId>servlet-api</artifactId>
+        <version>2.5</version>
+        <scope>provided</scope>
+      </dependency>
 
       <dependency>
-          <groupId>org.osgi</groupId>
-          <artifactId>org.osgi.core</artifactId>
-          <version>4.2.0</version>
-          <scope>provided</scope>
+        <groupId>org.glassfish.jersey.containers</groupId>
+        <artifactId>jersey-container-servlet</artifactId>
+        <version>${jersey-server.version}</version>
       </dependency>
 
       <dependency>
-          <groupId>org.osgi</groupId>
-          <artifactId>org.osgi.compendium</artifactId>
-          <version>4.2.0</version>
-          <scope>provided</scope>
+        <groupId>org.glassfish.jersey.core</groupId>
+        <artifactId>jersey-client</artifactId>
+        <version>${jersey-client.version}</version>
       </dependency>
 
       <dependency>
-        <groupId>com.sun.jersey</groupId>
-        <artifactId>jersey-servlet</artifactId>
-        <version>1.19.4</version>
-        <scope>provided</scope>
+        <groupId>org.glassfish.jersey.media</groupId>
+        <artifactId>jersey-media-json-jackson</artifactId>
+        <version>${jersey-server.version}</version>
+        <scope>runtime</scope>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.glassfish.jersey.media</groupId>
+        <artifactId>jersey-media-json-jettison</artifactId>
+        <version>${jersey-server.version}</version>
+        <scope>runtime</scope>
+        <exclusions>
+          <exclusion>
+            <groupId>org.codehaus.jettison</groupId>
+            <artifactId>jettison</artifactId>
+          </exclusion>
+        </exclusions>
       </dependency>
 
       <dependency>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-json</artifactId>
-          <version>1.19.4</version>
-          <scope>provided</scope>
+        <groupId>org.codehaus.jettison</groupId>
+        <artifactId>jettison</artifactId>
+        <version>${jettison.version}</version>
       </dependency>
 
       <dependency>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-client</artifactId>
-          <version>1.19.4</version>
-          <scope>provided</scope>
+        <groupId>org.osgi</groupId>
+        <artifactId>org.osgi.core</artifactId>
+        <version>4.2.0</version>
+        <scope>provided</scope>
+      </dependency>
+
+      <dependency>
+        <groupId>org.osgi</groupId>
+        <artifactId>org.osgi.compendium</artifactId>
+        <version>4.2.0</version>
+        <scope>provided</scope>
       </dependency>
 
     </dependencies>
@@ -105,25 +122,5 @@
         </plugin>
       </plugins>
     </pluginManagement>
-               <plugins>
-
-      <!-- plugin>
-                               <groupId>org.apache.karaf.tooling</groupId>
-                               <artifactId>features-maven-plugin</artifactId>
-                               <version>2.2.4</version>
-                               <executions>
-                                       <execution>
-                                               <id>generate-features-file</id>
-                                               <goals>
-                                                       
<goal>generate-features-file</goal>
-                                               </goals>
-                                               <configuration>
-                                                       
<karafVersion>2.2.4</karafVersion>
-                                               </configuration>
-                                       </execution>
-                               </executions>
-                       </plugin -->
-      
-               </plugins>
        </build>
 </project>
\ No newline at end of file
diff --git a/mahout-addon/pom.xml b/mahout-addon/pom.xml
index fbce241..490b202 100644
--- a/mahout-addon/pom.xml
+++ b/mahout-addon/pom.xml
@@ -42,6 +42,56 @@
                        <groupId>org.apache.mahout</groupId>
                        <artifactId>mahout-core</artifactId>
                        <version>0.9</version>
+                       <exclusions>
+                               <!-- No need for CLI tooling here -->
+                               <exclusion>
+                                       
<groupId>org.apache.mahout.commons</groupId>
+                                       <artifactId>commons-cli</artifactId>
+                               </exclusion>
+                               <!-- exluding as mahout-core brings ancient 
version (CVEs) -->
+                               <exclusion>
+                                       <groupId>com.google</groupId>
+                                       <artifactId>guava</artifactId>
+                               </exclusion>
+                               <!-- exluding as mahout-core brings ancient 
version (CVEs) -->
+                               <exclusion>
+                                       
<groupId>com.thoughtworks.xstream</groupId>
+                                       <artifactId>xstream</artifactId>
+                               </exclusion>
+                               <!-- This is not needed any way and brings in 
ancient jersey -->
+                               <exclusion>
+                                       <groupId>com.sun.jersey</groupId>
+                                       <artifactId>jersey-core</artifactId>
+                               </exclusion>
+                               <exclusion>
+                                       <groupId>com.sun.jersey</groupId>
+                                       <artifactId>jersey-server</artifactId>
+                               </exclusion>
+                               <exclusion>
+                                       <groupId>com.sun.jersey</groupId>
+                                       <artifactId>jersey-json</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+
+               <dependency>
+                       <groupId>com.google.guava</groupId>
+                       <artifactId>guava</artifactId>
+                       <version>31.1-jre</version>
+                       <scope>runtime</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>com.thoughtworks.xstream</groupId>
+                       <artifactId>xstream</artifactId>
+                       <version>1.4.20</version>
+                       <scope>runtime</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>commons-beanutils</groupId>
+                       <artifactId>commons-beanutils</artifactId>
+                       <scope>runtime</scope>
                </dependency>
 
                <dependency>
diff --git a/pom.xml b/pom.xml
index d85500d..98f3906 100644
--- a/pom.xml
+++ b/pom.xml
@@ -121,7 +121,10 @@
         <opennlp.forkCount>1.0C</opennlp.forkCount>
 
         <uimaj.version>3.3.1</uimaj.version>
-
+        <jersey-client.version>2.39.1</jersey-client.version>
+        <jersey-server.version>2.39.1</jersey-server.version>
+        <jettison.version>1.5.4</jettison.version>
+        
         <junit.version>5.9.2</junit.version>
 
         <enforcer.plugin.version>3.0.0-M3</enforcer.plugin.version>
@@ -156,7 +159,7 @@
             <dependency>
                 <groupId>org.apache.commons</groupId>
                 <artifactId>commons-lang3</artifactId>
-                <version>3.4</version>
+                <version>3.12.0</version>
             </dependency>
             <dependency>
                 <groupId>commons-codec</groupId>
@@ -168,17 +171,20 @@
                 <artifactId>commons-logging</artifactId>
                 <version>1.1.1</version>
             </dependency>
-
             <dependency>
                 <groupId>commons-collections</groupId>
                 <artifactId>commons-collections</artifactId>
                 <version>3.2.2</version>
             </dependency>
-
             <dependency>
                 <groupId>org.apache.commons</groupId>
                 <artifactId>commons-math3</artifactId>
-                <version>3.5</version>
+                <version>3.6.1</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-beanutils</groupId>
+                <artifactId>commons-beanutils</artifactId>
+                <version>1.9.4</version>
             </dependency>
 
             <dependency>
@@ -500,6 +506,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-checkstyle-plugin</artifactId>
+                <version>${checkstyle.plugin.version}</version>
             </plugin>
         </plugins>
     </build>
diff --git a/tagging-server/feature.xml b/tagging-server/feature.xml
index 3f2799a..aa7ae67 100644
--- a/tagging-server/feature.xml
+++ b/tagging-server/feature.xml
@@ -24,15 +24,16 @@
         
<bundle>https://repo1.maven.org/maven2/org/apache/opennlp/opennlp-tools/2.1.1/opennlp-tools-2.1.1.jar</bundle>
         
<bundle>https://repo1.maven.org/maven2/org/ops4j/pax/web/pax-web-jetty-bundle/0.7.1/pax-web-jetty-bundle-0.7.1.jar</bundle>
         
<bundle>https://repo2.maven.org/maven2/org/ops4j/pax/web/pax-web-extender-war/0.7.1/pax-web-extender-war-0.7.1.jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-core&amp;v=1.19.4&amp;e=jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-server&amp;v=1.19.4&amp;e=jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-servlet&amp;v=1.19.4&amp;e=jar</bundle>
-        
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-json&amp;v=1.19.4&amp;e=jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common/2.39.1/jersey-common-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-server/2.39.1/jersey-server-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet/2.39.1/jersey-container-servlet-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core/2.39.1/jersey-container-servlet-core-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client/2.39.1/jersey-client-2.39.1.jar</bundle>
+        
<bundle>https://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.5.4/jettison-1.5.4.jar</bundle>
         
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar</bundle>
         
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar</bundle>
         
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar</bundle>
         
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar</bundle>
-        
<bundle>https://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.3.1/jettison-1.3.1.jar</bundle>
         <bundle>mvn:org.apache.opennlp/tagging-server/2.1.1-SNAPSHOT</bundle>
     </feature>
 </features>
\ No newline at end of file
diff --git a/tagging-server/pom.xml b/tagging-server/pom.xml
index fed494d..ed0ad29 100644
--- a/tagging-server/pom.xml
+++ b/tagging-server/pom.xml
@@ -38,7 +38,40 @@
                  <groupId>org.apache.opennlp</groupId>
                  <artifactId>opennlp-tools</artifactId>
                </dependency>
-               
+
+               <dependency>
+                       <groupId>org.glassfish.jersey.containers</groupId>
+                       <artifactId>jersey-container-servlet</artifactId>
+                       <version>${jersey-server.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.glassfish.jersey.media</groupId>
+                       <artifactId>jersey-media-json-jackson</artifactId>
+                       <version>${jersey-server.version}</version>
+                       <scope>runtime</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.glassfish.jersey.media</groupId>
+                       <artifactId>jersey-media-json-jettison</artifactId>
+                       <version>${jersey-server.version}</version>
+                       <scope>runtime</scope>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.codehaus.jettison</groupId>
+                                       <artifactId>jettison</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.codehaus.jettison</groupId>
+                       <artifactId>jettison</artifactId>
+                       <version>${jettison.version}</version>
+                       <scope>runtime</scope>
+               </dependency>
+
                <dependency>
                                <groupId>javax.servlet</groupId>
                                <artifactId>servlet-api</artifactId>
@@ -57,23 +90,12 @@
                                <version>4.2.0</version>
                </dependency>
 
+               <!-- TEST scoped -->
                <dependency>
-                       <groupId>com.sun.jersey</groupId>
-                       <artifactId>jersey-servlet</artifactId>
-                       <version>1.19.4</version>
-               </dependency>
-               
-               <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-json</artifactId>
-                   <version>1.19.4</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-client</artifactId>
-                   <version>1.19.4</version>
-                   <scope>test</scope>
+                       <groupId>org.glassfish.jersey.core</groupId>
+                       <artifactId>jersey-client</artifactId>
+                       <version>${jersey-client.version}</version>
+                       <scope>test</scope>
                </dependency>
 
                <dependency>
@@ -145,12 +167,13 @@
                                                                                
!sun.misc,
                                                                                
javax.servlet,
                                                                                
*,
-                                                                               
com.sun.jersey.json.impl.provider.entity.*,
-                                                                               
com.sun.jersey.json.*,
+                                                                               
org.glassfish.jersey.json.impl.provider.entity.*,
+                                                                               
org.glassfish.jersey.json.*,
                                                                                
org.codehaus.jackson.*,
                                                                                
org.codehaus.jackson.xc,
-                                                                               
com.sun.jersey.api.core,
-                                                                               
com.sun.jersey.spi.container.servlet
+                                                                               
org.glassfish.jersey.spi,
+                                                                               
org.glassfish.jersey.server.spi
+                                                                               
org.glassfish.jersey.servlet.spi
                                                                        
</Import-Package>
                                                                        <!-- 
Import-Package>!com.ibm.jvm,!com.sun.jdmk.comm,!com.sun.net.httpserver,*,com.sun.jersey.api.core,com.sun.jersey.spi.container.servlet</Import-Package-->
                                                                        
<Export-Package>org.apache.opennlp.tagging_server.*</Export-Package>
diff --git 
a/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
 
b/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
index 2fa0007..2b2546a 100644
--- 
a/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
+++ 
b/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
@@ -29,7 +29,7 @@ import org.osgi.service.http.HttpService;
 import org.osgi.service.http.NamespaceException;
 import org.osgi.util.tracker.ServiceTracker;
 
-import com.sun.jersey.spi.container.servlet.ServletContainer;
+import org.glassfish.jersey.servlet.ServletContainer;
 
 public class TaggingServerBundle implements BundleActivator {
 
@@ -52,7 +52,6 @@ public class TaggingServerBundle implements BundleActivator {
          
         Dictionary<String, String> jerseyServletParams = new Hashtable<>();
         jerseyServletParams.put("javax.ws.rs.Application", 
TaggingServerApplication.class.getName());
-        jerseyServletParams.put("com.sun.jersey.api.json.POJOMappingFeature", 
"true");
         
         try {
           httpService.registerServlet("/rest", new ServletContainer(), 
jerseyServletParams, null);
@@ -69,7 +68,6 @@ public class TaggingServerBundle implements BundleActivator {
         if (httpService == service) {
 
           httpService.unregister("/rest");
-
           httpService = null;
         }
         
diff --git a/wikinews-importer/pom.xml b/wikinews-importer/pom.xml
index be59205..3d6f6c1 100644
--- a/wikinews-importer/pom.xml
+++ b/wikinews-importer/pom.xml
@@ -33,22 +33,7 @@
 
        <name>Apache OpenNLP Wikinews Importer</name>
 
-       <properties>
-               <uimaj.version>3.3.1</uimaj.version>
-       </properties>
-
        <dependencies>
-               <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-json</artifactId>
-                   <version>1.19.4</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>com.sun.jersey</groupId>
-                   <artifactId>jersey-client</artifactId>
-                   <version>1.19.4</version>
-               </dependency>
 
            <dependency> 
              <groupId>info.bliki.wiki</groupId> 

Reply via email to