четверг, 29 ноября 2012 г.

Загрузка ресурсов из WEB-INF/lib/jar-ов


Проблема

    При попытке доступа к ресурсу из каталога веб-приложения WEB-INF/lib (а именно к jar-библиотеке), по URL полученному из ServletContext-а не получается создать объект класса JarFile. На данный момент проверено под Tomcat 7.x (позже проверю под OAS и WLS)

Решение

    Для того, чтобы ресурс мог потом быть доступен через JarFile (например для чтения описания readme.txt из файла внутри jar-а), необходимо использовать хак :

  1. Добавить к строке, полученного url-а ресурса "jar:" впереди и "!\" позади. 
  2. Использовать url.openConnection()

Пример


// получить список ресурсов в WEB-INF/lib
Set<String> jarLibPaths = servletContext.getResourcePaths("/WEB-INF/lib");

for (String jarPath : jarLibPaths) {

  // так будет неправильное преобразование типа ClassCastException, т.к. открытое соединение не JarURLConnection
//  URL urlBad = servletContext.getResource(jarPath);  
//  JarURLConnection conn = (JarURLConnection) urlBad.openConnection();

  // так будет FileNotFoundException
//   URL urlBad2 = servletContext.getResource(jarPath);  
//   JarFile jarFile = new JarFile(urlBad2.getFile());
//   JarFile jarFile = new JarFile(urlBad2.toString()); // та же проблема

//  URL urlBad3 = new URL("jar:" + servletContext.getResource(jarPath).toString() + "!/");  
//  JarFile jarFile = new JarFile(urlBad3.getFile());   // снова ошибка

  
  // а так всё будет работать
  URL urlOk = 
      new URL("jar:" + servletContext.getResource(jarPath).toString() + "!/");  
  JarURLConnection conn = (JarURLConnection) urlOk.openConnection();
  JarFile jarFile = conn.getJarFile();
}

четверг, 22 ноября 2012 г.

Управление временем. Конспект.


  • Начало

  • Инструменты : бумага, ручка, потом ежедневник, outlook(?)

  • Сгрести все задачи в одно место - общий список

  • Принять факт, что нельзя делать 5 задачь одновременно !!! Только одну

  • Расстановка приоритетов: всего два парметра срочность и важность : приоритет = срочность + важность (в процессе происходит переприоритезация)

  • Группы по времени

  • Месяц (планируем 1 раз в месяц)
  • Неделя (планируем 1 раз в неделю)
  • День (утром) - СЕГОДНЯ

  • Планирование : Выбор из общего списка задач на день

  • "жёсткие" : обязательно к определённому времени (разговор с директором)
  • "мягкие" : надо, но не очень срочно
  • список "кайросов" - очередь задач, которые требуют творческого подхода, т.е. если вдруг "попёрло", то надо знать, что именно делать в первую очередь (должен быть список таких задач)

  • Планирование дня
мягкое, т.е. оставлять "зазоры" времени между задачами. на всякие непредвиденные (но как показывает практика ВСЕГДА случающиеся внезапные звонки, разговоры и т.п.)

  • Классификация задач

  • "слон" : большая - не укладывается в 1 день, не укладывается в голове 

  • декомпозировать

  • начинать с понятного

  • "лягушка" : неприятная, делать не хочется

  • составить список таких задач
  • каждый день по одной

  • "конфета" : то, что делать приятно и хочется

  • оставлять на потом
  • без "лягушек" не есть

  • Качество времени
в момент выполнения задачи, отключить всё отвлекающее - телефон, почту, аську; разговоры, только самые крайние; предупредить об этом окружающих

  • Отдых

  • ритм : 1 час работы/5 минут отдыха
  • переключаться между разноплановыми задачами

  • Дополнительные замечания

  • review в конце недели, по итогом которого составляются цели на следующую неделю
  • 1 раз в неделю Цели --> Задачи
  • Постоянный пересмотр приоритетов

четверг, 8 ноября 2012 г.

Oracle WLS и springframework

Спасибо "суровому челябинскому программисту" за подробное описание как включить и настроить интеграцию SpringFramework и консоли администрирования Oracle WLS.
http://samolisov.blogspot.ru/2012/11/spring-framework-weblogic.html
Существенно может помочь в эксплуатации. Будем пробовать.