![]() ![]() ![]() ![]() |
このセクションでは、Workshop for WebLogic 用の Oracle Service Bus プラグインでのタスクの実行方法を示します。
他の種類のリソースの操作については、次の情報を参照してください。
リソースは、組み込みのエディタを使用して編集します。たとえば、プロキシ サービスを編集するには、プロジェクト エクスプローラでサービスの名前をダブルクリックします。
リソース ファイルをテキスト ファイルや XML ファイルとして手動で編集しないでください。予測不可能な動作が発生するおそれがあります。リソースの以下の種類は手動で編集しないでください。
Oracle Service Bus パースペクティブで [ファイル|新規|Oracle Service Bus コンフィグレーション プロジェクト] を選択して、[新しい Oracle Service Bus コンフィグレーション プロジェクト] ウィザードを表示します。 適切な情報を入力します。
Oracle Service Bus パースペクティブで [ファイル|新規|Oracle Service Bus プロジェクト] を選択して、[新しい Oracle Service Bus プロジェクト] ウィザードを表示します。適切な情報を入力します。
注意 : | Oracle Service Bus プロジェクトは、Oracle Service Bus コンフィグレーション プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|新規|カスタム リソース] を選択して、
[新しいカスタム リソース] ウィザードを表示します。適切な情報を入力します。
注意 : | カスタム リソースは、Oracle Service Bus プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|新規|JNDI プロバイダ] を選択し、
[新しい JNDI プロバイダ リソース] ウィザードを表示します。適切な情報を入力します。
注意 : | JNDI プロバイダ リソースは、Oracle Service Bus コンフィグレーション プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|新規|プロキシ サーバ] を選択して、[新しいプロキシ サーバ リソース] ウィザードを表示します。「プロキシ サーバ」で説明されている情報を必要に応じて入力します。
注意 : | プロキシ サーバ リソースは、Oracle Service Bus コンフィグレーション プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|新規|MFL] を選択して、新しいメッセージ フォーマット ファイルを表示します。 適切な情報を入力します。
注意 : | メッセージ フォーマット ファイルは、Oracle Service Bus プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|エクスポート] を選択して [エクスポート] ウィザードを表示します。以下を参照してください。
この節では、Oracle Service Bus コンフィグレーションをエクスポートするためのスクリプトおよびコマンド ライン オプションについて説明します。
始める前に、以下の前提条件とガイドラインを参照してください。
Ant ビルド ファイルを使用して Oracle Service Bus コンフィグレーションをエクスポートできます。以下にプロパティ ファイルを持つビルド ファイルのサンプルを示します。
<project name="ConfigExport">
<property file="./build.properties"/>
<property name="eclipse.home"
value="${bea.home}/tools/eclipse_pkgs/2.0/eclipse_3.3.2/eclipse"/>
<property name="weblogic.home" value= "${bea.home}/wlserver_10.3"/>
<property name="metadata.dir" value="${workspace.dir}/.metadata"/>
<target name="export">
<available file="${metadata.dir}" type="dir"
property="metadata.dir.exists"/>
<java dir="${eclipse.home}"
jar="${eclipse.home}/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20080118.jar"
fork="true"
failonerror="true"
maxmemory="768m">
<arg line="-data ${workspace.dir}"/>
<arg line="-application com.bea.alsb.core.ConfigExport"/>
<arg line="-configProject ${config.project}"/>
<arg line="-configJar ${config.jar}"/>
<sysproperty key="weblogic.home" value="${weblogic.home}"/>
</java>
<antcall target="deleteMetadata"/>
</target>
<target name="deleteMetadata" unless="metadata.dir.exists">
<delete failonerror="false" includeemptydirs="true"
dir="${metadata.dir}"/>
</target>
</project>
bea.home=c:/bea
workspace.dir=c:/bea/user_projects/workspaces/default
config.project="OSB Configuration"
config.jar=c:/sbconfig.jar
「ant export」を実行すると、「OSB Configuration」プロジェクトがデフォルトのワークスペースから c:\sbconfig.jar にエクスポートされます。
WebLogic Scripting Tool (WLST) を使用して Oracle Service Bus コンフィグレーションをエクスポートできます。以下に、WLST エクスポートで使用されるサンプル ファイルを示します。Ant ビルド ファイルと Python スクリプトでは、プロパティ ファイルとカスタマイズ ファイルを使用します。
また、次に示す Ant ビルド ファイルを使用して、Oracle Service Bus コンフィグレーションをインポートすることもできます。
<project default="export">
<property environment="env"/>
<property name="domain.export.script" value="export.py"/>
<property name="domain.import.script" value="import.py"/>
<property name="export.config.file" value="export.properties"/>
<property name="import.config.file" value="import.properties"/>
<property name="build" value="build"/>
<property name="dist" value="dist"/>
<property name="bea.home" value="${env.BEA_HOME}"/>
<path id="class.path">
<pathelement
path="${bea.home}/wlserver_10.3/server/lib/weblogic.jar"/>
<pathelement path="${bea.home}/osb_10.3/lib/sb-kernel-api.jar"/>
<pathelement
path="${bea.home}/modules/com.bea.common.configfwk_1.2.0.0.jar"/>
</path>
<taskdef name="wlst"
classname="weblogic.ant.taskdefs.management.WLSTTask"/>
<target name="export">
<echo message="exportscript: ${domain.export.script}"/>
<java classname="weblogic.WLST" fork="true">
<arg line="${domain.export.script} ${export.config.file}"/>
<classpath refid="class.path"/>
</java>
</target>
<target name="import">
<echo message="importscript: ${domain.import.script}"/>
<java classname="weblogic.WLST" fork="true">
<arg line="${domain.import.script} ${import.config.file}"/>
<classpath refid="class.path"/>
</java>
</target>
<target name="clean">
<delete dir="${dist}"/>
<delete dir="${build}"/>
<mkdir dir="${dist}"/>
<mkdir dir="${build}"/>
</target>
</project>
from java.io import FileInputStream
from java.io import FileOutputStream
from java.util import ArrayList
from java.util import Collections
from com.bea.wli.sb.util import EnvValueTypes
from com.bea.wli.config.env import EnvValueQuery;
from com.bea.wli.config import Ref
from com.bea.wli.config.customization import Customization
from com.bea.wli.config.customization import FindAndReplaceCustomization
import sys
#====================================================================
# コンフィグレーション ファイルからプロパティをロードするユーティリティ機能
#=========================================================================
def exportAll(exportConfigFile):
try:
print "Loading export config from :", exportConfigFile
exportConfigProp = loadProps(exportConfigFile)
adminUrl = exportConfigProp.get("adminUrl")
exportUser = exportConfigProp.get("exportUser")
exportPasswd = exportConfigProp.get("exportPassword")
exportJar = exportConfigProp.get("exportJar")
customFile = exportConfigProp.get("customizationFile")
passphrase = exportConfigProp.get("passphrase")
project = exportConfigProp.get("project")
connectToServer(exportUser, exportPasswd, adminUrl)
ALSBConfigurationMBean = findService("ALSBConfiguration", "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
print "ALSBConfiguration MBean found"
print project
if project == None :
ref = Ref.DOMAIN
collection = Collections.singleton(ref)
if passphrase == None :
print "Export the config"
theBytes = ALSBConfigurationMBean.export(collection, true,
None)
else :
print "Export and encrypt the config"
theBytes = ALSBConfigurationMBean.export(collection, true,
passphrase)
else :
ref = Ref.makeProjectRef(project);
print "Export the project", project
collection = Collections.singleton(ref)
theBytes = ALSBConfigurationMBean.exportProjects(collection,
passphrase)
aFile = File(exportJar)
out = FileOutputStream(aFile)
out.write(theBytes)
out.close()
print "ALSB Configuration file: "+ exportJar + " has been exported"
if customFile != None:
print collection
query = EnvValueQuery(None,
Collections.singleton(EnvValueTypes.WORK_MANAGER),
collection, false, None, false)
customEnv = FindAndReplaceCustomization('Set the right Work
Manager', query, 'Production System Work Manager')
print 'EnvValueCustomization created'
customList = ArrayList()
customList.add(customEnv)
print customList
aFile = File(customFile)
out = FileOutputStream(aFile)
Customization.toXML(customList, out)
out.close()
print "ALSB Dummy Customization file: "+ customFile + " has been
created"
except:
raise
#====================================================================
# コンフィグレーション ファイルからプロパティをロードするユーティリティ機能
#=========================================================================
def loadProps(configPropFile):
propInputStream = FileInputStream(configPropFile)
configProps = Properties()
configProps.load(propInputStream)
return configProps
#====================================================================
# 管理サーバに接続する
#=========================================================================
def connectToServer(username, password, url):
connect(username, password, url)
domainRuntime()
# EXPORT スクリプト init
try:
exportAll(sys.argv[1])
except:
print "Unexpected error: ", sys.exc_info()[0]
dumpStack()
raise
##################################################################
# OSB 管理セキュリティ コンフィグレーション #
##################################################################
adminUrl=t3://localhost:7021
exportUser=weblogic
exportPassword=weblogic
##################################################################
# エクスポートする OSB JAR #
##################################################################
exportJar=export.jar
##################################################################
# 省略可能なパスフレーズとプロジェクト名。 #
# プロジェクトを指定する場合、スクリプトによってプロジェクトに #
# 含まれるリソースがすべてエクスポートされる。 プロジェクトを指定しない場合、 #
# スクリプトによってコンフィグレーション全体がエクスポートされる。 #
##################################################################
passphrase=osb
project=default
##################################################################
# ダミー カスタマイズ ファイルの作成 (省略可能) #
##################################################################
customizationFile=customize.xml
<?xml version="1.0" encoding="UTF-8"?>
<cus:Customizations xmlns:cus="http://www.bea.com/wli/config/customizations" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xt="http://www.bea.com/wli/config/xmltypes">
<cus:customization xsi:type="cus:FindAndReplaceCustomizationType">
<cus:description>Set the right Work Manager</cus:description>
<cus:query>
<xt:envValueTypes>Work Manager</xt:envValueTypes>
<xt:refsToSearch xsi:type="xt:LocationRefType">
<xt:type>Project</xt:type>
<xt:path>default</xt:path>
</xt:refsToSearch>
<xt:includeOnlyModifiedResources>false</xt:includeOnlyModifiedResources>
<xt:searchString xsi:nil="true"/>
<xt:isCompleteMatch>false</xt:isCompleteMatch>
</cus:query>
<cus:replacement>Production System Work Manager</cus:replacement>
</cus:customization>
</cus:Customizations>
Oracle Service Bus では、以下のコマンド ライン引数を使用してコンフィグレーションおよび起動できる ConfigExport クラスが提供されます。コマンド ライン エクスポートは、より高い柔軟性を必要とする上級ユーザを対象とします。
java -Xms384m -Xmx768m -Dweblogic.home=<weblogic.dir>
-jar <eclipse.dir>/plugins/org.eclipse.equinox.launcher_<launcher.version>.jar
-data <workspace.dir> -application com.bea.alsb.core.ConfigExport
>-configProject <project.name> -configJar <config.jar>
以下に、コマンド ラインから Oracle Service Bus コンフィグレーションをエクスポートするサンプルを示します。
java -Xms384m -Xmx768m -Dweblogic.home=c:/bea/wlserver_10.3
-jar c:/bea/tools/eclipse_pkgs/2.0/eclipse_3.3.2/eclipse/plugins/org.eclipse.
equinox.launcher_1.0.1.R33x_v20080118.jar
-data c:/bea/user_projects/workspaces/default
-application com.bea.alsb.core.ConfigExport -configProject “OSB Configuration” -configJar c:/sbconfig.jar
Oracle Service Bus パースペクティブで [ファイル|インポート] を選択して [インポート] ウィザードを表示します。以下を参照してください。
スクリプトやコマンド ライン オプションを使用して Oracle Service Bus コンフィグレーションをインポートできます。インポートに関するガイドラインについては、「Ant を使用したコンフィグレーションのエクスポート」と「コマンド ラインを使用したコンフィグレーションのエクスポート」の例を参照してください。
以下の節では、WebLogic Scripting Tool (WLST) を使用して Oracle Service Bus コンフィグレーションをインポートする例を示します。
WebLogic Scripting Tool (WLST) を使用して Oracle Service Bus コンフィグレーションをインポートできます。以下に、WLST インポートで使用されるサンプル ファイルを示します。Ant ビルド ファイルおよび Python スクリプトでは、プロパティ ファイルとカスタマイズ ファイルを使用します。
「WLST を使用したコンフィグレーションのエクスポート」と同じ、Ant ビルドファイル例を使用します。
from java.util import HashMap
from java.util import HashSet
from java.util import ArrayList
from java.io import FileInputStream
from com.bea.wli.sb.util import Refs
from com.bea.wli.config.customization import Customization
from com.bea.wli.sb.management.importexport import ALSBImportOperation
import sys
#====================================================================
# プロジェクト コンフィグレーションとリソースを ALSB ドメインにデプロイ
# するエントリ関数
#====================================================================
def importToALSBDomain(importConfigFile):
try:
SessionMBean = None
print 'Loading Deployment config from :', importConfigFile
exportConfigProp = loadProps(importConfigFile)
adminUrl = exportConfigProp.get("adminUrl")
importUser = exportConfigProp.get("importUser")
importPassword = exportConfigProp.get("importPassword")
importJar = exportConfigProp.get("importJar")
customFile = exportConfigProp.get("customizationFile")
passphrase = exportConfigProp.get("passphrase")
project = exportConfigProp.get("project")
connectToServer(importUser, importPassword, adminUrl)
print 'Attempting to import :', importJar, "on ALSB Admin Server listening on :", adminUrl
theBytes = readBinaryFile(importJar)
print 'Read file', importJar
sessionName = createSessionName()
print 'Created session', sessionName
SessionMBean = getSessionManagementMBean(sessionName)
print 'SessionMBean started session'
ALSBConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
print "ALSBConfiguration MBean found", ALSBConfigurationMBean
ALSBConfigurationMBean.uploadJarFile(theBytes)
print 'Jar Uploaded'
if project == None:
print 'No project specified, additive deployment performed'
alsbJarInfo = ALSBConfigurationMBean.getImportJarInfo()
alsbImportPlan = alsbJarInfo.getDefaultImportPlan()
alsbImportPlan.setPassphrase(passphrase)
alsbImportPlan.setPreserveExistingEnvValues(true)
importResult = ALSBConfigurationMBean.importUploaded(alsbImportPlan)
SessionMBean.activateSession(sessionName, "Complete test import with customization using wlst")
else:
print 'ALSB project', project, 'will get overlaid'
alsbJarInfo = ALSBConfigurationMBean.getImportJarInfo()
alsbImportPlan = alsbJarInfo.getDefaultImportPlan()
alsbImportPlan.setPassphrase(passphrase)
operationMap=HashMap()
operationMap = alsbImportPlan.getOperations()
print 'Default importPlan'
printOpMap(operationMap)
set = operationMap.entrySet()
alsbImportPlan.setPreserveExistingEnvValues(true)
#ブール値
abort = false
#作成される参照のリスト
createdRef = ArrayList()
for entry in set:
ref = entry.getKey()
op = entry.getValue()
#リソース タイプに基づいて異なるロジックを設定する
type = ref.getTypeId
if type == Refs.SERVICE_ACCOUNT_TYPE or type == Refs.SERVICE_PROVIDER_TYPE:
if op.getOperation() == ALSBImportOperation.Operation.Create:
print 'Unable to import a service account or a service provider on a target system', ref
abort = true
elif op.getOperation() == ALSBImportOperation.Operation.Create:
#作成されたリソースのリストを保持する
createdRef.add(ref)
if abort == true :
print 'This jar must be imported manually to resolve the service account and service provider dependencies'
SessionMBean.discardSession(sessionName)
raise
print 'Modified importPlan'
printOpMap(operationMap)
importResult = ALSBConfigurationMBean.importUploaded(alsbImportPlan)
printDiagMap(importResult.getImportDiagnostics())
if importResult.getFailed().isEmpty() == false:
print 'One or more resources could not be imported properly'
raise
#カスタマイズ ファイルが指定される場合、カスタマイズする
#作成されたリソースにのみ影響を与える
if customFile != None :
print 'Loading customization File', customFile
print 'Customization applied to the created resources only', createdRef
iStream = FileInputStream(customFile)
customizationList = Customization.fromXML(iStream)
filteredCustomizationList = ArrayList()
setRef = HashSet(createdRef)
# すべてのカスタマイズをフィルタし、customizationList でのカスタマイズ対象
を、作成されるリソースまで絞り込む
print customization
newcustomization = customization.clone(setRef)
filteredCustomizationList.add(newcustomization)
ALSBConfigurationMBean.customize(filteredCustomizationList)
SessionMBean.activateSession(sessionName, "Complete test import with customization using wlst")
print "Deployment of : " + importJar + " successful"
except:
print "Unexpected error:", sys.exc_info()[0]
if SessionMBean != None:
SessionMBean.discardSession(sessionName)
raise
#===================================================================
# 操作のリストを出力するユーティリティ機能
#===================================================================
def printOpMap(map):
set = map.entrySet()
for entry in set:
op = entry.getValue()
print op.getOperation(),
ref = entry.getKey()
print ref
#===================================================================
# 診断を出力するユーティリティ機能
#===================================================================
def printDiagMap(map):
set = map.entrySet()
for entry in set:
diag = entry.getValue().toString()
print diag
#===================================================================
# コンフィグレーション ファイルからプロパティをロードするユーティリティ機能
#===================================================================
def loadProps(configPropFile):
propInputStream = FileInputStream(configPropFile)
configProps = Properties()
configProps.load(propInputStream)
return configProps
#===================================================================
# 管理サーバに接続する
#===================================================================
def connectToServer(username, password, url):
connect(username, password, url)
domainRuntime()
#===================================================================
# バイナリ ファイルを読み込むユーティリティ機能
#===================================================================
def readBinaryFile(fileName):
file = open(fileName, 'rb')
bytes = file.read()
return bytes
#===================================================================
# 任意のセッション名を作成するユーティリティ機能
#===================================================================
def createSessionName():
sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
return sessionName
#===================================================================
# セッション MBean をロードするユーティリティ機能
#===================================================================
def getSessionManagementMBean(sessionName):
SessionMBean = findService("SessionManagement", "com.bea.wli.sb.management.configuration.SessionManagementMBean")
SessionMBean.createSession(sessionName)
return SessionMBean
# IMPORT スクリプト init
try:
# Service Bus コンフィグレーションのインポート
# argv[1] は、エクスポート コンフィグレーション プロパティ ファイルである。
importToALSBDomain(sys.argv[1])
except:
print "Unexpected error: ", sys.exc_info()[0]
dumpStack()
raise
##################################################################
# OSB 管理セキュリティ コンフィグレーション #
##################################################################
adminUrl=t3://localhost:7021
importUser=weblogic
importPassword=weblogic
##################################################################
# エクスポートする OSB Jar、省略可能なカスタマイズ ファイル #
##################################################################
importJar=export.jar
customizationFile=OSBCustomizationFile.xml
##################################################################
# パスフレーズとプロジェクト名 (省略可能)。 #
# プロジェクトを指定する場合、スクリプトによって、適切な更新、作成や削除で #
# 既存のプロジェクトが上書きされる。 #
# プロジェクトを指定しない場合、スクリプトによって、作成され更新された #
# リソースに対して追加の更新が行われる。 #
##################################################################
passphrase=osb
project=default
<?xml version="1.0" encoding="UTF-8"?>
<cus:Customizations xmlns:cus="http://www.bea.com/wli/config/customizations" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xt="http://www.bea.com/wli/config/xmltypes">
<cus:customization xsi:type="cus:EnvValueCustomizationType">
<cus:description/>
<cus:envValueAssignments>
<xt:envValueType>UDDI Auto Publish</xt:envValueType>
<xt:location xsi:nil="true"/>
<xt:owner>
<xt:type>ProxyService</xt:type>
<xt:path>default/foo</xt:path>
</xt:owner>
<xt:value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema">false</xt:value>
</cus:envValueAssignments>
<cus:envValueAssignments>
<xt:envValueType>Service URI</xt:envValueType>
<xt:location xsi:nil="true"/>
<xt:owner>
<xt:type>ProxyService</xt:type>
<xt:path>default/foo</xt:path>
</xt:owner>
<xt:value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema">/foo/updated</xt:value>
</cus:envValueAssignments>
</cus:customization>
<cus:customization xsi:type="cus:FindAndReplaceCustomizationType">
<cus:description/>
<cus:query>
<xt:resourceTypes>ProxyService</xt:resourceTypes>
<xt:envValueTypes>UDDI Auto Publish</xt:envValueTypes>
<xt:envValueTypes>Service URI</xt:envValueTypes>
<xt:refsToSearch xsi:type="xt:ResourceRefType">
<xt:type>ProxyService</xt:type>
<xt:path>default/foo</xt:path>
</xt:refsToSearch>
<xt:includeOnlyModifiedResources>false</xt:includeOnlyModifiedResources>
<xt:searchString>Search String</xt:searchString>
<xt:isCompleteMatch>false</xt:isCompleteMatch>
</cus:query>
<cus:replacement>Replacement String</cus:replacement>
</cus:customization>
<cus:customization xsi:type="cus:ReferenceCustomizationType">
<cus:description/>
</cus:customization>
</cus:Customizations>
Oracle Service Bus パースペクティブで [ファイル|新規|サーバ] を選択して、[新規サーバー] ウィザードを表示します。
Oracle Service Bus パースペクティブで [ファイル|新規|サービス アカウント] を選択して、
[新しいサービス アカウント リソース] ウィザードを表示します。
注意 : | サービス アカウント リソースは、Oracle Service Bus プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|新規|サービス キー プロバイダ] を選択して、
[新しいサービス キー プロバイダ リソース] ウィザードを表示します。
注意 : | サービス キー プロバイダ リソースは、Oracle Service Bus プロジェクトでのみ作成できます。 |
注意 : | SMTP サーバ リソースは、Oracle Service Bus コンフィグレーション プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|新規|XQuery トランスフォーメーション] を選択して、XQuery/XSLT 式エディタを表示します。適切な情報を入力します。
注意 : | XQuery トランスフォーメーション リソースは、Oracle Service Bus プロジェクトでのみ作成できます。 |
Oracle Service Bus パースペクティブで [ファイル|新規|XSL トランスフォーメーション] を選択して、XPath 式エディタを表示します。
注意 : | XSL トランスフォーメーション リソースは、Oracle Service Bus プロジェクトでのみ作成できます。 |
以下のトピックでは、Oracle Service Bus プラグインでビジネス サービスを作成および操作する方法を説明します。
Oracle Service Bus パースペクティブで [ファイル|新規|ビジネス サービス] を選択して、[新しいビジネス サービス] ウィザードを表示します。以下を参照してください。
注意 : | ビジネス サービスは、Oracle Service Bus プロジェクトでのみ作成できます。 |
既存のプロキシやビジネス サービスからビジネス サービスを生成するには、次の手順に従います。
以下のトピックでは、Oracle Service Bus プラグインでプロキシ サービスを作成および操作する方法を説明します。
Oracle Service Bus パースペクティブで [ファイル|新規|プロキシ サービス] を選択して、[新しいプロキシ サービス] ウィザードを表示します。以下を参照してください。
注意 : | プロキシ サービスは、Oracle Service Bus プロジェクトでのみ作成できます。 |
既存のビジネスやプロキシ サービスからプロキシ サービスを生成するには、以下の手順に従います。
ビジネス サービスから作成したプロキシ サービスでは、ビジネス サービスのルート ノードが自動的にメッセージ フローに含まれます。
次のトピックでは、Oracle Service Bus プラグインでアラート送り先を作成および操作する方法を説明します。
注意 : | アラート送り先は、Oracle Service Bus プロバイダでのみ作成できます。 |
以下のトピックでは、プロキシ サービス メッセージ フローに対してノードとアクションを追加およびコンフィグレーションする方法について説明します。
プロキシ サービスを作成する場合、メッセージ フローはデフォルトで開始ノードが空の状態で作成されます。メッセージ フローを構築するプロセスは、以下の一般的なパターンに従います。
あるいは、メッセージ フロー エディタでノードまたはアクションを右クリックして、その場所に挿入できるノードおよびアクションのメニューを表示することもできます。このメニューには、以下の 1 つまたは複数の項目が表示されます。
アラート送り先にアラートを送信するには、アラート アクションを使用して、パイプラインのメッセージ コンテキストに基づいてアラートを生成します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
XQuery 式の結果をコンテキスト変数に割り当てるには、割り当てアクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
条件付きブランチ ノードは、XPath 条件が返す結果に基づいて、考えられる複数のパスの中の 1 つのみに沿ってメッセージ処理を進める指定を行うために使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
削除アクションは、コンテキスト変数や、XPath 式で指定されたノードのセットの削除に使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
XQuery 式によって指定されたサービスに対してメッセージをパブリッシュするには、動的パブリッシュ アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
動的ルーティング アクションは、XQuery リソースで入手できるルーティング情報に基づいて、メッセージのルートを割り当てるために使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
エラー·ハンドラを使用して、メッセージ·フロー内の指定の場所でエラーが発生した場合の処理を指定します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
For-Each アクションは、一連の値を反復処理してアクションのブロックを実行するために使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
XQuery 式のブール結果に基づき、1 つまたは複数のアクションを条件付きで実行するには、If-Then アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
XPath 式で選択したノードを基準に、指定した位置に XQuery 式の結果を挿入するには、挿入アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
メッセージ フローから Java メソッド、または EJB ビジネス サービスを呼び出すには、Java コールアウト アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
Java コールアウト アクションをコンフィグレーションするには
ログに記録するメッセージを作成し、ログに使用する一連の属性を定義するには、ログ アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
MFL (メッセージ フォーマット言語) 変換アクションを使用して、メッセージ パイプライン内でメッセージ コンテンツを XML と XML 以外の形式との間で変換します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
オペレーション ブランチ ノードを使用すると、WSDL で定義されているオペレーションに基づいてブランチをコンフィグレーションできます。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
オペレーション ブランチ ノードをコンフィグレーションするには
パイプライン ペア ノードは、要求および応答処理の定義に使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
静的に指定された、メッセージの対象サービスを指定し、メッセージのパッケージおよびサービスへの送信方法をコンフィグレーションするには、パブリッシュ アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
ゼロまたはそれ以上の静的に指定されたサービスにメッセージをパブリッシュするには、パブリッシュ テーブル アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
パブリッシュ テーブル アクションをコンフィグレーションするには
注意 : | ステージ エディタでは、ネストは 4 累積レベルまでに制限されています。5 番目のレベルを追加しようとしても、そのネスト アクションは表示されません。累積レベルには、すべてのブランチ アクション (If...Then...条件、パブリッシュ テーブル、ルート テーブル) が含まれます。たとえば、2 レベルの条件と、ルート テーブルを含むパブリッシュ テーブルを使用して、合計 4 レベルにすることができます。ただし、別の条件を追加 (最後のパブリッシュ テーブルに対して) すると、その条件は表示されません。 |
指定したエラー コード (文字列) と説明を使用して例外を発生させるには、エラーを発生させるアクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
XPath 式で選択された要素のコンテンツを変更せずに要素名を変更するには、名前変更アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
XPath 式で指定されたノードまたはノードのコンテンツを置き換えるには、置換アクションを使用します。ノードまたはそのコンテンツは、XQuery 式が返した値で置換されます。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
呼び出し元に即時に返信されるように指定するには、返信アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
プロキシ サービスのメッセージ レポートを有効にするには、レポート アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
ルート ノードは、ビジネス サービスとの間で要求メッセージおよび応答メッセージのディスパッチの処理に使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
ルーティング アクションを使用して、メッセージの対象サービスを識別し、そのサービスにメッセージがルーティングされる方法をコンフィグレーションします。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
ルーティング オプション アクションは、発信要求のプロパティ (URI、サービス品質、モード、再試行パラメータ、メッセージ優先度) の一部またはすべてを変更するために使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
ルーティング オプション アクションをコンフィグレーションするには
ルーティング テーブルを使用して、単一の XQuery 式の結果に基づいて異なるルートを選択します。ルーティング テーブル アクションは、切り替え式の条件表にラップされた一連のルートを含みます。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
ルーティング テーブル アクションをコンフィグレーションするには
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
サービス コールアウト アクションをコンフィグレーションするには
スキップ アクションを使用して、実行時に現在のステージの実行をスキップし、メッセージ フローの次のステージに処理が進むように指定します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
メッセージ フローのアクションのコンテナとしてステージ ノードを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
メッセージのヘッダの値を設定するには、転送ヘッダ アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
XML スキーマ要素または WSDL リソースに対して、XPath 式で選択した要素を検証するには、検証アクションを使用します。
目的のプロキシ サービスのメッセージ フローを表示します。「プロキシ サービスのメッセージ フローの作成」を参照してください。
MQ 接続は、複数の MQ プロキシ サービスおよびビジネス サービスで再使用できる、共有可能なリソースです。MQ プロキシ サービスとビジネス サービスは、MQ キューにアクセスする前に、MQ キュー マネージャに接続する必要があります。MQ 接続リソースは、MQ キュー マネージャへ接続するための接続要求を行います。
各 MQ 接続リソースには、接続プールがあります。任意の MQ 接続リソースを使用して任意のキュー マネージャへの接続を取得しているすべてのビジネス サービスまたはプロキシ サービスは、そのリソースに対して作成された同じ接続プールを使用します。つまり、同じキュー マネージャを使用している複数のビジネス サービスまたはプロキシ サービスは、接続プールを共有することになります。
Oracle Service Bus MQ 接続リソースとネイティブ MQ 転送の詳細については、『ネイティブ MQ 転送ユーザーズ ガイド』を参照してください。
WebSphere MQ の基礎の詳細については、
http://www.redbooks.ibm.com/redbooks/SG247128/wwhelp/wwhimpl/java/html/wwhelp.htm を参照してください。
Oracle Service Bus では MQ 接続はカスタム リソースとして作成されます。したがって、MQ 接続を追加するには、次のようにカスタム リソースとして作成する必要があります。
注意 : | MQ 接続リソースにスペースを含めないでください。 |
Universal Description, Discovery and Integration (UDDI) レジストリは、企業で Web サービスを共有するために使用されます。UDDI は、企業のビジネス、ビジネス サービス、および公開するサービスの技術的な詳細を分類するためのフレームワークを提供します。
レジストリへサービスをパブリッシュするには、サービス タイプと、レジストリ内でそのサービスを表すデータ構造の知識が必要です。レジストリ エントリには、特定のプロパティが関連付けられ、これらのプロパティ タイプはレジストリの作成時に定義されます。レジストリにサービスをパブリッシュして、他の組織がそのサービスを検出して使用できるようにすることが可能です。Oracle Service Bus で開発されたプロキシ サービスは、UDDI レジストリにパブリッシュできます。Oracle Service Bus は任意の UDDI バージョン 3.0 に適合したレジストリと相互作用します。
『Oracle Service Bus ユーザーズ ガイド』の「UDDI」も参照してください。
注意 : | UDDI レジストリは、Oracle Service Bus コンフィグレーション プロジェクトにのみ追加できます。 |
注意 : | UDDI レジストリは、Oracle Service Bus コンフィグレーション プロジェクトでのみ追加できます。 |
[サービス消費] ダイアログで [UDDI レジストリへのアクセス] を使用する方法のヘルプを参照するには、〔F1〕を押すか、[サービス消費] ダイアログのヘルプ システムで検索してください。
このセクションでは、分割-結合の作成とコンフィグレーションの手順を説明します。以下に、このセクションの主なトピックを示します。
分割-結合は、Oracle Service Bus メッセージ フローの転送型ビジネス サービスによって使用される調停パターンです。分割-結合を使用すると、複数のサービスに同時にメッセージ要求を送信できるので、メッセージ要求を順次送信する場合と比較してパフォーマンスが改善します。分割-結合は、入力メッセージを個別のメッセージに分割し、それらを同時に宛先へルーティングして、応答を 1 つの総合的な返信メッセージに集約することで、この作業を実現します。
Workshop for WebLogic の分割-結合エディタで分割-結合を設計してから、テストとプロダクションのために Oracle Service Bus Console にエクスポートします。
注意 : | Oracle Service Bus Console では、分割-結合は、フロー転送プロトコルを使用してビジネス サービスと関連付けられます。そのため、このドキュメントでは常に「分割-結合」と簡単に呼んでいますが、Workshop for WebLogic において分割-結合は .flow というファイル拡張子を持っています。 |
「分割-結合の設計」で説明されるように、静的な分割-結合と動的な分割-結合の 2 つの分割-結合パターンがあります。
Oracle Service Bus メッセージ フローからビジネス サービスを呼び出す詳細については、Oracle Service Bus Console のヘルプ システムの「プロキシ サービス : メッセージ フロー」を参照してください。
分割-結合を使用して、SOAP ヘッダにメッセージ コンテンツを格納するサービスのパフォーマンスを向上させることができます。 プロキシ サービスは SOAP ヘッダを分割-結合に渡すことができます。そして、分割-結合が呼出しまたは応答として SOAP ヘッダをプロキシとビジネス サービスに渡すことができます。
この機能を有効にするには、分割-結合 WSDL と 分割-結合によって呼び出されるプロキシやビジネス サービスの WSDL に、単一の要求メッセージまたは応答メッセージに本文部分とヘッダ部分を宣言する必要があります。メッセージ部分を WSDL に宣言すると、分割-結合で要求/応答メッセージ変数に SOAP ヘッダ コンテンツを利用できます。
以下に、WSDL でのメッセージとバインディング定義の例を示します。
<wsdl:message name="retrieveCustomerOverviewByIdRequestMessage">
<wsdl:part name="retrieveCustomerOverviewByIdRequest"
element="co:retrieveCustomerOverviewByIdRequest"/>
<wsdl:part name="serviceContext" element="sc:serviceContext"/>
</wsdl:message>
<wsdl:input>
<soap:body use="literal" parts="retrieveCustomerOverviewByIdRequest"/>
<soap:header message="tns:retrieveCustomerOverviewByIdRequestMessage"
part="serviceContext" use="literal"/>
</wsdl:input>
分割-結合には、静的な分割-結合と動的な分割-結合の 2 つのパターンがあります。
静的な分割-結合は、固定した数 (数が不明な場合に対して) のメッセージ要求の作成に使用できます。たとえば、顧客が、インターネット サービス、TV サービス、電話サービスという 3 つの独立したサービスを含むケーブル パッケージの注文を行う場合です。静的な使用例では、3 つの要求すべてを分割したパラレル ブランチで実行できるため、標準的な順次実行と比較して実行時間のパフォーマンスが改善されます。
動的な分割-結合は、数が変化するメッセージ要求の作成に使用できます。たとえば、個別の発注数が変化する注文を小売業者が一括して行う場合です。動的な使用例では、一括注文を解析して発注ごとに分離したメッセージ要求を作成できます。静的な使用例と同様に、これらのメッセージはパラレルに実行できるため、パフォーマンスが改善されます。
分割-結合の初期設定では、以下の作業を行う可能性があります。
すべての分割-結合は WSDL 操作に基づいています。分割-結合を初めて作成する際には、適切な WSDL ファイルを指定し、作成プロセスの一部としてこの操作を選択するように求められます。この WSDL ファイルは、Workshop for WebLogic で作成できます。
すべての分割-結合は、転送型ビジネス サービスによって使用されます。言い換えるとプロキシ サービスによって呼び出されます。ビジネス サービスの作成が終了しなければ、分割-結合のエクスポートやテストを行うことはできません。ビジネス サービスが既に存在している場合は、これを Workshop for WebLogic にインポートすることができます。存在していない場合は Workshop for WebLogic または Oracle Service Bus Console で作成できます。ビジネス サービスを作成する前に分割-結合を開始する場合は、分割-結合の作成後にビジネス サービスを自動的に生成できます。
ここでは、テレビ、電話、インターネット サービスを含んだ電話会社のケーブル サービスのパッケージの注文を処理する「サービスの利用可能性」という名前の新しい分割-結合を設計するものとします。パッケージの注文を受信し、各種類のサービスに対して受注確認を返信するというのが、分割-結合での考え方になります。この例では、注文ごとに各タイプのサービスについて 3 つのメッセージ要求があるので、「サービスの利用可能性」は「静的」な分割-結合として設計されます。この例では、顧客はテレビと DSL サービスのみを要求します。
「サービスの利用可能性」分割-結合の作成には以下の手順が含まれます。
注文の実行に使用する WSDL 操作に基づいて分割-結合を作成します。この例では、WSDL 操作を「telecom」と呼びます。
WSDL 操作を選択すると、次の図に示すように、新しく作成された分割-結合のスケルトンが分割-結合エディタに表示されます。スケルトンは開始ノード、受信ノード、返信ノードから構成されます。[全般プロパティ] タブにあるこれらのラベルは、この特定の分割-結合の各ノードに固有の機能をより適切に反映したものに編集されます。
開始ノードには、最初に選択された WSDL 操作によって決定された要求変数と応答変数が両方とも含まれます。受信ノードでは受信要求メッセージ (この例では 3 種類以下のケーブル サービス) を受信し、返信ノードでは応答メッセージを生成して、これをクライアントに戻します。
注意 : | 受信ノードには、これ以上のコンフィグレーションは必要ありません。同様に、返信ノードには、エラーを生成する場合を除く、これ以上のコンフィグレーションは必要ありません。上記のシナリオにエラーの生成はありません (エラーの生成の詳細については、「返信のコンフィグレーション」を参照)。 |
最初の割り当てである「出力メッセージの用意」には、後からノードのデータで作業 (つまり、データのコピー、挿入、割り当て、置換、削除、Java コールアウト、ログなど) できるような形で応答変数を用意する割り当て操作が含まれます。この出力メッセージは、分割-結合の最終的な返信ノードに中継され、その結果、元のクライアントに戻ります。
パラレル ノードには、ケーブル TV の利用可能性のチェックと、DSL の利用可能性のチェックの 2 つの主要ブランチがあります。各ブランチはいくつかのアクションで構成されており、そのシーケンスと全体的なコンフィグレーションは両方のブランチで同じになっています。
各パラレル ブランチの最初の割り当てである「入力アドレスの用意」では、その場所でサービスが利用できるかどうかをチェックするために、受信した顧客アドレス データを参照されている変数にコピーします。この割り当ては、各ブランチに対して同じになっており、これはブランチが追加される場合でも同様です。
次に外部サービスが呼び出されて、要求されたサービスのタイプが顧客のいる場所で利用可能であるかどうかがチェックされます。各ブランチには、1 つのサービスを呼び出す、「TV の利用可能性のチェック」、および「DSL の利用可能性のチェック」が含まれます。 それぞれの外部サービスの呼び出しでは、顧客のアドレス (前の手順で初期化された変数に格納されている) が、その場所でのサービスの利用可能性と比較されます。結果は出力変数に格納され、次の手順であるブランチの最終的な割り当てに渡されます。
最終的な 2 つの割り当て、「出力メッセージのケーブル TV ステータスの更新」と「出力メッセージの DSL ステータスの更新」では、外部サービス呼び出しの結果を取得し、置換操作を使用して、これを出力メッセージに入れます。集約された応答は、これ以上のコンフィグレーションが必要でない最終的な返信ノードにある元のクライアントに送信されます。
分割-結合の設計が終了したら、テストとプロダクション用に Oracle Service Bus Console にエクスポートできます。
小売業者からの一括注文を処理する分割-結合を設計する場合を考えてみます。一括注文内の個別の発注の数は (発注数が固定してる注文とは異なり) 変化します。一括注文を受信し、その中にある各注文に受注確認を返信するというのが、分割-結合での考え方になります。個別の発注数要求の数は変化し、設計時にその数を知ることはできないので、これは「動的な」分割-結合になります。
注文の実行に使用する WSDL 操作に基づかない分割-結合を作成します。この例では、WSDL 操作を「batchOrders」と呼びます。
この操作が選択されると、開始ノード、受信ノード、返信ノードから構成される新しく作成された分割-結合のスケルトンが、分割-結合エディタに表示されます。[全般プロパティ] タブにあるこれらのラベルは、この特定の分割-結合の各ノードに固有の機能をより適切に反映したものに編集されます。
開始ノードである「注文の実行」には、要求変数 inputVar と応答変数 outputVar の両方が含まれます。受信ノードである「一括注文要求の受信」は、要求変数 (この例の場合は発注) の内容を初期化し、返信ノードである「注文の実行への返信」は、応答変数に集約された受注確認に基づいて応答をクライアントへ戻します。この例では、「注文の実行」には、個別の注文を承認するために呼び出される外部サービス「Order」へのコールアウトが含まれています。
注意 : | 受信ノードには、これ以上のコンフィグレーションは必要ありません。同様に、返信ノードには、エラーを生成する場合を除き、これ以上のコンフィグレーションは必要ありません。上記のシナリオにエラーの生成はありません (エラーの生成の詳細については、「返信のコンフィグレーション」を参照)。 |
最初の割り当てである「出力メッセージの用意」には、後から応答変数 (ここでは理解を容易にするために「出力メッセージ」というラベルになっています) をノード内にキャプチャしたデータで作業 (つまり、変数へのコピー、挿入、割り当て、置換、削除) できるような形で用意する割り当て操作が含まれます。この例の場合、データは受注確認やエラーで構成されます。この出力メッセージは、分割-結合の最終的な返信ノードに中継され、その結果、元のクライアントに戻ります。
For Each である「注文全体で繰り返し」には、一括注文内にある個別の注文を 1 つずつ解析して、承認のために外部プロキシに送信し、応答内にある受注確認をキャプチャするロジックが含まれます。注文に問題がある場合、呼び出されたプロキシからエラーが送信され、エラー ハンドラでキャプチャされます。次の図に For Each ロジックのスコープ全体を示します。
割り当て「発注の準備」は、受信発注要求を、次の手順で承認をチェックするために参照される変数にコピーします。
次に外部サービス「注文の有効性のチェック」が呼び出され、個別の発注ごとに承認を行います。注文が受け入れられる場合、サービスは受注確認で応答します。注文が受け入れられない場合、サービスはエラーで応答します。この結果は出力変数に格納され、次の手順で説明する最終的な割り当てに渡されます。
最終的なの割り当てである「出力メッセージの注文ステータスの更新」は、外部サービス呼び出しの結果を取得し、挿入操作を使用してこの結果を出力メッセージにコピーします。集約された応答は、これ以上のコンフィグレーションが必要でない最終的な返信ノードにある元のクライアントに送信されます。
エラー ハンドラは、呼び出されたサービスから返されたすべてのエラーをキャプチャします。エラー ハンドラは、エラーを取得し、割り当て操作を使用してこれを出力メッセージに挿入します。
分割-結合の設計が終了したら、テストとプロダクション用に Oracle Service Bus Console にエクスポートできます。
新しい分割-結合を作成するには、分割-結合の基盤となる操作を含む WSDL にアクセスできる必要があります。分割-結合は、既存の Oracle Service Bus コンフィグレーション プロジェクト内の Oracle Service Bus プロジェクトで作成する必要があります。
基本的な分割-結合が作成され、デザイン ビューにダイアグラムとして表示されます。デフォルトでは、開始ノード、受信、および返信で構成されています。開始ノードには、WSDL 操作からイントロスペクトされる結果および応答変数が含まれています。受信は、着信要求メッセージを受信するために使用されます。返信は、応答メッセージを送信するために使用されます。
開始ノードは、新しい分割-結合を作成するたびに、自動的に生成されます。これは、その他のすべてのノードを実行するための出発点です。開始ノードのコンフィグレーションには、以下の作業が含まれます。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
開始ノードの変数には、分割-結合のノードによってグローバルに参照されるデータが格納されます。デフォルトでは、分割-結合が最初に作成されるときに、すべてのプロセス ノードに、要求および応答の両方の変数が割り当てられます。開始ノードから、新しいグローバル変数を作成するか、または既存のグローバル変数を編集することができます。
グローバルとローカル変数の間の関係の詳細については、「スコープおよび変数」を参照してください。
新しいグローバル変数を作成するには、以下の手順を実行します。
注意 : | [スキーマ] または [メッセージ] タイプの変数を選択するには、階層をドリル ダウンする必要がある場合があります。 |
まだ開いていない場合は、開始ノード アイコンの左側の矢印をクリックして、コンテンツ領域を左側に展開します。新しく作成された変数が、その他のグローバル変数と共に [変数] フィールドに表示されます。変数の詳細を表示するには、その変数を選択します。プロパティ ビューに、その構造が表示されます。
既存のグローバル変数を編集するには、以下の手順を実行します。
まだ開いていない場合は、コンテンツ領域を開始ノード アイコンの左側に展開します。新しく作成された変数が、その他のグローバル変数と共に [変数] フィールドに表示されます。変数の詳細を表示するには、その変数を選択します。プロパティ ビューに、その構造が表示されます。
開始ノード に示されている [外部サービス] は、分割-結合のコンテキストの外部で呼び出されるサービスです。これらは、サービスの呼び出しで指定されていますが、容易に使用できるようにリストされています。
[外部サービス] を表示するには、開始ノード アイコンの左側の矢印をクリックして、コンテンツ領域を開始ノード の左側に展開します。[外部サービス] を選択する場合、サービスに関連付けられるサービスを呼び出すことを指す破線の青い矢印が表示され、サービスの場所がプロパティ ビューに表示されます。
新しい分割-結合を作成するたびに、受信が自動的に生成されます。受信の目的は、着信要求データを変数に入れ、後のノードでコンテンツを使用できるようにすることです。受信のコンフィグレーションには、以下の作業が含まれます。
操作は、分割-結合全体に対して最初に選択された WSDL に基づきます。これは、参照用としてプロパティ ビューに表示されています。
受信が初期化する着信メッセージ変数を定義する必要があります。
変数を定義すると、プロパティ ページに [メッセージ タイプ ネームスペース] と [メッセージ タイプ] が自動的に表示されます。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
割り当ては、変数の初期化や更新などのデータ操作に使用されます。割り当てツールバーから追加できる 1 つまたは複数の操作のセットから構成されます。割り当てのコンフィグレーションには、以下の作業が含まれます。
割り当て操作には、割り当て、コピー、削除、挿入、Java コールアウト、ログ、および置換があります。各割り当ては、これらの 1 つまたは複数の操作から構成されます。この操作をデザイン パレット ビューから追加できます。
注意 : | 分割-結合エディタの割り当て操作は、基本的には、Workshop for WebLogic メッセージ フロー エディタの対応するアクションと同じです。 ただし、重要な相違点の 1 つとして、XQuery、XSLT または XPath エディタを使用して、分割-結合コンテキストの式を編集する場合に、使用可能なのは、分割-結合に対して内部である変数およびネームスペースのみであるという点があります。 |
割り当てのコンフィグレーションの詳細については、「
割り当てのプロパティ」を参照してください。
注意 : | Oracle Service Bus 削除とは異なり、分割-結合では変数全体ではなく XPath 式のみが削除されます。 削除操作のコンフィグレーションの詳細については、「 削除のプロパティ」を参照してください。 |
挿入操作のコンフィグレーションの詳細については、「
挿入のプロパティ」を参照してください。
Java コールアウト操作のコンフィグレーションの詳細については、「
Java コールアウトのプロパティ」を参照してください。
ログ操作のコンフィグレーションの詳細については、「
ログのプロパティ」を参照してください。
置換操作のコンフィグレーションの詳細については、「
置換のプロパティ」を参照してください。
操作を選択し、プロパティ ビューでプロパティを変更することで操作を編集できます。
コピー操作を使用すると、Xpath 1.0 式で指定された情報を、ソース ドキュメントから、対象のドキュメントにコピーできます。これは、分割-結合エディタに固有の操作です。割り当てへのコピー操作の追加には、以下の手順が含まれます。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
サービスを呼び出す操作を使用して、外部、WSDL ベースのビジネス サービス、WSDL ベースのプロキシ サービス、および分割-結合を呼び出すことができます。サービスを呼び出すのコンフィグレーションには、以下の作業が含まれます。
サービスを呼び出すで使用する操作を選択する必要があります。入力変数および出力変数を定義する前に、この操作を選択する必要があります。操作を選択するには、以下の手順を実行します。
サービスを呼び出すには、一方向呼び出しでない限り、入力変数および出力変数の両方が必要です。これらの変数をコンフィグレーションする手順は、基本的には同じです。いずれのタイプの変数も、グローバル (分割-結合全体で使用可能) にすることも、ローカル (特定のコンテキストのスコープ内で使用可能) にすることもできます。入力変数または出力変数を定義するには、以下の手順を実行します。
新しいメッセージ変数を作成するには、以下の手順を実行します。
変数を定義すると、プロパティ ビューに [メッセージ タイプ ネームスペース] と [メッセージ タイプ] が自動的に表示されます。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
パラレルは、固定数のコンフィグレーション済みパラレル ブランチを作成します。各ブランチは、任意の数のノードを含めることができるそれぞれのスコープを持ちます。パラレルのコンフィグレーションには、次のタスクを含めることができます。
パラレルは、基本的には、固定数の処理ブランチのプレースホルダであり、各ブランチは、それぞれのスコープを持ちます。デフォルトでは、2 つのブランチが自動的に生成されます。個々のスコープには、構成に応じて、ユニークな処理ロジックを含めることができます。これは、適切なノードをスコープにドラッグするだけで行えます。[スコープの追加] ボタンを使用して、追加のブランチを追加できます。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
For Each は、要求の数に応じて反復する条件付きロジックを作成するために使用します。これは、主に動的な分割-結合を作成するために使用されます。For Each のコンフィグレーションには、以下の作業があります。
For Each ロジックを定義するには、以下の手順を実行します。
注意 : | カウンタの最も小さな開始値は「1」です。 |
注意 : | カウンタの最も小さな開始値は「1」です。 |
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
If 条件は、分割-結合内で条件付きロジックを提供するために使用されます。If 条件全体の動作を決定する多数のノードから構成されます。各ノードを個別にコンフィグレーションする必要があります。If アクティビティを作成すると、アクティビティ内に If および Else が自動的に生成されます。Else If の追加ボタンを使用して、Else If ノードを無制限に追加できます。
If アクティビティのコンフィグレーションには、以下の作業が含まれます。
If は、If アクティビティ全体内で、1 つの条件付きロジックを提供します。これは、If アクティビティを作成すると自動的に生成されます。If のコンフィグレーションには、以下の作業が含まれます。
If アクティビティは、XPath 1.0 式で定義された条件付きロジックを実行します。この条件を [条件] タブの [条件] テキスト フィールドに入力するか、または [参照] ボタンをクリックし、[式ビルダ] を起動して、式を書き込みます。
If ロジックの条件に合致した場合、結果として 1 つまたは一連のノードが実行されます。結果としてのノードを追加およびコンフィグレーションするには、それらのノードを、[If] アイコンの下のドロップ ポイントに順番にドラッグします。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
Else If は、If 全体のコンテキスト内で、追加のロジックを提供するために使用されます。Else If の追加ボタンを押して、いつでも Else If を追加できます。
Else If のコンフィグレーションには、以下の作業が含まれます。
Else If は、XPath 1.0 式で定義された条件付きロジックを使用します。この条件を [条件] タブの [条件] テキスト フィールドに入力するか、または [参照] ボタンをクリックし、[式ビルダ] を起動して式を書き込みます。
Else If ロジックの条件に合致した場合、結果として 1 つまたは一連のノードが実行されます。結果としてのノードを追加およびコンフィグレーションするには、それらのノードを、[Else If] アイコンの下のドロップ ポイントに順番にドラッグします。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
Else アクティビティは、If全体のコンテキスト内で、ロジックの最後の段階を提供します。これは、If が作成されるときに、自動的に生成されます。Else のコンフィグレーションには、以下の作業が含まれます。
If のロジックにおける最後の段階であるため、Else では、実行するために条件に合致する必要はありません。呼び出されると、自動的に、結果としてのアクティビティが実行されます。結果としてのノードを追加およびコンフィグレーションするには、それらのノードを、[Else] アイコンの下のドロップ ポイントに順番にドラッグします。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
エラー ハンドラは、エラーを受信して、処理します。開始ノードにアタッチされている場合は、「グローバル」エラー ハンドラであり、すべてのローカルのエラーを発生させるノードの出力に対して、すべてをキャッチします。スコープにアタッチされている場合は、ローカルで発生したエラーのみを処理します。エラー ハンドラを作成するには、以下の手順を実行します。
基本的なエラー ハンドラはコンフィグレーションされましたが、応答を送信する前に受信したエラーでロジックを実行するかどうかに応じて、エラー ハンドラにその他の割り当て、If、および返信ノードを追加する必要がある場合があります。
[エラーを発生させる] は、分割-結合の通常の処理を停止させるエラーを発生させます。エラー ハンドラを使用せずにエラーが処理されると、分割-結合は終了し、Oracle Service Bus メッセージ フローにエラーが送信されます。[エラーを発生させる] のコンフィグレーションには、[一般情報] タブへのエラーの性質の入力が含まれます (省略可能)。
エラー ハンドラに [エラーを再発生させる] 操作も追加できます。コンフィグレーションでは、ラベルの変更とドキュメントの追加を行います。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、開発者のメモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
新しい分割-結合を作成するたびに、グローバルな返信が自動的に生成されます。グローバルな返信の目的は、呼び出している Oracle Service Bus メッセージ フローに、応答を送り返すことです。ただし、返信を分割-結合でのエラー ハンドラ内、または他の場所にも生成できます。返信のコンフィグレーションには、以下の作業が含まれます。
操作は、分割-結合全体に対して最初に選択された WSDL に基づきます。これは、参照用としてプロパティ ビューに表示されています。
返信は、変数のコンフィグレーションに応じて、応答または障害をクライアントに送り返すことができます。使用できるエラーのオプションは、返信がグローバルかローカルかによって異なります。
注意 : | [応答] および [障害] ボタンを切り替えると、それぞれのコンフィグレーションがクリアされます。たとえば、以前に障害のコンフィグレーションで [SOAP エラーの伝播] を選択していて、[応答] のコンフィグレーションに切り替えると、[SOAP エラーの伝播] の選択が解除されます。 |
上記の使用可能なオプションを考慮して、返信変数に、応答または障害を選択してください。
応答を選択する場合、応答が割り当てられるメッセージ変数を定義する必要があります。これには 2 通りの方法があります。
新しいメッセージ変数を作成するには、[メッセージ変数] メニューから [メッセージ変数を作成します] を選択します。[メッセージ変数を作成します] ダイアログが表示されます。
変数を定義すると、プロパティ ビューに [メッセージ タイプ ネームスペース] と [メッセージ タイプ] が自動的に表示されます。
障害を選択する場合は、WSDL エラーまたは SOAP エラーの伝播を選択する必要があります。
注意 : | 状況によっては、障害が使用できない、または SOAP エラーしか使用できない場合があります。前述の注意を参照してください。 |
WSDL エラーを選択する場合、障害を名前で指定し、障害が割り当てられるメッセージ変数を定義する必要があります。
新しいメッセージ変数を作成するには、[メッセージ変数] メニューから [メッセージ変数を作成します] を選択します。[メッセージ変数を作成します] ダイアログが表示されます。
変数を定義すると、プロパティ ページに [メッセージ タイプ ネームスペース] と [メッセージ タイプ] が自動的に表示されます。
[SOAP エラーの伝播] を選択すると、親エラー ハンドラで指定されている SOAP エラーが、返信で自動的に伝播されます。他にコンフィグレーションするものはありません。
全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークな ID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。
スコープは、さまざまな要素をまとめるコンテナです。このコンテナは、それに含まれる要素の動作に影響を与えるコンテキストを作成します。スコープ内に定義されているローカル変数およびエラー ハンドラは、このコンテキストに制限されます。ただし、スコープ内の一部のノードは、ローカル (スコープ内) にも、グローバル (スコープ外) にも動作する場合があります。たとえば、特定のスコープ内に呼び出したサービスにより、そのスコープのコンテキストの外のサービスが呼び出される場合もあります。
変数は定義されるスコープ内やそのスコープ内にネストされたすべてのスコープに表示できますが、外部のスコープに宣言される変数と同じ名前の変数が内部のスコープに宣言される場合、外部のスコープの変数が非表示になります。たとえば、外部のスコープ (So) に myVar という変数を定義した後、外部のスコープにある内部のスコープ (Si) にも myVar 変数を定義する場合、内部のスコープ (Si) に定義した myVar にのみアクセスできます。この myVar により、スコープ So で定義された myVar がオーバーライドされます。
転送型ビジネス サービスと関連付けられている Oracle Service Bus サーバである場合、Oracle Service Bus サーバ上で分割-結合のエクスポートとテストを実行できます。分割-結合のエクスポートとテストには、以下の手順があります。
分割-結合は、特定の転送型ビジネス サービスで使用されます。適切なビジネス サービスがない場合、分割-結合のエクスポートやテストを行う前に、ビジネス サービスを作成する必要があります。ビジネス サービスの作成には、次の 2 通りの方法があります。
ビジネス サービスが作成されると、エラーがなければ、分割-結合をエクスポートできます。
注意 : | 関連するビジネス サービスを分割-結合として同じ Oracle Service Bus プロジェクトに置いておくと作業上便利です。また、関連付けが容易になるように、ビジネス サービスに分割-結合と同じ名前を付けておくことも役に立ちます。 |
エラーがなければ、分割-結合を Oracle Service Bus サーバにエクスポートできます。
注意 : | エラーは分割-結合エディタの [問題] ビューに表示されます。エラーのある分割-結合をエクスポートしようとすると、エクスポートは失敗します。 |
分割-結合のエクスポートには、次の 3 通りの方法があります。
ビジネス サービスのメニューから分割-結合を直接エクスポートすることができます。この方法によるエクスポートでは Oracle Service Bus テスト コンソールが自動的に起動されるため、エクスポートとテストの両方を行う場合に便利です。ビジネス サービスのメニューからのエクスポートには、以下の手順が含まれます。
分割-結合は Oracle Service Bus サーバに自動的にエクスポートできます。この方法を使用する場合、エクスポートされたファイルをテストするには、手動で Oracle Service Bus Console を起動する必要があります。自動エクスポートには、以下の手順があります。
分割-結合は Oracle Service Bus サーバに手動でエクスポートできます。この方法を使用する場合、エクスポートされたファイルをテストするには、手動で Oracle Service Bus Console を起動する必要があります。手動エクスポートには、以下の手順があります。
注意 : | Workshop for WebLogic から Oracle Service Bus Console に素早くアクセスするには、サーバを右クリックし、[Service Bus Console の起動] を選択します。 |
分割-結合は、Oracle Service Bus テスト コンソールで、分割-結合を使用するビジネス サービスを実行することでテストできます。テストは、分割-結合エディタ内に行うか、または分割-結合を Oracle Service Bus サーバにエクスポートして行うことができます。IDE 内で分割-結合のテストを行うには、分割-結合を使用するビジネス サービスのメニューを使用して、ファイルをエクスポートする必要があります。
分割-結合は、ビジネス サービスのメニューから直接エクスポートしてテストすることができます。この方法を使用する場合、エクスポートはOracle Service Bus テスト コンソールの起動中にバックグラウンドで実行されます。ビジネス サービスのメニューからのエクスポートには、以下の手順が含まれます。
[終了] をクリックすると、Oracle Service Bus テスト コンソールが起動します。 これで、ビジネス サービスのテストができるようになりました。
注意 : | この時点では、Oracle Service Bus テスト コンソールのみが表示されていますが、分割-結合全体が Oracle Service Bus サーバにエクスポートされています。 |
Oracle Service Bus では、Eclipse デバッグ フレームワークを拡張して、プロキシ サービス メッセージ フローおよび分割-結合用のデバッグ機能を提供します。
Oracle Service Bus デバッガでは、Java コールアウトを処理できます。また、並列処理を使用する分割-結合でのマルチスレッド デバッグをサポートします。リモート サーバでデバッグを実行することもできます。
Oracle Service Bus デバッガを使用する 2 つの方法は次のとおりです。
Oracle Service Bus のデバッグは、開発モードで実行されているサーバで自動的に有効になります。新しいドメインを作成するときは、以下のエントリが <domain>/bin/setDomainEnv スクリプトに追加されます。
Oracle Service Bus のデバッグ機能を無効にする場合は、ALSB_DEBUG_FLAG=false を設定します。
プロダクション モードでサーバを起動する場合、Oracle Service Bus のデバッグは自動的に無効になります。
プロキシ サービスまたは分割-結合をデバッグするには、それらをデバッグ モードで実行する必要があります (「Oracle Service Bus デバッガ起動コンフィグレーションの使用」で説明されているデバッガ起動コンフィグレーションを使用しない場合)。
テスト コンソールを使用してサービスのテストを実行したり、デバッガを使用したりする必要はありません。また、JMS メッセージを書き込む方法や、ファイル プロキシ サービスのディレクトリ内のファイルを削除する方法でサービスを実行することもできます。
リモート サーバでデバッグする場合は、そのリモート サーバでサービスを実行し、デバッグ ビューでテストを行います。リモート サーバがデバッグ モードではなく通常モードで実行されている場合は、「Oracle Service Bus デバッガ起動コンフィグレーションの使用」で説明されているデバッガ起動コンフィグレーションを使用します。
Oracle Service Bus デバッガのさまざまなデバッグ ビューの説明については、「デバッグ ビュー」を参照してください。
このセクションでは、サービスのデバッグ時に使用できるさまざまなビュー (図 2-1) について説明します。
デバッグ パースペクティブには、サービスのデバッグに使用する以下の主要なビューがあります。
Eclipse デバッグ フレームワークを使用すると、デバッグ コードに対してステップ アクションを実行してインクリメンタルにデバッグできます。Eclipse ヘルプ システム (『Java Development User Guide』) の「Execution Control Commands」を参照してください。
ステップ アクションを使用してデバッグする場合でも、Oracle Service Bus デバッガは設定済みの各ブレークポイントで停止し、実行される現在のステップ アクションを無視します。
Oracle Service Bus デバッガ環境をより詳細に手動で制御する場合は、Oracle Service Bus デバッガ起動コンフィグレーションを使用します。起動コンフィグレーションは Eclipse の機能です。Oracle Service Bus デバッガ起動コンフィグレーションでは、[デバッグ] オプションによるデバッガの実行の自動化 (デバッグ パースペクティブの起動、デバッグ モードでのサーバの再起動、Java デバッガの起動) が行われず、ノーマル モードまたはデバッグ モードで実行されているサーバで、必要に応じてデバッガを接続および切断できます。
Java デバッガを Oracle Service Bus デバッガと共に使用して Java コールアウトを処理する場合は、サーバがデバッグ モードで実行されている必要があります。
Oracle Service Bus デバッガ起動コンフィグレーションを使用するには
右ペインにデフォルトのサーバとポートが表示されます。このポートが、ドメインの setDomainEnv スクリプトの ALSB_DEBUG_PORT の値と一致するようにしてください。
右ペインでは、起動コンフィグレーションの名前を変更したり、デバッグ ツールバーの項目に起動コンフィグレーションをショートカットとして追加したりすることもできます。
デバッガを切断するには、[切断] アイコンをクリックします。[デバッグ] ダイアログでデバッガを再接続します。そのためには、起動コンフィグレーションを選択し、[デバッグ] をクリックするか、または前に説明した手順に従ってデバッグ ツールバーの項目にショートカットを作成します。
リモート サービスをデバッグする場合は、サーバ コンフィグレーション ウィンドウ ([デバッグ]) でリモート サーバを選択するか、または起動コンフィグレーションでリモート サーバとポートを設定できます。デバッガをリモート サーバに接続したら、リモート サーバでサービスを実行し、ローカルのデバッグ パースペクティブでテストを行います。
複数のユーザが 1 つのサーバ インスタンスを共有してデバッグする場合、デバッガに接続できるユーザは一度に 1 人だけです。他のユーザがデバッガに接続しようとしても、接続拒否エラーが発生します。
![]() ![]() ![]() |