Статьи

Мой первый опыт с Девой и Затмением RAP, часть 2

С момента моего первого поста о моем опыте новичка с Девой прошло много времени, но это не значит, что он медленно исчез из поля зрения! Наоборот; Сейчас я запускаю сервер приложений Java на трех серверах, и я чувствую, что достаточно хорошо понимаю механизмы, чтобы легко поддерживать приложения Java, на которых я работаю. Однако эта легкость достигла своей цены, потому что у меня было несколько трудных проблем, чтобы пережевать, прежде чем я, наконец, получил все, чтобы работать так, как я хотел.

Прежде чем продолжить, я должен сказать, что я все еще очень доволен настройкой, описанной в первом посте . Вскоре после того, как я поделился своим опытом, мне пришлось снова пройти все этапы, потому что стала доступна версия ядра 3.6.4 , и теперь у меня было несколько часов, прежде чем я все запустил и запустил. Краткий обзор ситуации:

  • Сервер Debian Squeeze
  • Oracle JAVA 7 установлен
  • Ядро Virgo 3.6.4, с сервером Jetty, но установленным по-другому, чем версия сервера Jetty, которую предлагает команда Virgo
  • RAP 2.3.0 установлен

Как упоминалось в предыдущем посте, я решил не переходить на стандартную версию Virgo Jetty, потому что на момент написания этой статьи она была — на мой взгляд — грязной и несколько раздутой, с множеством двойных комплектов (например, Spring). связки), что затрудняло отладку. В моей версии был хороший баланс между простотой версии nano-rap, но с расширяемостью обычного ядра. Единственным недостатком является то, что стилизация консоли управления  в какой-то момент исчезла, и я пока не смог это исправить.

Когда я установил и запустил ядро ​​3.6.4, я почувствовал, что есть место для улучшений, и столкнулся с рядом трудных проблем конфигурации. В целом, были сделаны следующие улучшения:

  • Ядро поддерживает Java 7.
  • javax.cryptoПакет доступен
  • Обновитесь до RAP 3.0

Требуемые изменения незначительны, но особенно вторая функция стоила мне много головной боли. Я проведу необходимые изменения, чтобы сделать эту работу.

Первые две модификации требуют изменения в java6-server.profileфайле, который находится в $SERVER_HOME/configurationпапке. На следующем рисунке показаны изменения, необходимые для активации поддержки Java 7. В конце файла добавьте выделенную строку:

org.osgi.framework.executionenvironment = \
 OSGi/Minimum-1.0,\
 OSGi/Minimum-1.1,\
 J2SE-1.2,\
 J2SE-1.3,\
 J2SE-1.4,\
 J2SE-1.5,\
 JavaSE-1.6,\
 JavaSE-1.7
osgi.java.profile.name = Virgo-Java6

Благодаря этому становится возможным обновить RAP до версии 3.0. Но перед этим я столкнулся с некоторыми проблемами, пытаясь javax.cryptoактивировать пакет, который мне нужно было использовать для twitter4j . Чтобы сделать это возможным, добавьте в java6-server.profileфайл следующее:

org.osgi.framework.system.packages = \
 ...
 javax.crypto,\
 javax.crypto.interfaces,\
 javax.crypto.spec,\
 ...

org.osgi.framework.bootdelegation = \
 org.eclipse.virgo.nano.authentication,\
 com.sun.*,\
 javax.xml.*,\
 javax.crypto.*,\
 org.apache.xerces.jaxp.*,\
 org.w3c.*,\
 org.xml.*,\
 sun.*

В org.osgi.framework.system.packagesосновном предоставляет пакеты из JREдля использования в пользовательском регионе, в то время как  org.osgi.framework.bootdelegationвыпускает пакеты для загрузчика Equinox. Системные пакеты уже были подготовлены с выпуском ядра 3.6.4, но cryptoпакеты все еще необходимо было добавить в делегирование загрузки .

Пакет, который использует twitter4j (или другую библиотеку, которая использует javax.crypto)  должен импортировать пакеты javax.crypto в MANIFEST.MF, даже если на них нет ссылок! Если нет, вы получите ошибку времени выполнения, когда приложению понадобятся пакеты. В моей настройке этот пакет был активирован в плане, и я обнаружил, что песочница Дева крайне ограничена. Что, кстати, не критика. 

С этими изменениями twitter4j работал как шарм.

Наконец, я хотел обновить RAP. Это было просто вопрос замены четырех RAP 2.3.0 bundlesс их аналогами 3.0, а затем изменения плана org.eclipse.rap:

<?xml version="1.0" encoding="UTF-8"?>
<plan name="org.eclipse.rap" version="3.0.0" scoped="false" atomic="true"
        xmlns="http://www.eclipse.org/virgo/schema/plan"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
                http://www.eclipse.org/virgo/schema/plan
                http://www.eclipse.org/virgo/schema/plan/eclipse-virgo-plan.xsd">

    <artifact type="bundle" name="org.eclipse.rap.rwt" version="[3.0.0, 4.0.0)" />
    <artifact type="bundle" name="org.eclipse.rap.rwt.osgi" version="[3.0.0, 4.0.0)" />
    <artifact type="bundle" name="org.eclipse.rap.jface" version="[3.0.0, 4.0.0)" />
    <artifact type="bundle" name="org.eclipse.rap.jface.databinding" version="[3.0.0, 4.0.0)" />
</plan>

Благодаря этим модификациям сервер приложений Virgo был полностью обновлен!