|
シンジケート フィードは Web フィードとも呼ばれ、コンテンツが頻繁に更新されるユーザを提供します。シンジケート フィードでは、コンテンツをサード パーティ フィード リーダーに公開できます。たとえば、公開の準備が整うすべてのコンテンツが含まれるシンジケート フィードを読み込むローカルマシン上で、コンテンツ出版社はフィードリーダーをコンフィグレーションできます。シンジケート フィードにサブスクライブし、フィード リーダーまたはアグリゲータを使用することにより、ユーザーはコンテンツの変更に関する最新の情報を得ることができます。
WebLogic Portal では、変更できるシンジケーション プロデューサ サーブレットおよび複数の事前にコンフィグレーションされているシンジケート フィードを提供します。独自のクラス フィードも作成可能です。事前にコンフィグレーションされているシンジケート フィードは、RSS フィード技術と互換性で、多くの RSS リーダーを読み込できる URL フォーマットで構成されます。RSS 2.0 仕様に準拠している必要があります。
| 注意 : | Internet Explorer 6 では、シンジケート フィードがサポートされていません。 |
コンフィグレーション済みのシンジケート フィードには、表示テンプレート JSP を使用して、コンテンツを選択し表示するための基本的なサンプルが含まれます。これらの JSP は、コンテンツの作成日時、作成者およびコンテンツ ノードの名前などの一般的なメタデータを表示します。これらは、単純なフォーマットで情報を表示する汎用表示ポートレットです。
| ヒント : | 基本的なコンフィグレーション済みのシンジケート フィードは独自のカスタム シンジケート フィードの開発の起点として使用します。 |
コード リスト 12-1 は、シンジケート フィードの URL フォーマットを示します。
http://<Administration Console Host Machine Name>: <Administration Console Port
default is 7001)>/<WebApp>/SyndicationProducer?feedName=<feedName>
&syndicationStyleName=<styleName>
表 12-1 は、WebLogic Portal で提供されている 3 つの事前にコンフィグレーションされているシンジケート フィードの URL を示します。
特定のフィードに関する検索結果を変更する場合、URL を変更することができます。URL を変更して、シンジケーション プロデューサ サーブレットに渡したパラメータを設定するシンジケーション コンフィグレーション ファイルを変更しないでシンジケーション プロデューサ サーブレットにパラメータを渡すことができます。たとえば、シンジケート フィードおよびリーダー タイプに表示された記事数を変更するには、アンパサンド間で searchMaxResults パラメータを追加し、syndicationStyleName の値を atom に変更します。作成された URL は以下のようになります。
http://www.bea.com:7001/myWebApp/SyndicationProducer?feedName=LatestContent&searchMaxResults=5&syndicationStyleName=atom
URL はコード リスト 12-1 のフォーマットに従います。表 12-2 は、使用可能なパラメータを示します。アンパサンドを使って各パラメータを区切ります。
| 注意 : | URL に設定されないすべてのパラメータは、シンジケーション コンフィグレーション (wlp-syndication-config) ファイルに設定する必要があります。 または、望ましくない結果や失敗を発生する可能性があります。たとえば、searchMaxResults パラメータを任意の場所に設定しない場合、シンジケート フィードは数百のエントリを表示できます。 |
wlp-syndication-config.xml ファイルの詳細については、「シンジケーション コンフィグレーション ファイルの変更」を参照してください。
URL の変更は、開発時に特に役立ちます。URL を使用して、シンジケーション プロデューサ サーブレットに渡されるパラメータを決定とテストすることができます。シンジケーション コンフィグレーション ファイルを変更するためにアプリケーションの再デプロイが必要ですので、かかる時間を短縮できます。適切なパラメータを確立した後、wlp-syndication-config.xml ファイルを編集し、再デプロイできます。
URL によって渡されたパラメータは、シンジケーション コンフィグレーション ファイルから渡されたパラメータよりも優先されます。シンジケーション プロデューサ サーブレットでは、次のように優先順位を設定します。
以下のファイルを変更することで、事前にコンフィグレーションされているシンジケート フィードを変更できます。
WebLogic Portal では、4 つの事前にコンフィグレーションされている JSP が含まれています。 最初の 3 つの JSP はコンテンツ項目のリストを生成し、4 つ目はコンテンツ自体を生成します。図 12-1 および 図 12-2 を参照してください。
図 12-2 rss_detailed_view.jspによって表示される記事自体を示します。

Workshop for WebLogic での事前にコンフィグレーションされているシンジケート フィード JSP を [マージ済みプロジェクト] ビューから変更するために、RSS JSP ファイルを myPortalWebProject フォルダから Web プロジェクトにコピーします。Workshop for WebLogic の使用方法の詳細については、『ポータル開発ガイド』の「ポータル開発環境の設定」にある「マージ済みプロジェクト ビューの使用」を参照してください。
コンテンツ管理では、2 つのタイプのリポジトリの公開とバージョン管理を行います。公開済みリポジトリのノードは、1 つのバージョンの情報のみを提供します。シンジケート フィードのユーザはコンテンツ ノードを更新するたびにこの情報を表示します。バージョンのリポジトリのノードは、検索と管理できる複数のバージョンを提供します。ライブラリ サービスが有効になっている場合、コンテンツをリポジトリにチェックインするたびにコンテンツが自動的にバージョン管理され、コンテンツの新しいコピーが保存されます。一般には、公開する前、マネージからコンテンツを承認するワークフローにバージョンのリポジトリを使用します。ライブラリ サービスの詳細については、「バージョン管理の使用」を参照してください。
シンジケーション コンフィグレーション ファイル (wlp-syndication-config.xml) の検索タイプは pubmeta に設定して、公開済みリポジトリにノードを呼び出すことができます。
<search-type>pubmeta</search-type>
シンジケーション プロデューサ サーブレットは、JSP スクリプトレット内のコンテンツ ノードからデータを取得するために JSP を呼び出す場合、JSP スクリプトレット内の node のリクエスト属性は null に設定しない。
if(request.getAttribute("node") != null){
コード リスト 12-4 は、全体の wlp-syndication-config.xml ファイルを示します。コード リスト 12-2 は、サンプル JSP ファイル (rss_item.jsp) を示します。
シンジケーション コンフィグレーション ファイル (wlp-syndication-config.xml) の検索タイプを vermeta に設定して、バージョン ノードを呼び出すことができます。
<search-type>vermeta</search-type>
シンジケーション プロデューサ サーブレットは、バージョン ノードからデータを取得するために JSP を呼び出す場合、JSP スクリプトレット内の version のリクエスト属性は null に設定しない。
else if (request.getAttribute("version") != null){
コード リスト 12-4 は、全体の wlp-syndication-config.xml ファイルを示します。コード リスト 12-2 は、サンプル JSP ファイル (rss_item.jsp) を示します。
以下のサンプル JSP では、シンジケーション フィードを表示するためのロジックが含まれます。シンジケーション プロデューサ サーブレットでは、コンテンツ クエリを使用して、コンテンツ管理からデータを取得します。JSP では、コンテンツ クエリから返される結果が表示されます。
<%@page contentType="text/html;charset=UTF-8" language="java"%>
<%@ page import="com.bea.content.Node" %>
<%@ page import="com.bea.content.ContentContext" %>
<%@ page import="com.bea.content.virtual.version.Version" %>
<%@ page import="com.bea.content.federated.ContentManagerFactory"%>
<%@ page import="com.bea.content.federated.INodeManager"%>
<%
String path = request.getRequestURL().toString();
path = path.substring(0, path.indexOf(request.getContextPath()));
request.setAttribute("rootURL", path+"/"+ request.getContextPath());
if(request.getAttribute("node") != null){
Node node = (Node)request.getAttribute("node");
if(node != null){
String nodePath = node.getPath();
request.setAttribute("parameters", request.getAttribute("rootURL") +
"/ShowProperty?nodePath="+nodePath);
request.setAttribute("path", request.getAttribute("rootURL") +
"/ShowProperty?nodePath="+nodePath);
request.setAttribute("title", node.getName());
}
else{
request.setAttribute("parameters", "#");
request.setAttribute("path", "Node could not be found from path");
request.setAttribute("title", "Null Node Exception");
}
}
else if (request.getAttribute("version") != null){
Version version = (Version)request.getAttribute("version");
if(version != null){
INodeManager nodeMgr = ContentManagerFactory.getNodeManager();
Node node = nodeMgr.getNodeByUUID(new ContentContext(),
version.getNodeId());
if(node != null){
String nodePath = node.getPath();
request.setAttribute("parameters", request.getAttribute("rootURL") +
"/ShowProperty/"+nodePath+"||versionId="+version.getVersionName());
request.setAttribute("path", request.getAttribute("rootURL") +
"/ShowProperty/"+nodePath+"||versionId="+version.getVersionName());
request.setAttribute("title", node.getName());
}
else{
request.setAttribute("parameters", "#");
request.setAttribute("path", "Node could not be found from path");
request.setAttribute("title", "Null Node Exception");
}
else{
request.setAttribute("fullURL", "Version attribute was null");
request.setAttribute("title", "Null Version");
request.setAttribute("description", "Null Node");
}
}
%>
<item>
<title>${title}</title>
<link>${fullURL}</link>
<description>${description}</description>
</item>
前述のように、JSP はリポジトリからデータを選択し、表示します。コード リスト 12-2 の最後には、シンジケート リストの各項目を表示する次の HTML を示します。
<item>
<title>${title}</title>
link>${fullURL}</link>
<description>${description}</description>
</item>
コード リスト 12-3 に示すように、rss_detailed_view.jsp には、リスト内の項目の内容を表示する HTML が含まれます。
...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>View Details: ${title}</title>
<style>
body {background-color:#FFFFFF; font-family:arial, sans-serif;
font-size: 1em; color:#000000;}
p td {font-family:arial, sans-serif; font-size: 100%; color:#000000;}
h1 {font-size:120%; border-bottom: 1px solid #CCCCCC;}
.notetext {font-size:80%; width: 50%; padding:10px; border: 1px solid
#FFCC33; background-color: #FFFFCC}
</style>
</head>
<body>
<h1>View Details: ${title}</h1>
<div class="notetext">このビューでは、選択されたフィード項目の
便利なプロパティを表示し、表示テンプレートでフォーマットすることができます。デフォルトでは
、少数のシステム プロパティが表示されます。</div>
<p>Location in Repository: ${nodePath}</p>
<p>Created on: ${createdDate}</p>
<p>Created by: ${createdBy}</p>
<p>Primary Property Details: <a href="${parameters}">View Binary</a></p>
</body>
</html>
シンジケーション コンフィグレーション ファイルでは、シンジケーション プロデューサ サーブレットに渡されるパラメータを設定し、シンジケーション フィード JSP が使用した表示テンプレートを変更できるネームスペースにマップします。
マージ済みプロジェクト ビュー から Workshop for WebLogic 内の事前にコンフィグレーションされているシンジケート フィードを変更するには、WEB-INF\wlp-syndication-config.xml ファイルを Web プロジェクトにコピーして、ファイルを編集します。Workshop for WebLogic の使用方法の詳細については、「マージ済みプロジェクト ビューの操作」を参照してください。
コード リスト 12-4 事前にコンフィグレーションされているシンジケート フィードのシンジケーション コンフィグレーション ファイル (wlp-syndication-config.xml) を示します。
<?xml version="1.0"?>
<wlp-syndication-config xmlns="http://www.bea.com/ns/content/102/wlp-syndication-config">
<syndication-feed>
<name>LatestContent</name>
<search-query>cm_nodeName like '*'</search-query>
<search-type>pubmeta</search-type>
<search-max-results>20</search-max-results>
<search-sort-order>cm_createdDate desc</search-sort-order>
</syndication-feed>
<syndication-feed>
<name>NeedToApprove</name>
<search-query>cm_lifeCycleStatus = 3 && cm_assignedToUser =
requestProperty('DefaultRequestPropertySet', 'Remote
User')</search-query>
<search-type>vermeta</search-type>
</syndication-feed>
<syndication-feed>
<name>DirectoryContents</name>
<search-query>cm_path like '/WLP Repository/*'</search-query>
<search-type>pubmeta</search-type>
<search-max-results>20</search-max-results>
<search-sort-order>cm_createdDate desc</search-sort-order>
</syndication-feed>
<syndication-style>
<name>rss</name>
<name-space>bea-rss</name-space>
<channel-group-name>ContentRepoRSS</channel-group-name>
<channel-template>RSSChannel</channel-template>
<channel-header-view>channelHeader</channel-header-view>
<channel-footer-view>channelFooter</channel-footer-view>
</syndication-style>
<syndication-item-style>
<name>rss_detailed_view</name>
<name-space>bea-rss</name-space>
<item-view>detailedView</item-view>
</syndication-item-style>
</wlp-syndication-config>
コード リスト 12-4 に示すように、<syndication-feed> 要素に 2 つの検索タイプがあります。
これらの検索タイプは、シンジケーション プロデューサ サーブレットを公開 (pubmeta) または バージョン管理 (vermeta) のリポジトリからクエリ データに送ります。デフォルトの検索タイプは、pubmeta です。
検索タイプによって、ノード または バージョンの検索プロパティはシンジケート フィード JSP (コード リスト 12-2) に設定します。具体的には、ノードまたはバージョンは null に設定しない。
vermeta 検索タイプは、ワークフローで頻繁に使用されます。この検索タイプは、ライブラリ サービスを有効にするリポジトリなど、管理対象リポジトリに使用できます。詳細については、「ライブラリ サービスを使用する場合の WLP リポジトリ コンテンツの操作」を参照してください。
事前にコンフィグレーションされているシンジケート フィードのシンジケーション コンフィグレーション ファイルでは、オプション数を提供します。たとえば、結果の手順は、降順から昇順へ変更できます。使用できるパラメータ は、コード リスト 12-6 に示す XML スキーマに基づきます。以下のオプションを利用できます。
wlp-syndication-config.xml ファイルでは、wlp-template-config.xml ファイル内の表示テンプレート JSP にマップするエントリが含まれます。たとえば、wlp-syndication-config.xml ファイル (コード リスト 12-4) では、syndication-style 要素は、wlp-template-config.xml ファイル (コード リスト 12-5) 内の対応する要素 (および JSP) を参照します。
wlp-syndication-config.xml ファイルの場合
<syndication-style>
<name>rss</name>
<name-space>bea-rss</name-space>
<channel-group-name>ContentRepoRSS</channel-group-name>
<channel-template>RSSChannel</channel-template>
<channel-header-view>channelHeader</channel-header-view>
<channel-footer-view>channelFooter</channel-footer-view>
</syndication-style>
wlp-template-config.xml ファイルの場合
<view><name>channelHeader</name>
<uri>/rss/rss_header.jsp</uri>
</view>
この設計により、wlp-template-config.xml ファイルに変更を加えて、独自 JSP を参照できます。たとえば、ヘッダ JSP を参照して、URI は、/rss/rss_header.jsp から /atom/atom_header.jsp に 変更できます。
マージ済みプロジェクト ビューから Workshop for WebLogic 内の事前にコンフィグレーションされている表示テンプレート コンフィグレーション ファイル を変更するには、WEB-INF\wlp-template-config.xml ファイルを Web プロジェクトにコピーして、ファイルを編集します。Workshop for WebLogic の使用方法の詳細については、「マージ済みプロジェクト ビューの操作」を参照してください。
<?xml version="1.0" ?>
<wlp-template-config xmlns="http://www.bea.com/ns/p13n/90/wlp-template-config">
<content-repository>
<name>*</name>
<default-template-uri>/rss/rss_item.jsp</default-template-uri>
<content-name-space>
<name>bea-rss</name>
<content-resource>
<name>*</name>
<default-template-uri>/rss/rss_item.jsp</default-template-uri>
<view>
<name>detailedView</name>
<uri>/rss/rss_detailed_view.jsp</uri>
</view>
</content-resource>
</content-name-space>
</content-repository>
<template-group>
<name>ContentRepoRSS</name>
<template-name-space>
<name>bea-rss</name>
<template>
<name>RSSChannel</name>
<default-template-uri>/rss/rss_header.jsp</default-template-uri>
<view>
<name>channelHeader</name>
<uri>/rss/rss_header.jsp</uri>
</view>
<view>
<name>channelFooter</name>
<uri>/rss/rss_footer.jsp</uri>
</view>
</template>
</template-name-space>
</template-group>
</wlp-template-config>
シンジケート フィード を組織にカスタマイズするような場合です。たとえば、ユーザに表示したい記事と作成者の名前などコンテンツ リポジトリ中にデータのさまざまな部分を表示する JSP を開発する必要があります。また、情報は、ポータルのルック アンド フィールと一致しているフォーマットで表示することができます。いずれかの事前にコンフィグレーションされているシンジケート フィードは、開始点として使用でき、または、最初から構築します。
| ヒント : | シンジケート フィードの操作方法を理解するには、事前にコンフィグレーションされているシンジケート フィードの使用と変更を必ず読んでください。 |
別のリーダーに対応している Atom などのシンジケート フィードを作成できます。開発プロセスを高速化するために、同じコンテンツ クエリを使用して、データベースから情報を取得し、このコンテンツを別のリーダーに対して異なる XML 形式で表示することができます。
コンテンツ リポジトリは、仮想コンテンツ リポジトリを使用して WebLogic Portal に接続されるので、リポジトリが仮想コンテンツ リポジトリへの接続であれば、JSP 表示テンプレートでは、データがいずれかのコンテンツ リポジトリに表示されます。詳細については、「はじめに」を参照してください。
シンジケート フィード JSP では、シンジケーション フィードを表示するためのロジックが含まれます。
一般的に、次の 4 つの JSP を作成する必要があります。
JSP を作成するための Workshop for WebLogic の使用に関する詳細については、「チュートリアル : JSP タグの操作」を参照してください。
表示テンプレート (JSP) を開発した後、表示テンプレート コンフィグレーション ファイル (wlp-template-config.xml) を使用して、それらをネームスペースにマップします。表示テンプレートは、その後、シンジケーション コンフィグレーション ファイル (wlp-syndication-config.xml) から参照されます。
ネームスペースに表示テンプレートをマップするには、wlp-template-config.xml ファイルを作成します。表示テンプレートは、その後、シンジケーション コンフィグレーション ファイル (wlp-syndication-config.xml) から参照されます。この動作方法の詳細については、「表示テンプレートの選択」を参照してください。
wlp-template-config.xml ファイルの作成の詳細については、「wlp-template-config.xml ファイルの作成」を参照してください。XML ファイル作成のページでは、この方法でテンプレート コンフィグレーション ファイルを作成すると、[最初から XML ファイルの作成] を選択します。

表示テンプレートの詳細については、「表示テンプレートの使用」を参照してください。
シンジケーション コンフィグレーション ファイルでは、シンジケーション プロデューサ サーブレットに渡されるパラメータを設定し、シンジケーション フィード JSP が使用した表示テンプレートを選択できるネームスペースにマップします。詳細については、「表示テンプレートの選択」を参照してください。
コード リスト 12-6 は、wlp-syndication-config.xml の XML スキーマを示します。wlp-syndication-config.xml ファイルをコンフィグレーションするときに使用できる有効な属性およびタグを含みます。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.bea.com/ns/content/102/wlp-syndication-config"
elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="syndication-styleType">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" nillable="true"/>
<xs:element name="name-space" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-group-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-template" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-header-view" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-footer-view" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-resource-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-repository-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-view" type="xs:string" minOccurs="0"
nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="syndication-configType">
<xs:sequence>
<xs:element name="syndication-feed" maxOccurs="unbounded"
type="wlp:syndication-storeType" minOccurs="0" nillable="true"
xmlns:wlp="http://www.bea.com/ns/content/102
/wlp-syndication-config"/>
<xs:element name="syndication-style" maxOccurs="unbounded"
type="wlp:syndication-styleType" minOccurs="0" nillable="true"
xmlns:wlp="http://www.bea.com/ns/content/102/
wlp-syndication-config"/>
<xs:element name="syndication-item-style" maxOccurs="unbounded"
type="wlp:syndication-item-styleType" minOccurs="0" nillable="true"
xmlns:wlp="http://www.bea.com/ns/content/102/
wlp-syndication-config"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="syndication-storeType">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" nillable="true"/>
<xs:element name="search-query" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="search-type" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="search-max-results" type="xs:int" minOccurs="0"
nillable="true"/>
<xs:element name="search-sort-order" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="name-space" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-group-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-template" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-footer-view" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="channel-header-view" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-resource-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-repository-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-view" type="xs:string" minOccurs="0"
nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="syndication-item-styleType">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" nillable="true"/>
<xs:element name="name-space" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-resource-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-repository-name" type="xs:string" minOccurs="0"
nillable="true"/>
<xs:element name="item-view" type="xs:string" minOccurs="0"
nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:element name="wlp-syndication-config" type="wlp:syndication-configType"
xmlns:wlp="http://www.bea.com/ns/content/102/wlp-syndication-config"/>
</xs:schema>
通常、WebLogic Portal Administration Console で訪問者資格をコンフィグレーションすることで、ポータル リソースへの訪問者アクセスを制御できます。ただし、正しい URL を知っている悪意のあるユーザがシンジケート フィードに直接アクセスできます。シンジケート フィードを保護する目的があれば、Java EE セキュリティを使用する必要があります。具体的には、web.xml デプロイメント記述子を使用して、シンジケーション プロデューサ サーブレットへのアクセスを保護します。
次の例では、web.xml デプロイメント記述子はすべての HTTP GET または POST リクエストを/SecureFeedProducer/* 形式で URL から制限しています。これらの記述子では、管理者、ポータル システム管理者または AppTester があるユーザのみが許可されます。
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure Syndication</web-resource-name>
<description>The Secure Rss Feeds</description>
<url-pattern>/SecureFeedProducer/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>Administrators</description>
<role-name>Administrators</role-name>
<role-name>PortalSystemAdministrator</role-name>
<role-name>AppTesters</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
セキュリティ デプロイメント記述子の詳細については、『WebLogic Server のために Web アプリケーション、サーブレットおよび JSP の開発』の「web.xml デプロイメント記述子要素」を参照してください。
|