Как скомпилировать файл .war для i-jetty (веб-сервер Android)? - PullRequest
2 голосов
/ 14 июня 2011

Я хотел бы знать, если кто-нибудь знает, каковы шаги для успешного ведения военного файла.Я пытался экспортировать как войну на затмении, но безуспешно каждый раз, когда пытался получить доступ к веб-службе, я получал это сообщение: ошибка 503, служба недоступна.

Я даже пытался скомпилировать пример сервлета hello и после загрузкиэто к i-jetty, я получаю ошибку 503, насколько я понимаю, экспортер затмений войны не работает на i-jetty, лучше посмотрев на chat-2.2.war, я тоже заметил некоторые странные файлы, такие как classes.zip наWEB-INF и META-INF - папка maven с некоторой библиотекой ijetty.

Возвращаясь к началу, я хотел бы знать, каковы шаги для получения файла успеха, скомпилированного для i-jetty?

спасибо за ваше время с наилучшими пожеланиями Александр

Ответы [ 4 ]

2 голосов
/ 25 августа 2013

пожалуйста, дайте мне знать, если вы выяснили, как это сделать?(Фактический метод работы)

Я нашел обходной путь, просто взяв файл classes.zip и вручную поместив его в папку jetty / webapps / console / WEB-INF / lib.Это потому, что я подумал, что «Архивирование файла classes.dex», упомянутое в ссылке Ника, не работает, потому что я нигде не смог найти файл classes.zip в приложении.

Так что после его копирования я самсообщение об ошибке 503 исчезло, и веб-приложение было успешно развернуто.Однако я не слишком доволен этим решением, потому что невозможно попросить людей, которые хотят установить мое приложение из PlayStore, зайти на веб-сайт, скачать файл classes.zip и скопировать его в нужную папку.

РЕДАКТИРОВАТЬ:

Хахаха!Не успел я написать этот ответ, который я выяснил, как правильно создать файл classes.zip (развертывание веб-приложения из приложения теперь будет работать!).

Так что в основном, как говорится на официальном сайте i-jettyвам нужно включить 3 вещи в ваш файл pom.xml на сайте https://code.google.com/p/i-jetty/wiki/DownloadableWebapps. Теперь проблема, с которой вы столкнетесь, включив только эти три, заключается в том, что в новых выпусках Android (android-maven-plugin) выстолкнется с проблемами со стороны.Поэтому вам нужно добавить следующее, чтобы включить правильное выполнение (добавьте его ПОСЛЕ закрытия элемента plugins и ДО закрытия элемента build (<./ plugin> ADD IT HERE <./ build>, без точек):

<pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <versionRange>[2.0,)</versionRange>
                    <goals>
                      <goal>copy-dependencies</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
</pluginManagement>

Теперь, когда вы запустите сборку maven, вы сгенерируете нужный вам файл your_webapp.war в папке your_application / target / res-overlay / raw. Скопируйте файл your_webapp.war в папку your_application / res / rawТеперь запустите сборку maven снова. Вот она! Теперь веб-приложение может быть правильно построено :) Большое спасибо за то, что заставили меня задуматься и тем самым привели меня к решению !!

2 голосов
/ 04 сентября 2013

Я получил решение для вашего вопроса.выполните следующие шаги

1) Сначала установите ijetty на ваше устройство, затем папка jetty будет создана на SD-карте.
2) Создайте папку xyz внутри папки webapp, которая находится в папке jetty наваше устройство.
3) Скопируйте файл hello.war и вставьте его в папку xyz
4) Перейдите на вкладку «Загрузки» в поле «Введите путь в тексте редактирования, например localhost: номер порта / xyz
6) Номер порта зависит отна вас, который вы используете на сервере ijetty.
6) Имя контекста должно начинаться с /, и вы можете дать любое имя, например / hello

2 голосов
/ 26 сентября 2011

Я пытался сделать это, а также столкнулся с различными препятствиями.Но я все-таки запустил его.Я не развернул его непосредственно на сервере, и это может быть вашей проблемой.Вы пытались создать файл .war и вручную загрузить его из приложения i-Jetty?Поэтому вместо «развернуть» попробуйте «пакет» для своей цели.

Кроме того, вы смотрели на этот сайт ?

Вы видите classes.zipфайл, потому что как часть компиляции он должен преобразовать байт-код Java в формат, который читает виртуальная машина Dalvik.Это происходит автоматически в сценарии maven с использованием инструмента dx.Он содержит материал, который вы обычно найдете в файле .dex.

Надеюсь, это полезно!

0 голосов
/ 17 марта 2016

Шаги, которые я предоставляю, относятся к моей заявке ( Like4Wifi ).Прежде всего, поймите, что вы не можете запускать страницы JSP, а только сервлеты.Чтобы получить рабочий пример, загрузите приведенный выше исходный код и выполните шаги:

1). Create your war file and extract it. In this case, the Like4Wifi.war
2). Get the whole 'com' folder/package from 'classes' folder
3). dx the whole 'com' folder (./dx --dex  --output=com/facebook/like4wifi/Like4Wifi.dex com/facebook/like4wifi/Like4Wifi.class)
4). Remove original .class file
5). Rename .dex file to .class
6a). Create 'classes.zip' at 'WEB-INF/lib' folder
6b). The content of 'classes.zip' is 'META-INF' folder and its contents and also classes.dex (not the       app_name.dex and without the folder/package tree)
7). Move 'classes.zip' to 'lib' folder.
9). Copy the 'Like4Wifi' folder into 'webapps' folder to the mobile.
10). Copy the other jetty libraries from WEB-INF/lib from the console folder at mobile - VOLUNTARILY

Пожалуйста, сохраните это приложение в качестве примера и не обращайте его против людей!

...