2013-12-03 2 views
3

Я пытаюсь реализовать базовый 1-й болт Storm Topology. У меня есть штурмовой болт, чтобы выполнить HTTP-запрос, используя Apache HttpClient (4.3.1). Но я получаю следующее исключение, когда я его запускаю:HttpClient not Serializable Exception

[main] ERROR org.apache.zookeeper.server.NIOServerCnxn - Thread Thread[main,5,main] died 
java.lang.RuntimeException: java.io.NotSerializableException: org.apache.http.impl.client.InternalHttpClient 
    at backtype.storm.utils.Utils.serialize(Utils.java:56) 
    at backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:89) 
    at app.storm.StormTopology.main(StormTopology.java:26) 
Caused by: java.io.NotSerializableException: org.apache.http.impl.client.InternalHttpClient 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) 
    at backtype.storm.utils.Utils.serialize(Utils.java:52) 
    ... 2 more 

Кто-нибудь еще видел это? Я знаю, что Storm сам использует HTTP Client (4.1.1). Я пытался заменить внутреннюю библиотеку с версией 4.3.1, и я получил другую ошибку:

Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE 
    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52) 
    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56) 
    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46) 
    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:72) 
    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:84) 
    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:59) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112) 
    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:727) 
    at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58) 
    at app.storm.bolts.DataFetcherBolt.<init>(DataFetcherBolt.java:34) 
    at app.storm.StormTopology.main(StormTopology.java:18) 

ответ

6

я получил свой ответ от Google Форума для проекта Бури. Вот ссылка на этот пост:

https://groups.google.com/forum/#!topic/storm-user/vdfamKeR9Lk

Исправление для конкретизации экземпляра HttpClient в способе подготовки класса Bolt.

+0

Спасибо, это было для меня решение! –