Index: src/java/org/apache/nutch/indexer/solr/SolrUtils.java
===================================================================
--- src/java/org/apache/nutch/indexer/solr/SolrUtils.java	(revision 1501122)
+++ src/java/org/apache/nutch/indexer/solr/SolrUtils.java	(working copy)
@@ -16,14 +16,15 @@
  */
 package org.apache.nutch.indexer.solr;
 
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.params.HttpClientParams;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.params.HttpClientParams;
+import org.apache.http.params.HttpParams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.mapred.JobConf;
-import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
 
 import java.net.MalformedURLException;
 
@@ -31,8 +32,8 @@
 
   public static Logger LOG = LoggerFactory.getLogger(SolrUtils.class);
 
-  public static CommonsHttpSolrServer getCommonsHttpSolrServer(JobConf job) throws MalformedURLException {
-    HttpClient client=new HttpClient();
+  public static HttpSolrServer getHttpSolrServer(JobConf job) throws MalformedURLException {
+    DefaultHttpClient client = new DefaultHttpClient();
 
     // Check for username/password
     if (job.getBoolean(SolrConstants.USE_AUTH, false)) {
@@ -42,15 +43,16 @@
 
       AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME);
 
-      client.getState().setCredentials(scope, new UsernamePasswordCredentials(username, job.get(SolrConstants.PASSWORD)));
+      client.getCredentialsProvider().setCredentials(scope, 
+          new UsernamePasswordCredentials(username, job.get(SolrConstants.PASSWORD)));
 
-      HttpClientParams params = client.getParams();
-      params.setAuthenticationPreemptive(true);
+      HttpParams params = client.getParams();
+      HttpClientParams.setAuthenticating(params, true);
 
       client.setParams(params);
     }
 
-    return new CommonsHttpSolrServer(job.get(SolrConstants.SERVER_URL), client);
+    return new HttpSolrServer(job.get(SolrConstants.SERVER_URL), client);
   }
 
   public static String stripNonCharCodepoints(String input) {
Index: src/java/org/apache/nutch/indexer/solr/SolrDeleteDuplicates.java
===================================================================
--- src/java/org/apache/nutch/indexer/solr/SolrDeleteDuplicates.java	(revision 1501122)
+++ src/java/org/apache/nutch/indexer/solr/SolrDeleteDuplicates.java	(working copy)
@@ -45,7 +45,7 @@
 import org.apache.nutch.util.NutchJob;
 import org.apache.nutch.util.TimingUtil;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
@@ -187,7 +187,7 @@
 
     /** Return each index as a split. */
     public InputSplit[] getSplits(JobConf job, int numSplits) throws IOException {
-      SolrServer solr = SolrUtils.getCommonsHttpSolrServer(job);
+      HttpSolrServer solr = SolrUtils.getHttpSolrServer(job);
 
       final SolrQuery solrQuery = new SolrQuery(SOLR_GET_ALL_QUERY);
       solrQuery.setFields(SolrConstants.ID_FIELD);
@@ -218,7 +218,7 @@
         Reporter reporter)
         throws IOException {
 
-      SolrServer solr = SolrUtils.getCommonsHttpSolrServer(job);
+      HttpSolrServer solr = SolrUtils.getHttpSolrServer(job);
       SolrInputSplit solrSplit = (SolrInputSplit) split;
       final int numDocs = solrSplit.getNumDocs();
       
@@ -279,7 +279,7 @@
 
   private Configuration conf;
 
-  private SolrServer solr;
+  private HttpSolrServer solr;
 
   private boolean noCommit = false;
 
@@ -297,7 +297,7 @@
 
   public void configure(JobConf job) {
     try {
-      solr = SolrUtils.getCommonsHttpSolrServer(job);
+      solr = SolrUtils.getHttpSolrServer(job);
       noCommit = job.getBoolean("noCommit", false);
     } catch (MalformedURLException e) {
       throw new RuntimeException(e);
Index: src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java
===================================================================
--- src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java	(revision 1501122)
+++ src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java	(working copy)
@@ -16,14 +16,16 @@
  */
 package org.apache.nutch.indexwriter.solr;
 
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.params.HttpClientParams;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.params.HttpClientParams;
+import org.apache.http.params.HttpParams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.mapred.JobConf;
-import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
+import org.apache.nutch.indexer.solr.SolrConstants;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
 
 import java.net.MalformedURLException;
 
@@ -31,8 +33,8 @@
 
   public static Logger LOG = LoggerFactory.getLogger(SolrUtils.class);
 
-  public static CommonsHttpSolrServer getCommonsHttpSolrServer(JobConf job) throws MalformedURLException {
-    HttpClient client=new HttpClient();
+  public static HttpSolrServer getHttpSolrServer(JobConf job) throws MalformedURLException {
+    DefaultHttpClient client = new DefaultHttpClient();
 
     // Check for username/password
     if (job.getBoolean(SolrConstants.USE_AUTH, false)) {
@@ -42,17 +44,18 @@
 
       AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME);
 
-      client.getState().setCredentials(scope, new UsernamePasswordCredentials(username, job.get(SolrConstants.PASSWORD)));
+      client.getCredentialsProvider().setCredentials(scope, 
+          new UsernamePasswordCredentials(username, job.get(SolrConstants.PASSWORD)));
 
-      HttpClientParams params = client.getParams();
-      params.setAuthenticationPreemptive(true);
+      HttpParams params = client.getParams();
+      HttpClientParams.setAuthenticating(params, true);
 
       client.setParams(params);
     }
 
     String serverURL = job.get(SolrConstants.SERVER_URL);
     
-    return new CommonsHttpSolrServer(serverURL, client);
+    return new HttpSolrServer(serverURL, client);
   }
 
   public static String stripNonCharCodepoints(String input) {
Index: src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrIndexWriter.java
===================================================================
--- src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrIndexWriter.java	(revision 1501122)
+++ src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrIndexWriter.java	(working copy)
@@ -28,7 +28,7 @@
 import org.apache.nutch.indexer.IndexerMapReduce;
 import org.apache.nutch.indexer.NutchDocument;
 import org.apache.nutch.indexer.NutchField;
-import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.SolrInputDocument;
@@ -42,7 +42,7 @@
     public static final Logger LOG = LoggerFactory
             .getLogger(SolrIndexWriter.class);
 
-    private SolrServer solr;
+    private HttpSolrServer solr;
     private SolrMappingReader solrMapping;
     private ModifiableSolrParams params;
 
@@ -55,12 +55,12 @@
     private boolean delete = false;
 
     public void open(JobConf job, String name) throws IOException {
-        SolrServer server = SolrUtils.getCommonsHttpSolrServer(job);
+    	HttpSolrServer server = SolrUtils.getHttpSolrServer(job);
         init(server, job);
     }
 
     // package protected for tests
-    void init(SolrServer server, JobConf job) throws IOException {
+    void init(HttpSolrServer server, JobConf job) throws IOException {
         solr = server;
         batchSize = job.getInt(SolrConstants.COMMIT_SIZE, 1000);
         solrMapping = SolrMappingReader.getInstance(job);
Index: src/plugin/indexer-solr/plugin.xml
===================================================================
--- src/plugin/indexer-solr/plugin.xml	(revision 1501122)
+++ src/plugin/indexer-solr/plugin.xml	(working copy)
@@ -25,16 +25,16 @@
 
      <library name="activation-1.1.jar"/>
      <library name="commons-codec-1.4.jar"/>
-     <library name="commons-httpclient-3.1.jar"/>
+     <library name="httpclient-4.2.5.jar"/>
      <library name="commons-io-1.4.jar"/>
      <library name="commons-logging-1.1.1.jar"/>
      <library name="geronimo-stax-api_1.0_spec-1.0.1.jar"/>
      <library name="jline-0.9.1.jar"/>
      <library name="log4j-1.2.15.jar"/>
-     <library name="lucene-core-3.4.0.jar"/>
+     <library name="lucene-core-4.3.1.jar"/>
      <library name="mail-1.4.1.jar"/>
      <library name="slf4j-api-1.6.1.jar"/>
-     <library name="solr-solrj-3.4.0.jar"/>
+     <library name="solr-solrj-4.3.1.jar"/>
      <library name="stax-api-1.0.1.jar"/>
      <library name="wstx-asl-3.2.7.jar"/>
      <library name="zookeeper-3.3.1.jar"/>
Index: src/plugin/indexer-solr/ivy.xml
===================================================================
--- src/plugin/indexer-solr/ivy.xml	(revision 1501122)
+++ src/plugin/indexer-solr/ivy.xml	(working copy)
@@ -36,8 +36,10 @@
   </publications>
 
   <dependencies>
-   <dependency org="org.apache.solr" name="solr-solrj" rev="3.4.0"
-		conf="*->default"/>
+    <dependency org="org.apache.solr" name="solr-solrj" rev="4.3.1"
+      conf="*->default"/>
+    <dependency org="org.apache.httpcomponents" name="httpclient" 
+      rev="4.2.5"  conf="*->default"/>
   </dependencies>
   
 </ivy-module>
