プライマリ・コンテンツに移動
Oracle® Fusion Middleware継続的統合によるアプリケーションの開発
12c (12.2.1.1)
E77233-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

13 Mavenを使用したOracle SOA SuiteおよびOracle Business Process Managementプロジェクトのビルド

この章では、Oracle Business Process Managementアプリケーションを作成、ビルドおよびデプロイするために、Oracle SOA SuiteおよびOracle Business Process Management Maven原型を使用する方法を説明します。

この章のトピックは、次のとおりです:

Mavenを使用したOracle SOA Suite開発プラグインの使用の詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のOracle SOA Suite開発Mavenプラグインの使用に関する項を参照してください。

13.1 Mavenを使用したOracle SOA SuiteおよびOracle Business Process Managementプロジェクトのビルドの概要

Oracle SOA SuiteおよびOracle Business Process Managementには、1つのMavenプラグインおよび2つの原型が提供されています。表13-1に、Maven座標を示します。

表13-1 Oracle SOA SuiteでのMaven座標

アーティファクト groupId artifactId version

SOAプラグイン

com.oracle.soa.plugin

oracle-soa-plugin

12.2.1-0-0

SOAアプリケーション原型

com.oracle.soa.archetype

oracle-soa-application

12.2.1-0-0

SOAプロジェクト原型

com.oracle.soa.archetype

oracle-soa-project

12.2.1-0-0


表13-2に、Oracle SOA Suiteプラグインでサポートされているゴールを示します。

表13-2 Oracle SOA Suiteプラグイン・ゴール

ゴール 目的

compile

プロジェクトでSCAコンポジット検証ルーチンを実行します---これは、ソース・アーティファクトを検査し、エラーおよび警告を生成する点で従来のコンパイル操作に相当します。ただし、ソース・アーティファクトのコンパイルされたバージョンは生成しません。

sar

プロジェクトからSOAアーカイブ(SAR)ファイルを作成します。

deploy

ランタイム環境へSARファイルをデプロイします。Mavenでは、ランタイム環境へのデプロイメントは通常pre-integration-testフェーズで行われるため、このゴールはdeployフェーズではなく、デフォルト・ライフサイクルのpre-integration-testフェーズにマップされていることに注意してください。

test

コンポジットでSCAテストを実行します。ランタイム環境にデプロイメントされているコンポジット(SAR)によるため、このゴールは、testフェーズではなく、integration-testフェーズにマップされていることに注意してください。

undeploy

ランタイム環境からコンポジット(SAR)をアンデプロイします。このゴールはデフォルトMavenライフサイクルのどのフェーズにもマップされていないことに注意してください。


SOAアプリケーション原型では、単一のSOAプロジェクトを含む新規SOAアプリケーションを作成できます。これは編集するためにJDeveloperにインポートできます。

SOAプロジェクト原型では、既存SOAアプリケーションに新規SOAプロジェクトを追加できます。

13.2 Maven原型からの新規SOAアプリケーションおよびプロジェクトの作成

SOA Maven原型を使用して(単一のSOAプロジェクトを含む)新規SOAアプリケーションを作成するには、次のようなコマンドを実行します。

mvn archetype:generate
     -DarchetypeGroupId=com.oracle.soa.archetype
     -DarchetypeArtifactId=oracle-soa-application
     -DarchetypeVersion=12.2.1-0-0
     -DgroupId=org.mycompany
     -DartifactId=my-soa-app
     -Dversion=1.0-SNAPSHOT
     -DprojectName=my-project

このコマンドにより、原型から新規SOAアプリケーションを作成できるようにする、Mavenのarchetype:generateゴールが実行されます。表13-3に、パラメータを示します。

表13-3 Oracle SOA Suiteアプリケーションのパラメータ

パラメータ 目的

archetypeGroupId

新規SOAアプリケーションの作成に使用する原型のgroupId。これは、前の例に示したように、com.oracle.soaである必要があります。

archetypeArtifactId

新規SOAアプリケーションの作成に使用する原型のartifactId。これは、前の例に示したように、oracle-soa-applicationである必要があります。

archetypeVersion

新規SOAアプリケーションの作成に使用する原型のバージョン。これは、前の例に示したように、12.2.1.0.0である必要があります。

groupId

新規SOAアプリケーションのgroupId。通常、これは組織のドメイン名を逆にした形式で始まります。

artifactId

新規SOAアプリケーションのartifactId。通常、これはSOAアプリケーションの識別子です。

version

新規SOAアプリケーションのversion。新規プロジェクトの場合、これは通常1.0-SNAPSHOTです。

projectName

新規SOAアプリケーション内のSOAプロジェクトの名前。SOAアプリケーション(artifactId)の名前とは異なる必要があります。


また、次の例に示すように、引数なしでコマンドを実行することもできます。この場合、Mavenでは、使用可能な原型のリストが表示され、必要な情報の入力を求められます。

mvn archetype:generate

前述の例に示しているようにアプリケーションの名前をmy-soa-appおよびプロジェクトの名前をmy-projectと付けたと想定した場合、アプリケーションの作成後、アプリケーションには次のファイルが含まれます。

maven_dt_013.pngの説明が続きます
図「maven_dt_013.png」の説明

生成されたプロジェクトにはファイルおよび多数の空ディレクトリが含まれます。表13-4に、ファイルの説明を示します。

表13-4 Oracle SOA Suiteアプリケーションおよびプロジェクト用に作成されたファイル

ファイル 目的

pom.xml

新規アプリケーションについて記述するMavenプロジェクト・オブジェクト・モデル(POM)ファイル。アプリケーションに指定したMaven座標およびアプリケーション内のSOAプロジェクトへの参照が含まれます。

PROJECT/pom.xml

新規プロジェクトについて記述するMaven POMファイル。プロジェクトに指定したMaven座標が含まれ、SOA Mavenプラグインを使用してSARファイルにプロジェクトをビルドするための適切なプラグイン定義も含まれます。

PROJECT/composite.xml

コンポジット・メタデータ。

.adf/META-INF/adf-config.xml

コンポジットのビルドに必要となる場合があるMDSリポジトリの定義。

その他

それ以外は任意の新規コンポジットに作成される標準ファイルです。これらは、JDeveloperで作成された新規SOAアプリケーションおよび新規SOAプロジェクトにあるファイルと同じファイルです。


13.3 Maven原型からの既存SOAアプリケーション内のSOAプロジェクトの作成

SOA Maven原型を使用して(既存SOAアプリケーション内に)SOAプロジェクトを作成するには、SOAアプリケーション・ディレクトリ内で次のようなコマンドを実行します。

mvn archetype:generate
    -DarchetypeGroupId=com.oracle.soa.archetype
    -DarchetypeArtifactId=oracle-soa-project
    -DarchetypeVersion=12.2.1-0-0
    -DgroupId=org.mycompany
    -DartifactId=my-second-project
    -Dversion=1.0-SNAPSHOT

このコマンドにより、原型から新規SOAプロジェクトを作成できるようにする、Mavenのarchetype:generateゴールが実行されます。表13-5に、パラメータを示します。

表13-5 Oracle SOA Suiteプロジェクトのパラメータ

パラメータ 目的

archetypeGroupId

新規SOAアプリケーションの作成に使用する原型のgroupId。これは、前の例に示したように、com.oracle.soaである必要があります。

archetypeArtifactId

新規SOAアプリケーションの作成に使用する原型のartifactId。これは、前の例に示したように、oracle-soa-projectである必要があります。

archetypeVersion

新規SOAアプリケーションの作成に使用する原型のバージョン。これは、前の例に示したように、12.2.1.0.0である必要があります。

groupId

新規SOAプロジェクト用のgroupId。通常、これは組織のドメイン名を逆にした形式で始まります。

artifactId

新規SOAプロジェクト用のartifactId。通常、これはSOAプロジェクトの識別子です。

version

新規SOAプロジェクト用のversion。新規プロジェクトの場合、これは通常1.0-SNAPSHOTです。


また、次の例に示すように、引数なしでコマンドを実行することもできます。この場合、Mavenでは、使用可能な原型のリストが表示され、必要な情報の入力を求められます。

mvn archetype:generate

プロジェクトの名前をmy-second-projectと付けたと想定した場合、新規プロジェクトの作成後、プロジェクトには次のファイルが含まれます。

maven_dt_014.pngの説明が続きます
図「maven_dt_014.png」の説明

生成されたプロジェクトにはファイルおよび多数の空ディレクトリが含まれます。表13-4に、ファイルの説明を示します。

mvn generateコマンドも、新規プロジェクトに追加するためにSOAアプリケーションPOMを更新します。たとえば、13.2項のアプリケーションでこのプロジェクトを作成した場合、SOAアプリケーションPOMに次のリストが表示されます。

<modules>
  <module>my-project</module>
  <module>my-second-project</module>
</modules>

このように(Mavenのmulti-moduleプロジェクト)、複数のSOAプロジェクトを含むSOAアプリケーションがある場合、MavenはSOAアプリケーションPOMにリストされている順に1つずつプロジェクトをビルドします。

13.4 Oracle JDeveloperでのSOAアプリケーションの編集

Oracle JDeveloperでアプリケーションを編集して、SOAコンポジットを構成できます。

プロジェクトを開くには:

  1. 「ファイル」メニューを開き、「インポート」を選択します。

  2. 「インポート」ダイアログ・ボックスで、「Mavenプロジェクト」オプションを選択し、「OK」をクリックします。

    「Mavenプロジェクトのインポート」ダイアログが表示されます。

    import-maven-wizard-soa.pngの説明が続きます。
    図「import-maven-wizard-soa.png」の説明

  3. 「ルート・ディレクトリ」フィールドに、JDeveloperにインポートするアプリケーションのパスを入力します。

  4. 「設定ファイル」フィールドにMavenのsettings.xmlファイルのパスを入力します。Maven設定ファイルの場所に標準でない場所を使用していないかぎり、ほとんどの場合デフォルト値が適切です。

  5. 「リフレッシュ」をクリックして、その場所で使用できるプロジェクトのリストをロードします。

  6. インポートするプロジェクトを選択します。また、「アプリケーションにソース・ファイルもインポートします。」および「インポートしたPOMファイルと同期するために既存のJDeveloperプロジェクトを更新します。」も選択します。

  7. 「OK」をクリックして、インポートを完了します。

これでJDeveloperでプロジェクトが開きました。

13.5 Mavenを使用したSOAプロジェクトのビルド

プロジェクト・コードを記述した後に、Mavenを使用してプロジェクトをビルドできます。

  1. プロジェクトでSCA検証を実行するには、このコマンドを実行します。

    mvn compile
    
  2. SARファイルをビルドするには、このコマンドを実行します。

    mvn package
    

13.6 SOAプロジェクトのビルドについての考慮事項

コンポジット・プロジェクトの中には、ビルドされるためにMDSリポジトリへのアクセスが必要なものもあります。これには、ヒューマン・タスクまたはビジネス・ルール・コンポーネントを含むすべてのコンポジットが含まれます。これらのコンポーネントは、MDSでWSDLファイルまたはXSDファイル、あるいはその両方を参照します。

これらのプロジェクトをビルドするには、MDSリポジトリへのアクセス権のあるビルドを提供する必要があります。これは、ファイル・ベースまたはデータベース・ベースのいずれのMDSリポジトリでもかまいません。

MDSリポジトリ接続詳細はSOAアプリケーションの/.adf/META-INF/adf-config.xmlファイルで指定されています。これはMDSへのアクセスを要求するすべてのSOAプロジェクトが、SOAアプリケーション内に配置されている必要があることを意味します。

SOA Mavenアプリケーション原型を使用して、またはJDeveloperを使用して新規プロジェクトを作成する場合、adf-config.xmlには次のデフォルトMDSリポジトリ構成が含まれます。

<metadata-store-usages>
  <metadata-store-usage id="mstore-usage_1">
    <metadata-store class-name="oracle.mds.persistence.stores.file.FileMetadataStore">
      <property name="metadata-path" value="${oracleHome}/integration"/>
      <property name="partition-name" value="seed"/>
    </metadata-store>
  </metadata-store-usage>
</metadata-store-usages>

この例は、${oracleHome}/integrationの場所にファイル・ベースのMDSリポジトリを定義します。このビルドをMavenで実行する場合、oracleHome変数が定義されていない可能性があります。その場合、次の例に示すようにMavenコマンドラインで指定する必要があります。

mvn compile -DoracleHome=MW_HOME/soa -DappHome=dir_for_application_for_proj

oracleHomeの変数は、SOA QuickstartまたはJDeveloperをインストールしたOracleホームにあるSOAディレクトリを指すことに注意してください。ディレクトリにはseedMDSリポジトリが含まれます。

adf-config.xmlファイルを更新して、使用するMDSリポジトリへのフル・パスを指定することもできます。

データベース・ベースのMDSリポジトリを使用する場合、次の例に示すようにJDBC値を指定するように構成を変更します。

<metadata-store-usage id="mstore-usage_1">
  <metadata-store class-name="oracle.mds.persistence.stores.db.DBMetadataStore">
     <property name="jdbc-userid" value="your_prefix_mds"/>
     <property name="jdbc-password" value="welcome1"/>
     <property name="jdbc-url" 
             value="jdbc:oracle:thin://@database.server:1521/service_name"/>
     <property name="partition-name" value="soa-infra"/>
  </metadata-store>
</metadata-store-usage>

13.7 Mavenを使用したSOAサーバーへのSOAプロジェクトのデプロイ

SARファイルをデプロイするには、次のコマンドを実行します。

mvn pre-integration-test

表13-6では、デプロイメント用に指定できるパラメータについて説明します。これらは、プロジェクト用にPOMファイル内で指定するか、またはコマンドラインで指定することもできます。

表13-6 SOAプロジェクトをデプロイするためのパラメータ

パラメータ 目的

serverURL

SOAドメインの管理サーバーのURL。

sarLocation

SARファイルの場所。

overwrite

デプロイメントが同じバージョンの既存のコンポジットを上書きすべきかどうか。

configplan

(オプション)使用するSOA構成プラン(ある場合)の名前。

forceDefault

デプロイメントがこのリビジョンをデフォルト・リビジョンにすべきかどうか。

regenerateRuleBase

基本ルール・ディクショナリを再生成すべきかどうか。

composite.partition

コンポジットがデプロイされるSOAパーティション。

user

デプロイメントに使用するユーザー名。

password

デプロイメントに使用するパスワード。


パラメータを指定する手順:

  • コマンドラインで、例に示しているように-Dパラメータ=の形式を使用します(コマンド全体を1行で入力するように注意してください)。

    mvn pre-integration-test -DserverURL=http://test.server:7001
                             -DsarLocation=deploy/sca_my-project_rev1.0.sar
                             -Doverwrite=true
                             -DforceDefault=true
                             -Dcomposite.partition=test
                             -Duser=weblogic
                             -Dpassword=welcome1
    
  • プロジェクトPOMファイルで、プロジェクトPOMのパラメータ・セクションにすでに指定されているデフォルトに対して置換値を指定します。

    <properties>
            <!-- these parameters are used by the compile goal -->
            <scac.input.dir>${project.basedir}/SOA/</scac.input.dir>
            <scac.output.dir>${project.basedir}/target</scac.output.dir>
            <scac.input>${scac.input.dir}/composite.xml</scac.input>
            <scac.output>${scac.output.dir}/out.xml</scac.output>
            <scac.error>${scac.output.dir}/error.txt</scac.error>
            <scac.displayLevel>1</scac.displayLevel>
            <!-- if you are using a config plan, uncomment the following line and update to point
                 to your config plan -->
            <!--<configplan>${scac.input.dir}/configplan.xml</configplan>-->
            <!-- these parameters are used by the deploy and undeploy goals -->
            <composite.name>${project.artifactId}</composite.name>
            <composite.revision>1.0</composite.revision>
            <composite.partition>default</composite.partition>
            <serverUrl>${oracleServerUrl}</serverUrl>
            <user>${oracleUsername}</user>
            <password>${oraclePassword}</password>
            <overwrite>true</overwrite>
            <forceDefault>true</forceDefault>
            <regenerateRulebase>false</regenerateRulebase>
            <keepInstancesOnRedeploy>false</keepInstancesOnRedeploy>
            <!-- these parameters are used by the test goal -->
            <!-- if you are using the sca-test (test) goal, you need to uncomment 
                 the following line and point it to your jndi.properties file. -->
           <!--<jndi.properties.input>${basedir}/jndi.properties</jndi.properties.input>-->
            <scatest.result>${scac.output.dir}/testResult</scatest.result>
            <!--  input is the name of the composite to run test suties against -->
            <input>project12</input>
    </properties>
    

13.8 Mavenを使用したSCAテスト・スイートの実行

Mavenビルド・プロセスの一部としてSCAテスト・スイートを実行する手順:

  1. SOAコンポジット・プロジェクト・ディレクトリにjndi.propertiesファイルを(たとえば、ANTからSCAテスト・スイートを実行する場合のように)作成します。このファイルには次の情報が含まれます。

    java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
    java.naming.provider.url=t3://test.server:7003/soa-infra
    java.naming.security.principal=weblogic
    java.naming.security.credentials=welcome1
    dedicated.connection=true
    dedicated.rmicontext=true
    
  2. SOAコンポジット・プロジェクトPOM (pom.xml)のjndi.propertiesエントリを非コメント化し、今作成したファイルを指していることを確認します。

  3. SOA Mavenプラグインは、統合テスト・フェーズでSCAテストを実行します。コンポジットをコンパイルしてパッケージするには、サーバーへデプロイしてSCAテストを実行し、次のコマンドを実行します。

    mvn verify
    

13.9 SOAコンポジットのデプロイについての考慮事項

SOAコンポジットを作成する際に、WebLogicデータ・ソース、JMSキューおよびトピックなどの新規リソースを使用する場合があります。このようなリソースは、コンポジットをデプロイするランタイム環境には存在しない可能性があります。これは、コンポジットのどのインスタンス(たとえば、テスト・ケースを実行する)も正常に実行できない可能性があることを意味します。

WebLogicコンソールを通じてこのようなリソースを手動で作成できる可能性があるため、自動ビルド環境では適切ではありません。この問題に対処するには、ビルドの一部としてWLSTスクリプトを作成および実行することで、必要なすべてのリソースがランタイム環境で作成および構成できることを保証できます。weblogic-maven-plugin:wlstゴールを使用して、ビルドの適切なタイミングでWLSTスクリプトを実行することもできます。

データ・ソースを作成するWLSTスクリプトの例を次に示します。misc/create-datasource.pyとしてプロジェクトに追加することもできます。

# Copyright 2012, 2014 Oracle Corporation.
# All Rights Reserved.
#
# Provided on an 'as is' basis, without warranties or conditions of any kind,
# either express or implied, including, without limitation, any warranties or
# conditions of title, non-infringement, merchantability, or fitness for a
# particular purpose. You are solely responsible for determining the
# appropriateness of using and assume any risks. You may not redistribute.
#
# This WLST script can be used as part of a continuous integration build process
# before deploying a SCA composite, to create any necessary Java EE data sources
# on the WebLogic Server.
#
# In addition to creating the data source, this script will also update the
# resource adapter and redeploy it.

import time

#
# These are the parameters that you need to edit before running this script
#

# admin server url
url                  = 't3://localhost:7001'
# username to connect to the admin server
username             = 'weblogic'
# password to connect to the admin server
password             = 'welcome1'
# the name for the EIS - as defined in the DB Adapter wizard in JDEV
eisName              = 'eis/db/myDS'
# the admin or managed server to target where the DbAdapter is deployed
serverName           = 'soa_server1'
# the name for the data source
dsName               = 'myDS'
# the JNDI name for the data source
jndiName             = 'jbdc/myDS'
# the database url for the data source
dbUrl                = 'jdbc:oracle:thin:@localhost:1521:orcl'
# the database user
dbUser               = 'mark'
# the database password
dbPassword           = 'welcome1'
# the database driver to use
dbDriver             = 'oracle.jdbc.xa.client.OracleXADataSource'
# the host where node manager is running
nmHost               = 'localhost'
# the port to connect to node manager (5556 is default for plain mode)
nmPort               = '5556'
# the user to connect to node manager
nmUser               = 'weblogic'
# the password to connection to node manager
nmPassword           = 'welcome1'
# the name of the weblogic domain
domain               = 'base_domain'

# don't change these ones
uniqueString         = ''
appName = 'DbAdapter'
moduleOverrideName   = appName+'.rar'
moduleDescriptorName = 'META-INF/weblogic-ra.xml'

#
# method definitions
#
def makeDeploymentPlanVariable(wlstPlan, name, value, xpath, origin='planbased'):
  """Create a varaible in the Plan.
  This method is used to create the variables that are needed in the Plan in order
  to add an entry for the outbound connection pool for the new data source.
  """

  try:
    variableAssignment = wlstPlan.createVariableAssignment(name, moduleOverrideName, moduleDescriptorName)
    variableAssignment.setXpath(xpath)
    variableAssignment.setOrigin(origin)
    wlstPlan.createVariable(name, value)

  except:
    print('--> was not able to create deployment plan variables successfully')

def main():

  print ' Copyright 2012, 2014 Oracle Corporation. '
  print ' All Rights Reserved. '
  print ''
  print ' Provided on an ''as is'' basis, without warranties or conditions of any kind, '
  print ' either express or implied, including, without limitation, any warranties or '
  print ' conditions of title, non-infringement, merchantability, or fitness for a '
  print ' particular purpose. You are solely responsible for determining the '
  print ' appropriateness of using and assume any risks. You may not redistribute.'
  print ''
  print ' This WLST script can be used as part of a continuous integration build process'
  print ' before deploying a SCA composite, to create any necessary Java EE data sources'
  print ' on the WebLogic Server.'
  print ''
  print ' In addition to creating the data source, this script will also update the '
  print ' resource adapter and redeploy it.'
  print ''
  print ' !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!'
  print ''
  print ' This script will make changes to your WebLogic domain.  Make sure you know '
  print ' what you are doing.  There is no support for this script.  If something bad '
  print ' happens, you are on your own!  You have been warned.'

  #
  # generate a unique string to use in the names
  #

  uniqueString = str(int(time.time()))


  #
  # Create a JDBC Data Source.
  #
  try:
    print('--> about to connect to weblogic')
    connect(username, password, url)
    print('--> about to create a data source ' + dsName)
    edit()
    startEdit()
    cmo.createJDBCSystemResource(dsName)
    cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName)
    cmo.setName(dsName)
    cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDataSourceParams/' + dsName)
    set('JNDINames',jarray.array([String(jndiName)], String))
    cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName)
    cmo.setUrl(dbUrl)
    cmo.setDriverName(dbDriver)
    cmo.setPassword(dbPassword)
    cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCConnectionPoolParams/' + dsName)
    cmo.setTestTableName('DUAL')
    cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName)
    cmo.createProperty('user')
    cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName + '/Properties/user')
    cmo.setValue(dbUser)
    cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDataSourceParams/' + dsName)
    cmo.setGlobalTransactionsProtocol('TwoPhaseCommit')
    cd('/JDBCSystemResources/' + dsName)
    set('Targets',jarray.array([ObjectName('com.bea:Name=' + serverName + ',Type=Server')], ObjectName))
    save()
    print('--> activating changes')
    activate()
    print('--> done')

#
# update the deployment plan
#
    print('--> about to update the deployment plan for the DbAdapter')
    startEdit()
    planPath = get('/AppDeployments/DbAdapter/PlanPath')
    appPath = get('/AppDeployments/DbAdapter/SourcePath')
    print('--> Using plan ' + planPath)
    plan = loadApplication(appPath, planPath)
    print('--> adding variables to plan')
    makeDeploymentPlanVariable(plan, 'ConnectionInstance_eis/DB/' + dsName + '_JNDIName_' + uniqueString, eisName, '/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="' + eisName + '"]/jndi-name')
    makeDeploymentPlanVariable(plan, 'ConfigProperty_xADataSourceName_Value_' + uniqueString, eisName, '/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="' + eisName + '"]/connection-properties/properties/property/[name="xADataSourceName"]/value')
    print('--> saving plan')
    plan.save();
    save();
    print('--> activating changes')
    activate(block='true');
    cd('/AppDeployments/DbAdapter/Targets');
    print('--> redeploying the DbAdapter')
    redeploy(appName, planPath, targets=cmo.getTargets());
    print('--> done')

  except:
    print('--> something went wrong, bailing out')
    stopEdit('y')
    raise SystemExit

  #
  # disconnect from the admin server
  #

  print('--> disconnecting from admin server now')
  disconnect()

#
#  this is the main entry point

main()

ビルドのpre-integration-testフェーズにおいてこのスクリプトを実行するには、SOAプロジェクトPOMに次のようなpluginセクションを含めます。

<plugin>
  <groupId>com.oracle.weblogic</groupId>
  <artifactId>weblogic-maven-plugin</artifactId>
  <version>12.2.1-0-0</version>
  <executions>
    <execution>
      <id>wlst-create-datasource</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>wlst</goal>
      </goals>
      <configuration>
        <middlewareHome>c:/wls1212</middlewareHome>
        <fileName>${project.basedir}/misc/create-datasource.py</fileName>
      </configuration>
    </execution>
  </executions>
</plugin>

13.10 ADFヒューマン・タスク・ユーザー・インタフェース・プロジェクトについての考慮事項

JDeveloperでSOAアプリケーションにADFヒューマン・タスク・ユーザー・インタフェース・プロジェクトを追加すると、アプリケーション・レベルPOMが更新されてモジュールとして新規ADFプロジェクトが追加され、<build>セクションにいくつかの<plugin>定義が追加されてADFプロジェクトがビルドされます。

ADFヒューマン・タスク・プロジェクトを作成すると、Jdeveloperのプロジェクト用にいくつかのJDeveloperライブラリがビルド・パスに追加されます。また、JDeveloperはローカルMavenリポジトリにあるそれらのライブラリに一致するPOMがあるかどうかを確認します。ない場合、それらのPOMを作成します。これらの新規ライブラリPOMは(必要に応じて)MavenのgroupId = com.oracle.adf.libraryを使用して作成されます。

JDeveloperによって使用されるMavenリポジトリはTools/Preferences/Maven/Repositoryによって指定することができることに注意してください。$HOME/.m2にあるデフォルト・リポジトリではない場合があります。

次の点に注意してください。

  • このようなADFヒューマン・タスク・プロジェクトを、他のMavenリポジトリ(ローカルまたはリモート)を使用している別のマシン(たとえば、ビルド・サーバー)でビルドする場合、これらの新規POMをそのMavenリポジトリにコピーします。

  • ADFプロジェクトをEARファイルにパッケージするために使用されるojdeploy Mavenプラグインは、JDeveloperのOracleホームが存在することに依存するため、ADFヒューマン・タスク・プロジェクトをビルドするサーバーはJDeveloperインストールに対するアクセス権が必要です。

  • EARファイルをアプリケーション・ビルドの一部としてデプロイする場合、ビルドの適切なフェーズ(pre-integration-testが最も可能性が高い)のweblogic-maven-plugin:deployゴールを呼び出すように、新規 <plugin>セクションを追加する必要があります。EARファイルはADFプロジェクト・ディレクトリではなく、appHome/deployディレクトリにあることに注意してください。これは、単一EARファイルに複数のADFヒューマン・タスク・プロジェクトWARファイルが含まれる可能性があるためです。

  • デプロイメントをSOAサーバーに行う場合(次の例に示すように)、SOAまたはBPMワークスペース・アプリケーションが見つけられるようにADF URIは自動的に適切なMBeanに登録されます。

    <plugin>
      <groupId>com.oracle.weblogic</groupId>
      <artifactId>weblogic-maven-plugin</artifactId>
      <version>12.2.1-0-0</version>
      <executions>
        <execution>
          <goals>
            <goal>deploy</goal>
          </goals>
          <phase>pre-integration-test</phase>
          <configuration>
            <adminurl>t3://localhost:7001</adminurl>
            <user>weblogic</user> 
            <password>welcome1</password>
            <source>${project.basedir}/deploy/adf1.ear</source>
            <verbose>true</verbose> 
            <name>${project.build.finalName}</name>
            <targets>soa_server1</targets>
          </configuration>
        </execution>
      </executions>
    </plugin>
    
  • EARファイルをデプロイできるようにするには、appHome/.adf/META-INF/adf-config.xmlに適切なMDS構成を設定する必要があります。これは13.6項で示しているように、データベース・ベースのMDSストアの可能性が高いです。ビルドが正しく動作し、デプロイされたアプリケーションが正しく機能するように、このデータベースはビルド・サーバーおよびランタイム・サーバーの両方からアクセスできる必要があります。これは、本番環境では現実的でない可能性があるため、ADFプロジェクト用に複数のデプロイメント・プロファイルを定義する必要がある場合があります。

13.11 SOAプロジェクトのアンデプロイ

undeployゴールを使用してコンポジットをアンデプロイすることができ、このゴールには次のパラメータがあります。

表13-7 undeployゴールのパラメータ

パラメータ 目的
composite.name

アンデプロイするコンポジットの名前。

composite.revision

アンデプロイするコンポジットのリビジョン。

composite.partition

アンデプロイするコンポジットのあるパーティション。

user

アンデプロイメントに使用するユーザー名。

password

アンデプロイメントに使用するパスワード。


SARファイルをアンデプロイするには、環境に適した値を指定して次のコマンドを実行します。このコマンドは1行で入力します。

mvn com.oracle.soa.plugin:oracle-soa-plugin:undeploy
    -DserverURL=http://test.server:7001
    -Dcomposite.name=my-project
    -Dcomposite.revision=1.0
    -Dcomposite.partition=test
    -Duser=weblogic
    -Dpassword=welcome1

SOAアプリケーションではなく、SOAプロジェクトに対してundeployゴールを実行する必要があります。

13.12 SOA親POMについての考慮事項

SOA親POMはカスタマイズのために提供されています。Maven座標はcom.oracle.soa:sar-common:12.2.1-0-0です。テスト・サーバーのURL、ユーザー名およびパスワードなどの環境全体のデフォルトを設定するには、SOA親POMに指定することもできます。SOA原型から作成されたプロジェクトは、上書きしないかぎりSOA親POMの値を自動的に使用します。

SOA親POMには、次のプロパティがあります。

<properties>
  <!--
  These two properties are defined in com.oracle.maven:oracle-common, you can overwrite them here.
  Users who do not want to add plain text password in their properties or pom
  file, should use the userConfigFile and userKeyFile options for deployment.
  <oracleUsername>USERNAME</oracleUsername>
  <oraclePassword>PASSWORD</oraclePassword>
  -->

  <!-- Change the default values according to your environment -->
  <oracleServerUrl>http://localhost:8001</oracleServerUrl>
  <oracleServerName>soa_server1</oracleServerName>
  <oracleMiddlewareHome>/home/myhome/Oracle/Middleware</oracleMiddlewareHome>
</properties>

このようなプロパティを設定したり、SOAプロジェクトで有効にする別のプロパティを定義したりすることもできます。SOAプロジェクトPOMでプロパティを参照するには、たとえば前述の例では$oracleServerNamesoa_server1に置換されるような構文$propertyNameを使用します。