InternalHttpClient не может быть преобразован в HttpClient.

Я создал заглушку клиента axis2 с помощью команды WSDL2Java и пытаюсь вызвать стороннюю веб-службу. Я вижу эту ошибку в консоли:

      java.lang.ClassCastException: class org.apache.http.impl.client.InternalHttpClient cannot be cast to class org.apache.commons.httpclient.HttpClient (org.apache.http.impl.client.InternalHttpClient and org.apache.commons.httpclient.HttpClient are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @674c583e)
        at org.apache.axis2.transport.http.AbstractHTTPSender.getHttpClient(AbstractHTTPSender.java:529)
        at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:157)
        at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)

Мы устанавливаем свойство CACHED_HTTP_CLIENT следующим образом (поместите обе строки):

           MyStub stub = new MyStub() ; 

        stub._getServiceClient().getOptions().setProperty(HTTPConstants.CACHED_HTTP_CLIENT, customHttpClient);
            stub._getServiceClient().getServiceContext()
                    .setProperty(HTTPConstants.CACHED_HTTP_CLIENT, customHttpClient);

Но почему-то AbstractHttpSender.getHttpClient не может получить наш HttpCLient. Это строка в классе AbstractHttpSender, где создается исключение ClassCastException:

        HttpClient httpClient = (HttpClient) msgContext.getProperty(
                HTTPConstants.CACHED_HTTP_CLIENT);

Нужно ли мне передавать что-нибудь в конструктор MyStub(), чтобы убедиться, что HttpClient установлен правильно в MessageContext?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Я вижу проблему. HttpClient выше — это org.apache.commons.httpclient.HttpClient, а не org.apache.http.client.HttpClient (как я думал ранее). Как мне теперь это решить? Есть ли способ, чтобы заглушка клиента axis2 не обращалась к AbstractHttpSender и не переходила к классу, который использует org.apache.http.client.HttpClient?

0 ответов

Другие вопросы по тегам