Поиск по этому блогу

четверг, 13 декабря 2012 г.

Проблемная аутентификация с Axis

Недавно возникла потребность создания клиента с аутентификацией для веб сервиса с Axis. При этом если следовать инструкции в самом acis достаточно прописать лишь:
          // If authorization is required
          service.setUsername(name);
          service.setPassword(password);
А при билде получаем Exception
AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode: 
 faultString: (401)Unauthorized
 faultActor: 
 faultNode: 
 faultDetail: 
 
....
(401)Unauthorized
 at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java)

Лечится это довольно просто: так как axis1 использует класс устаревший HTTPSender, в котором и возникает ошибка, то его можно заменить на CommonsHTTPSender. Для этого в проект добавляем commons-httpclient-3.1.jar (именно 3.1,так как другие версии могут не содержать этот класс) и commons-codec.jar. Для этого в классе, который наследует org.apache.axis.client.Service, добавляем метод
 protected org.apache.axis.EngineConfiguration getEngineConfiguration() {
        java.lang.StringBuffer sb = new java.lang.StringBuffer();
        sb.append("\r\n");
        sb.append("\r\n");
        sb.append("\r\n");
        sb.append("\r\n");
        sb.append("\r\n");
        sb.append("\r\n");
        org.apache.axis.configuration.XMLStringProvider config =
                new org.apache.axis.configuration.XMLStringProvider(sb.toString());
        return config;
    }
И вызываем его в конструкторе. С Axis2 таких проблем уже нет. После генерирования stub из WSDL достаточно прописать лишь:
Options options = stub._getServiceClient().getOptions();
          HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
          auth.setPassword(password);
          auth.setUsername(name);
          options.setProperty(HTTPConstants.AUTHENTICATE,auth);

четверг, 6 декабря 2012 г.

Обзор литературы за последнее время

  1. "Экстремальное программирование" Кент Бек
    Отличное руководство для тех, кто хочет перейти на на такую методологию разработки как экстремальное программирование. Рассмотрены условия перехода, основные моменты методологии, сложности и преимущества. Для затравки - основные тезисы экстремального программирования:
    • Игра в планирование(planning game)
    • Небольшие версии(small releases)
    • Метафора(metaphor)
    • Простой дизайн(simple design)
    • Тестирование(testing)
    • Переработка(refactoring)
    • Программирование парами(pair programming)
    • Коллективное владение(collective ownership)
    • Непрерывная интеграция(continuous integration)
    • 40-часовая неделя(40-hour week)
    • Заказчик на месте разработки(on?site customer)
    • Стандарты кодирования(coding standards).
    Из недостатков - в книге не отделены особенности ЭП от других agile методологий.
  2. "Гибкие методологии разработки" Б. Вольфсон
    В книге представлены основные положения всех agile методик, есть выдержки из манифеста о гибкой разработке, также представлены особенности всех известных разновидностей данной методике, где на первое место выходит scrum и экстремальное программирование.
  3. "Экстремальное программирование: разработка через тестирование" Кент Бек
    И снова от Кента Бэка отличная книга о test driven development. Тут четко, послеовательно, шаг за щагом приводят тебя к необходимости тестов в целом и перед началом работы над задачей в частности. Из классики (c)

    TDD заключается в следующем:
    1. Быстро создать новый тест.
    2. Запустить все тесты и обнаружить, что новый тест не выполняется.
    3. Внести небольшие изменения.
    4. Снова запустить все тесты и на этот раз зафиксировать, что все они успешно срабатывают.
    5. Провести рефакторинг (refactoring) для устранения дублирования.

  4. "Паттерны проектирования" Э. Фримен, Э. Фримен, К. Сьерра, Б. Бейтс
    О паттернах сейчас знают все, но, тем не менее, не все их применяют. Наверное, все начинали знакомство с ними по знаменитой книге банды четырех, но сколько потребовалось усилий, чтобы запомнить где нужно применять фасад и что такое паттерн обозреватель?
    Данная книга легко и ненавязчиво, а, главное, на очень доступных примерах объясняет суть большинства самых употребляемых паттернов. Так что до знакомства со справочником от банды четырех рекомендовала бы эту книгу.
  5. "SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) (Certification Press)" Katherine Sierra Книга будет полезна не только, готовящимся к SCJP, но и всем людям которые хотят знать инструмент, повседневно используемый в работе, в совершенстве.
  6. После прочтения некоторых книг хочется выделить авторов-создателей толковой, полезной и легкочитаемой технической литературы. На первом месте, безусловно, для меня Стив Макконел, с его кодом, оценками продуктов, UML. А в этом списке выделились Кэти Сиера и Кент Бек.