Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запуск веб-приложения из Ant, задача exec обгоняет предыдущую :) 
:(
    Опции темы
check
Дата 3.10.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: нет
Всего: 23



Написал Ant-скрипт который делает следующее: компилирует и собирает приложение,  запускает его на сервере,  а затем обращается к нему из браузера,  им же запущенного.
Код

<project default="run" basedir=".">
<taskdef name="start" classname="org.apache.catalina.ant.StartTask" />
<property file="global.properties" />
<path id="servlet-classpath">
 <fileset dir="d:/apache-tomcat-5.5.20/common/lib">
     <include name="*.jar"/>
  </fileset>
  <fileset dir="d:/apache-tomcat-5.5.20/common/endorsed">
     <include name="*.jar"/>
  </fileset>
</path>
<target name="init">
    <property name="src" value="d:/Shach2/src/act" />
    <property name="build" value="d:/Shach2/WEB-INF/classes" />
    <property name="servlet" value="StachAction" />
    <property name="war" value="d:/apache-tomcat-5.5.20/webapps/stach2.war" />
    <property name="webxml" value="d:/Shach2/WEB-INF/web.xml" />
    <property name="lib" value="d:/Shach2/WEB-INF/lib" />
    <property name="web" value="d:/Shach2" />
    <property name="ie.path" value="d:\Program Files\Internet Explorer\iexplore.exe" />
    <property name="ff.path" value="d:\Program Files\Mozilla Firefox\firefox.exe" />
    <property name="start.url" value="http://localhost:8080/stach2/" />
</target>
<target name="prepare" depends="init">
    <delete dir="${build}"/>
    <mkdir dir="${build}"/>
    <delete dir="d:/apache-tomcat-5.5.20/webapps/stach2"/>
    <delete file="d:/apache-tomcat-5.5.20/webapps/stach2.war"/>
</target>
<target name="compile" depends="prepare">
   <javac srcdir="${src}" destdir="${build}">
        <include name="*.java" />
        <classpath refid="servlet-classpath"/>
   </javac>
</target>
<target name="create-war" depends="compile">
    <war
        destfile="${war}"
        webxml="${webxml}">
            <classes dir="${build}"/>
            <lib dir="${lib}"/>
            <fileset dir="${web}"/>
        </war>
</target>
<target name="start-tomcat" depends="create-war">
<start url="${url}" username="${username}" password="${password}" path="/${context-path}"/>
</target>
 <target name="run" depends="start-tomcat">
    <exec executable="${ff.path}">
        <arg line="${start.url}" />
    </exec>
    <exec executable="${ie.path}" >
        <arg line="${start.url}" />
    </exec>  
</target>
</project>

Всё это работает, но есть одна мелкая гадость.   
Цель run(запуск браузера) срабатывает не дожидаясь,  когда отработает create-war.
То есть к моменту запуска браузера war-файл уже создан, но ещё не развёрнут томкатом. Поэтому браузер запустившись выдает 404 ошибку.
Чтобы увидеть требуемый index.jsp нужно подождать секунды три и перезагрузить страницу.
Собственно так стало после того как я добавил цель prepare, которая удаляет папки и war-файл, созданные прошлым запуском анта.
Без неё всё выглядело вообще идеально,  но конечно не было полной уверенности в том, что запускается всегда последняя редакция.

Хотя на самом деле было именно так,  похоже на то, что томкат при разархивировании war-а больше всего времени тратит именно на создание папки.

Но как бы то ни было,  цель prepare нужна,  а потому вопрос: можно ли как-то отследить процесс разархивирования war-а, чтобы браузер запускался только после того как оно закончено?

Вообще,  наверное нельзя, ведь цель run не дожидается не выполнения предыдущей цели, а реакции tomcata. 
Ну тогда может запускать задачу exec по таймауту?
Методом тыка определил,  что атрибут timeout там есть, только не заметил, чтобы exec на него как-то реагировал.



Кстати вот это вот извращение
Код

    <exec executable="${ff.path}">
        <arg line="${start.url}" />
    </exec>
    <exec executable="${ie.path}" >
        <arg line="${start.url}" />
    </exec>  

навело на мысль.    Задачи exec выполняются строго друг за другом - IE запускается только после закрытия FF.
А нельзя ли как-нибудь задачу start,  а может быть и war обернуть в exec?  smile  
PM MAIL   Вверх
LSD
Дата 6.10.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 15
Всего: 538



Напиши  свой JMX bean который будет запускать браузеры когда приложение будет задеплоено.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
check
Дата 6.10.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: нет
Всего: 23



Спасибо, попробую.   Пока читаю про JMX,  думаю в любом случае пригодится.


  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java tools & IDE's | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.