Статьи

Oracle Public Cloud Инструменты разработки Java-сервисов

Даже если Java EE 7 EG решила отложить функции PaaS до EE 8, сама Oracle активно работает над открытым предложением PaaS на основе Java EE. Это известно уже давно, и вы также, возможно, читали о моих первых тест-драйвах с NetBeans в контексте программы раннего доступа. Есть признаки того, что мы увидим окончательную версию GA во время Oracle OpenWorld, и я подумал, что дам вам еще кое-что, чтобы увеличить ваши ожидания относительно предстоящих событий.

 Интерфейс командной строки (CLI)

Инструменты Oracle Cloud впечатляют. У вас (будет) поддержка NetBeans 7.3, Eclipse OEPE и JDeveloper, а также у вас также есть пара инструментов на основе CLI для интеграции с жизненным циклом сборки. Основой для этого является интерфейс CLI. Здесь поддерживаются две области: во-первых, удаленное управление вашим экземпляром облачной службы. Итак, все, что вам нужно для управления развертыванием, уже есть. Вы можете устанавливать, обновлять, удалять, запускать и останавливать развертывания. Кроме того, у вас есть пара сведений о конфигурации о ваших развертываниях, выполненных заданиях, ваших источниках данных и экземплярах. Вторая область — это белый список инструментов. Это позволяет вам сверяться с белым списком, прежде чем тратить время на круги развертывания.
Все, что вам нужно для начала, будет в sdk-download. На момент написания этого, это все еще 1.0.0, предназначенный для раннего доступа. Я ожидаю, что эта версия увеличится до GA, тем более, что я не смог ее запустить и запустить за прокси. Итак, сейчас давайте отметим, что все, что я показываю вам, должно быть выполнимо с прокси, дополнительно определяя атрибут «httpproxy» в каждой команде.

  Учитывая следующее:

 java -jar javacloud.jar install -user [email protected] -serviceinstance java -identitydomain myiddomain -path oracle-javacloud-sdk-1.0.0/samples/apps/visitors.war -application visitor 

Вы можете установить пример приложения, расположенный в папке примеров облачного SDK под именем посетителя. Если вы не укажете атрибут -password, вам будет предложено ввести его. Проверка белого списка должна была быть выполнена раньше:

java -jar whitelist.jar oracle-javacloud-sdk-1.0.0/samples/apps/visitors.war

Ожидаемый результат здесь:

INFO     - Whitelist validation has succeeded

Если вы попробуете что-то, попавшее в белый список, в нем будут перечислены соответствующие проверки:

Учитывая следующее:

 java -jar javacloud.jar install -user [email protected] -serviceinstance java -identitydomain myiddomain -path oracle-javacloud-sdk-1.0.0/samples/apps/visitors.war -application visitor 

Вы можете установить пример приложения, расположенный в папке примеров облачного SDK под именем посетителя. Если вы не укажете атрибут -password, вам будет предложено ввести его. Проверка белого списка должна была быть выполнена раньше:

java -jar whitelist.jar oracle-javacloud-sdk-1.0.0/samples/apps/visitors.war

Ожидаемый результат здесь:

INFO     - Whitelist validation has succeeded

Если вы попробуете что-то, попавшее в белый список, в нем будут перечислены соответствующие проверки:

ERROR    - There are 1 error(s) found for /SimpleSample/dist/SimpleSample.war

ERROR    - Path:/SimpleSample/dist/SimpleSample.war (1 Error)
ERROR     - Class:net.eisele.cloud.ForbiddenServlet (1 Error)
ERROR      - 1:Method exit not allowed from java.lang.System.(Line No:34 Method Name:java.lang.System->exit(int))
ERROR    - /SimpleSample/dist/SimpleSample.war Failed with 1 error(s).

ERROR    - Whitelist validation has failed with 1 error(s).

 

Пока все хорошо. Но что делает это очень интересным, так это то, что вы также можете использовать тот же CLI для развертывания в своем локальном (локальном) экземпляре, просто добавив немного волшебства пути к классам. Большинство команд поддерживают необязательный аргумент «local». Когда этот аргумент принимает значение true, команда выполняется для локального домена Weblogic.

java -jar javacloud.jar install -user system -password weblogic1 -serviceinstance java -identitydomain myiddomain -local true -adminurl http://localhost:7001 -classpath oracle-javacloud-sdk-1.0.0\lib\localextension.jar:wls1035\wlserver_10.3\server\lib\weblogic.jar -path /SimpleSample/dist/SimpleSample.war -application simplesample

Вот и все. Вывод говорит вам, что неправильно или правильно:

WARNING  - Application Manager is on CLI mode. No asynchronous operations will
           be available against local Weblogic Server when invoked from CLI.
<06.09.2012 18:16 Uhr MESZ> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiatin
g deploy operation for application, simplesample [archive: /temp/cloud/simplesample.war], to AdminServer .>
INFO     - The application installation operation is successfully completed.
<06.09.2012 18:16 Uhr MESZ> <Warning> <JNDI> <BEA-050001> <WLContext.close() was
 called in a different thread than the one in which it was created.>

Это было просто! Но CLI — не единственный инструмент, который у вас есть.

Инструменты Maven

На основе CLI у вас также есть плагин Maven, который может быть интегрирован в вашу сборку. Каждая команда выставлена ​​как мавенская цель. Плагин jar — maven-javacloud.jar, который доступен в SDK. Каждая цель поддерживает все свои соответствующие аргументы команды CLI в качестве свойств. Первый шаг — установить плагин, который находится в папке lib SDK.

mvn install:install-file -Dfile=$SDK_HOME/lib/maven-javacloud.jar -DgroupId=com.oracle.cloud -DartifactId=javacloud -Dversion=1.0 -Dpackaging=jar

Если это сделано, вы можете добавить его в свой pom.xml или даже запустить прямо из командной строки. Чтобы получить список заданий из вашего java-сервиса, все, что вам нужно сделать, это выполнить следующую команду:

mvn com.oracle.cloud:javacloud:listjobs -D$SDK_HOME=/oracle-javacloud-sdk-1.0.0 -Didentitydomain=myiddomain [email protected] -Dpassword=weblogic1 -Dserviceinstance=java

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

1:Job Id                 - 27199
-----------              - -----------------------
->                       - Properties
------------             - -----------------------
Status                   - COMPLETE
Application              - MyCloud
Start Time               - Thu Aug 02 18:22:15 CEST 2012
End Time                 - Thu Aug 02 18:22:22 CEST 2012
Duration                 - 7 seconds
Last Updated Time        - Thu Aug 02 18:22:22 CEST 2012
Last Updated Description - 35 days, 22 hours, 23 minutes and 1 second ago
Operation                - Redeploy Application
Number of Logs           - 3
-------------            - -----------------------

Это в основном обзор всех состояний всех заданий для данного экземпляра. Вы также можете увидеть индивидуальный статус для вакансии, используя mvn com.oracle.cloud:javacloud:jobstatus goal. Для каждого задания доступны три файла журнала: поиск вирусов, белый список и журнал действий (развертывание, повторное развертывание). Вы можете получить любой из файлов журнала, используя

mvn com.oracle.cloud:javacloud:joblogfile -Djobid=27199 -Dlog=whitelist [...]

Цель. Но использование этого способа в принципе не отличается от того, что может предложить интерфейс CLI. Итак, давайте перейдем к другому примеру, интегрировав его в pom.xml. В SDK есть очень хороший пример, который содержит (почти) полную привязку жизненного цикла для всех целей. Встроенный в раздел <build> это может выглядеть так:

<build>
        <plugins>
            <plugin>
                <groupId>com.oracle.cloud</groupId>
                <artifactId>javacloud</artifactId>
                <version>1.0</version>
                <executions>
  <execution>
                        <id>install</id>
                        <phase>integration-test</phase>
                        <configuration>
                            <failonerror>true</failonerror>
                            <jobidproperty>install_job_id</jobidproperty>
                            <downloadlastlogonfailure>true</downloadlastlogonfailure>
                        </configuration>
                        <goals>
                            <goal>install</goal>
                        </goals>
                    </execution> <execution>
                        <id>installjobstatus</id>
                        <phase>integration-test</phase>
                        <configuration>
                            <jobid>${install_job_id}</jobid>
                            <waitfor>true</waitfor>
                            <failonerror>true</failonerror>
                            <downloadlastlogonfailure>true</downloadlastlogonfailure>
                        </configuration>
                        <goals>
                            <goal>jobstatus</goal>
                            <goal>listapplications</goal>
                        </goals>
                    </execution>

 Вы видите зависимость плагина, за которой следуют три цели. Цель установки связана с этапом тестирования интеграции и устанавливает приложение в облако. Вспоминая работу? Тег <jobidproperty> связывает назначенный jobid с соответствующим свойством maven, и вы можете получить к нему доступ позже через <jobid> $ {install_job_id} </ jobid>. Красиво сделано! Вы можете переустановить, запустить и остановить развертывание и делать все, что нужно. Работа с различными профилями для локальных и облачных также возможна.

ANT Tooling
Наконец, но не в последнюю очередь, у вас все еще есть версия ANT всего, что я описал выше. Задачи упакованы в ant-javacloud.jar, который доступен в SDK. Объявление задачи можно найти в SDK по адресу ant-javacloud.jar \ oracle \ cloud \ antlib.xml и может быть объявлено с префиксом пространства имен javacloud следующим образом:

<project name="sample-how-to-use-ant" default="all" basedir="." javacloud="antlib:oracle.javacloud.antlib">
        <!-- more of your stuff here -->
            <path id="javacloud.classpath">
                <pathelement location="${SDK_HOME}/lib/ant-javacloud.jar"/>
            </path>
            <taskdef uri="antlib:oracle.javacloud.antlib" resource="oracle/cloud/antlib.xml" classpathref="javacloud.classpath">
            <!-- required only when working against local Weblogic domain -->
            <path id="local.classpath">
                <pathelement path="${SDK_HOME}/lib/localextension.jar"/>
                <!-- optional for running whitelist validation automatically while installing -->
                <pathelement path="${SDK_HOME}/lib/whitelist.jar"/>
                <pathelement path="${WEBLOGIC.JAR}"/>
            </path>
        </project>

 Это довольно полный набор инструментов для интеграции вашей новой службы Oracle Java Cloud в вашу сборку. Плагин Maven, очевидно, имеет смысл для большинства из нас, но все остальные не забыты. Так что, будьте любопытны, когда этот материал станет общедоступным!

Напоминаем, что Oracle Public Cloud работает на Exalogic ?