Преобразование WAR в EAR и другие истории Glassfish - PullRequest
0 голосов
/ 28 апреля 2010

Я действительно новичок в этом, поэтому, надеюсь, не совершу ужасной ошибки. Я прошу прощения перед рукой, если у меня есть.

В моем проекте я использовал tomcat и развертывал файлы WAR. Но теперь некоторые руководители хотят развернуть файлы EAR. Итак, поехали.

Сначала я скачал Glassfish (не знаю, является ли он сервером приложений apropiate для такого новичка, как я), установил его и все (я даже развернул hello.war в autodeploy> _ <). Затем подготовил файл EAR. </p>

Из того, что я знаю, мне просто нужно создать Enterprise Application Project в Eclipse и добавить в модуль мой war-файл. Это автоматически изменяет файл application.xml (спасибо проекту eclipse!). Поэтому я экспортировал его в файл EAR и загрузил на сервер Glassfish.

Чудеса чудес, это не работает.

Я также попытался развернуть старый WAR-файл в этой новой блестящей стеклянной рыбке, но он переходит на http-404 not found error Стеклянная рыбка, кажется, говорит, что мой проект не находится в ~ / domains / domain1 / docroot. Кстати, я использую Windows, и я знаю о некоторых проблемах между Glassfish и Windows из-за некоторого обновления открытых файлов или тому подобного.

Итак, у меня есть вопросы: Во-первых, правильно ли я делаю пакет EAR? Во-вторых, нужно ли выполнить какую-то особенную настройку на сервере Glassfish для развертывания файлов EAR и WAR?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 28 апреля 2010

Если ваше приложение не имеет EJB, я не вижу смысла в его развертывании в качестве EAR.

Домен и URL должны как-то включать имя вашего домена. Я пользователь WebLogic / JBOSS. Есть ли способ создать домен в Glassfish? Если да, сделайте это и вставьте в него свой EAR. Может быть это поможет.

2 голосов
/ 29 апреля 2010

В моем проекте я использовал tomcat и развертывал файлы WAR. Но теперь некоторые руководители хотят развернуть файлы EAR. Итак, поехали.

Было бы интересно узнать мотивы этого решения. Общая тенденция состоит в том, чтобы упростить, а не усложнить ситуацию (например, в Java EE 6 можно непосредственно помещать EJB в WAR).

Сначала я скачал Glassfish (не знаю, является ли он сервером приложений apropiate для новичка, такого как я), установил его и все (я даже развернул hello.war в autodeploy> _ <). Затем подготовил файл EAR. </p>

Мне очень нравится GlassFish v3, он обеспечивает очень продуктивную среду для разработки. И я не нахожу это сложным для простых нужд, консоль администратора сделает его дружественным, если вы к этому не привыкли.

(...) Итак, я экспортировал его в файл EAR и загрузил на сервер Glassfish. Чудеса чудес, это не работает.

Проверьте журналы сервера.

Я также пытался развернуть старый WAR-файл в этой новой блестящей стеклянной рыбке, но он переходит на http-404 not found error.

К какому URL вы пытались обратиться? Как вы видите приложение в консоли администратора.

Поэтому у меня возникают вопросы: во-первых, правильно ли я делаю пакет EAR?

Понятия не имею, я не полагаюсь на IDE для этого. Покажите структуру вашего уха (используйте tree), покажите свой application.xml.

Нужно ли выполнять какую-то особенную настройку на сервере Glassfish для развертывания файлов EAR и WAR?

Существует несколько способов развертывания WAR, EAR (через консоль, через каталог autodeploy, через инструмент командной строки asadmin), и все они работают "из коробки".

1 голос
/ 29 апреля 2010

Прежде всего, спасибо за ваши ответы. Я постараюсь собрать всю эту информацию. Я думаю, что мотивация для его изменения в файл EAR связана с «корпоративными решениями», и, возможно, кто-то, кто не хочет писать контекст всякий раз, когда он устанавливает какое-либо приложение на сервер, хотя я ни один в компании не оспариваю это , Виноват. Они также все еще используют Java EE 1.5. Я установил Glasshfish 2.1 и разъем Glassfish 2.1 на свое затмение Galileo. Я думаю, что это довольно легко управляется между коннектором затмения, консолью и веб-администрацией. В конце концов я нахожу место, где я могу сделать любое действие. Он очень большой по сравнению с Tomcat, и я чувствую что-то потерянное, но я стараюсь делать это медленно.

В моем EAR-файле немного, WAR-файл, а в каталоге META-INF находятся мои application.xml и manifest.mf. Мой application.xml читает:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" 
    id="Application_ID" version="5">
  <display-name>foo</display-name>
  <module>
    <web>
      <web-uri>FOO.war</web-uri>
      <context-root>foo</context-root>
    </web>
  </module>
</application>

Я получаю доступ к URL через http://localhost:8080/foo, который показывает server.log (на испанском, я переведу его как можно лучше), используя веб-сервис для администрирования Glassfish, а не выигрыш приставка.

[# | 2010-04-29T09: 46: 59.722 + 0200 | INFO | sun-appserver2.1 | javax.enterprise.system.tools.deployment | _ThreadID = 26; _ThreadName = Thread-419; | развернут с помощью moduleid = foo | #]

[# | 2010-04-29T09: 46: 59,909 + 0200 | ТЯЖЕЛАЯ | ВС-appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _ThreadName = Thread-418; _RequestID = 9bff8714- d870-4f30-8a7a-22dca0375b6b; | PWC1300: Ошибка при инициализации ресурсов в контексте / foo | #]

[# | 2010-04-29T09: 46: 59,909 + 0200 | ТЯЖЕЛАЯ | ВС-appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _ThreadName = Thread-418; _RequestID = 9bff8714- d870-4f30-8a7a-22dca0375b6b; | PWC4430: База документов C: \ Sun \ SDK \ jdk \ glassfish \ domains \ domain1 \ docroot \ FOO не существует или это каталог, который не может быть прочитан | #]

[# | 2010-04-29T09: 46: 59,925 + 0200 | ТЯЖЕЛАЯ | ВС-appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _ThreadName = Thread-418; _RequestID = 9bff8714- d870-4f30-8a7a-22dca0375b6b; | PWC1306: Запуск контекста / foo завершился неудачно из-за предыдущих ошибок | #]

[# | 2010-04-29T09: 46: 59.925 + 0200 | INFO | sun-appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _ThreadName = Thread-418; | PWC1240: The Контейнер WebModule [/ foo] не был запущен | #]

Как я уже сказал, я также пытался использовать WAR напрямую, и это также не работало. Я развернул его хорошо (или так он говорит), а затем у него есть симпатичная кнопка (в столбце действий) для запуска веб-службы, сервер дает мне http://localhost:4848/applications/webApplicationLinks.jsf?appID=FOO&contextRoot=/FOO (ухо foo, а война FOO) и перенаправляет меня на страницу, сообщающую, что если сервер или слушатель не работают, возможно, что ссылки не будут работать. Ниже приведены ссылки http://localhost:8080/FOO и http://localhost:8181/FOO (ни одна из них не работает, AKA http-404 в 8080 и пустая страница в 8181). Кстати, эта кнопка запуска не доступна в ухе, мне это не нравится.

Что касается других интересных вещей на сервере server.log, то, похоже, это не говорит о многом, но я могу ошибаться, поскольку я действительно очень новичок в мире серверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...