Portal Server のコミュニティーは、エンドユーザー自身が確立し、管理できるメンバーおよびサービスを関連付けるものです。コミュニティーの全データ (コミュニティーメンバーシップと設定データ、およびポートレットのアプリケーションデータ) は、管理者が選択したデータベースに保存されるよう設計されています。このデータベースには、jdbc ドライバを使用して接続できます。Portal 7.1 は、デフォルトで Derby データベースに上記のデータを保存します。Derby は Portal 製品とともに出荷されます。そのため、このデータベースをチューニングして最適なパフォーマンスとスケーラビリティーを得ることが重要になります。
この章では、次に Portal Server コミュニティーの一般的な配備事例を示します。
デフォルトでは、Portal Server の各インストールは Derby データベースにインスタンスを作成します。このインスタンスは、Derby Client JDBC を使用して任意のクライアントからアクセス可能な Network Server として構成されます。
複数の Portal インスタンスが異なるホストに配備されているが同じコミュニティーに対してサービスを提供している場合、共通の Derby サーバーインスタンスを使用する必要があります。単独のデータベースインスタンスを使用する複数ホスト上に Portal コミュニティーを配備する方法については、「単独のデータベースインタフェースを使用する複数ホストへのコミュニティーの配備」を参照してください。
デフォルトでは、Derby Network Server はポート 1527 で待機するよう設定されています。Derby が実行されているかどうかは、次の UNIX コマンドでテストします。
netstat -an | grep 1527
ポートで何も待機していなければ、Derby データベースは実行されていません。次の行を使用すると起動できます。
###start_derby.sh#### PATH=/usr/jdk/jdk1.5.0_09/bin:${PATH};export PATH derby_classpath=/opt/SUNWjavadb/lib/derby.jar:/opt/SUNWjavadb/lib/derbynet.jar; exportderby_classpath derby_home=/var/opt/SUNWportal/derby;export derby_home java -Dderby.system.home=${derby_home} -cp ${derby_classpath} org.apache.derby.drda.NetworkServerControl start & |
複数の Portal インスタンスが異なるホストに配備されると、インスタンスが共通のデータベースインスタンスを使用するよう設定しないかぎりは、各インスタンスは異なるコミュニティーデータを持ちます。このセクションでは、単独の共通 Derby ネットワークサーバーインスタンスを使用するよう、複数の Portal Server インスタンスを設定する方法について解説します。
単独の共通 Derby インスタンスに複数の Portal Server インスタンスを配備するには、次の 2 つの方法があります。
Portal Server ホストにインストール済みの Derby インスタンスを使用し、Derby インスタンスにポイントするよう別の Portal Server インスタンスを設定する。「すべてのポータルサーバーインスタンスを共通の Derby ネットワークサーバーインスタンスにポイントさせる」
専用の Derby ホストに Derby インスタンスを作成し、専用の Derby インスタンスを実行するホストにポイントするよう別の Portal Server インスタンスを設定する。
単独の Derby インスタンスに複数の Portal Server コミュニティーを配備するためのプラットフォーム要件には、次のようなものがあります。
オペレーティングシステム
SPARC 上の Solaris 9 U6 または Solaris 10
x86 上の Solaris 9 または Solaris 10
x86 上の RedHat Enterprise Linux 2.1、3.0 Update 3 または 4.0
詳細については、リリースノートを参照してください。
これらの要件は、ほかのポータルインスタンスの設定の要件と共通しています。専用の Derby インスタンスを設定するためには、通常は Java Enterprise System 5 に同梱されている java sdk を使用する必要があります。必要となるバージョンは 1.5.0_09 以降です。
Java Enterprise System 5 配布から JDK をインストールします。この手順は、必要な Java バージョンがマシン上にない場合に必要です。
専用ホストに Derby データベースパッケージをインストールします。
Portal Server のインストールホストから専用の Derby ネットワークサーバーインスタンスホストに Derby データファイルを転送します。データファイルは /var/opt/SUNWportal/derby にあります。
Derby データファイルは次のとおりです。
derby.properties
および次のディレクトリです。
communitymc_portal1
surveydb_portal1
filesharingdb_portal1
wikidb_portal1
Portal Server インストールホストで tar コマンドを使用し、Derby データファイルをアーカイブします。
cd /var/opt/SUNWportal/derby
tar -cvf derby-system.tar *
専用の Derby ネットワークインスタンスホスト上に Derby システムのホームディレクトリを作成します。
mkdir -p /var/opt/SUNWportal/derby
Portal Server のインストールホストから専用の Derby ネットワークインスタンスホスト上のシステムホームディレクトリに derby-system.tar ファイルを転送します。
専用の Derby ネットワークインスタンスホストの /var/opt/SUNWportal/derby ディレクトリで、次のコマンドを実行します。
ftp> portal install
ftp> cd /var/opt/SUNWportal/derby
ftp> get derby-system.tar
ftp> quit
tar コマンドを使用し、derby-system.tar ファイルを抽出します。
tar -xvf derby-system.tar
Derby プロパティーファイルを修正します。
Derby ネットワークサーバーインスタンスを開始します。次のサンプルスクリプトを使用します。
###start_derby.sh#### PATH=/usr/jdk/jdk1.5.0_09/bin:${PATH};export PATH derby_classpath=/opt/SUNWjavadb/lib/derby.jar:/opt/SUNWjavadb/lib/derbynet.jar; exportderby_classpath derby_home=/var/opt/SUNWportal/derby;export derby_home java -Dderby.system.home=${derby_home} -cp ${derby_classpath} org.apache.derby.drda.NetworkServerControl start & |
(オプション) derby.properties の Derby チューニングプロパティーを修正するか、Derby ネットワークサーバーを起動するために使用する Java コマンドに JVM チューニングパラメータを追加します。詳細については、Apache Derby のマニュアルおよび java.sun.com を参照してください。
Derby ネットワークサーバーインスタンスの Portal クライアントは、Web コンテナに設定された JDBC データソースを通じ、Derby ネットワークサーバーインスタンスにアクセスします。デフォルト以外の Derby ネットワークサーバーインスタンスを使用するよう Portal インスタンスを設定すると、別のホストにポイントするようこれらのデータソースを再設定する必要があります。その方法は、Web コンテナの種類によって異なります。たとえば、Sun Java Webserver 7.0 などを使用します。
共通の Derby ネットワークサーバーインスタンスを使用する 各 Portal Server インスタンスに対し、次の手順を実行します。
Sun Java System Web Server にアクセスします。
http://sesta.iplanet.com:8800 などです。
「共通操作」タブで、「構成タスク」から「Java 設定を編集」をクリックします。
「リソース」タブをクリックします。
Web コンテナの JDBC リソースのリストが表示されます。
次のそれぞれのリソースに対し、次の手順を実行します。
jdbc/communitymc
jdbc/FileSharingDB
jdbc/SurveyDB
jdbc/WikiDB
次の手順を実行し、設定を配備します。
Web コンテナを再起動します。
エンタープライズ級のコミュニティーに高い可用性を与えるには、Portal Server とともにインストールされる Derby データベースを、高可用性を提供する jdbc 接続可能データベースに置換する必要があります。
データベースを設定します。
新規データベースの Web コンテナを設定します。
「コミュニティーメンバーシップおよび設定」を設定します。
次の communitymc データベース設定ファイルを設定します。
PORTAL-DATA-DIR/portals/PORTAL-ID/config/portal.dbadmin
パラメータ
db.driver= vendor-specific-classpath.jdbc.ClientDriver
db.driver.classpath=/opt/jarfile-directory-pathclient.jar
community.db.user=database-user-account (手順 1c で作成)
community.db.password= database-user-account-password (手順 1c で作成)
community.db.url=jdbc:xxx://xxxxx.pstest.com:port/ database-instance-created-in-step-1b
次の場所にある、Derby 固有のプロパティーを削除します。
PORTAL-DATA-DIR/portals/PORTAL-ID/config/communitymc.properties
次に例を示します。javax.jdo.option.Mapping=derby
次のコマンドを使用し、データベースにスキーマをロードします。
cd /var/opt/SUNWportal/portals/portal1/config
/usr/sfw/bin/ant -f config.xml -D"portal.id=portal1" configure
Web コンテナ設定の JDBC リソースを、新規データベースにポイントするよう編集します。
ポートレットアプリケーションを設定し、インストールします。
ポートレットアプリケーションを検出します。
PORTAL-DATA-DIR/portals/PORTAL-ID/portletapps
ポートレットアプリケーションで新規データベースを使用するよう設定します。次に例を示します。
cd /var/opt/SUNWportal/portals/portal1/portletapps/surveys
tokens_xxx.properties ファイルを編集します。
tokens_xxx.properties ファイルの値を使用し、各アプリケーションに対して JDBC リソースを作成します。
Resource JNDI Name: jdbc/DB-JNDI-NAME
Resource Type: javax.sql.DataSource
Datasource Classname: DB-DATASOURCE
User: DB-USER
Password: DB-PASSWORD
URL: DB-URL
データストアとして Derby データベースを使用する既存のポートレットを配備解除します。
新たに設定されたポートレットアプリケーションを配備します。
Oracle 10g Release 2 データベースをインストールします。
Oracle データベースを準備します。
portal と名付けられたデータベースインスタンスを作成します。たとえば、SID=portal などです。
Solaris 10 の ORA-27102 メモリー不足エラーを回避するために、次のコマンドを実行します。projadd -U oracle -K "project.max-shm-memory=(priv,4294967295B,deny)" user.oracle
SYSTEM として Oracle Enterprise Manager にログインします。通常のパスは http://hostname:1158/em です。(em は Enterprise Manager の略です)。
またはコマンド行 sqlplus /nolog CONNECT sys/password AS SYSDBA です。
表領域 communitymc_portal-ID を作成します。たとえば、communitymc_portal1 などです。
例:
SQL> CREATE TABLESPACE COMMUNITYMC_PORTAL1 LOGGING DATAFILE ' /app/oracle/oradata/portal/communitymc_01.dbf' SIZE 400M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; |
次の値を使用し、ユーザーアカウントを作成します。
Username: portal
Password: portal
Default Tablespace: communitymc_Portal—ID
Assign roles: CONNECT and RESOURCE
例:
SQL> create user portal identified by portal; SQL>alter user portal default tablespace COMMUNITYMC_PORTAL1; SQL> grant connect,resource to portal; |
新規データベースの Web コンテナを準備します。
次のいずれかの方法を使用し、Oracle JDBC ドライバを探します。ファイルは ojdbc14.jar です。
Oracle がインストールされているマシン上の ojdbc14.jar ファイルを使用する。通常は、$ORACLE_HOME/jdbc/lib/ojdbc14.jar にあります。
Oracle の Web サイトから ojdbc14.jar ファイルをダウンロードする。使用する Oracle RDBMS と互換性のあるバージョンをダウンロードしてください。
JVM クラスパスに JDBC ドライバを追加します。
JVM クラスパスに JDBC ドライバ (ojdbc14.jar) を追加します。
例:
class-path-suffix...//opt/SUNWjavadb/lib/derbyclient.jar: /oracle/ojdbc14.jar...
次の JVM オプションを追加します。
-Djdbc.drivers=oracle.jdbc.OracleDriver
たとえば、Web Server server.xml で
<jvm-options>-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver</jvm-options>
<jvm-options>-Djdbc.drivers=oracle.jdbc.OracleDriver</jvm-options>
Derby データベースの jdbc リソースを使用するすべてのポートレットやアプリケーションを、Oracle リソースを使用するよう変換すると、Derby のクラスファイルおよびオプションを削除できます。
「コミュニティーメンバーシップおよび設定」を設定します。
communitymc データベース設定ファイルを編集します。
vi Portal-data-dir/portals/ Portal-ID/config/portal.dbadmin
db.driver=oracle.jdbc.OracleDriver
db.driver.classpath= JDBC-Driver-Path/ojdbc14.jar url=jdbc:oracle:thin:@Oracle-Host :Oracle-Port:portal
たとえば、portal.dbadmin で
db.driver=oracle.jdbc.OracleDriver db.driver.classpath=/oracle/ojdbc14.jar community.db.user=portal community.db.password=portal community.db.url=jdbc:oracle:thin:@machine1.pstest.com:1521:portal portal.id=portal1 |
communitymc 設定ファイルから、次のプロパティーを削除またはコメントアウトします。
vi Portal-Data-Dir /portals/Portal-ID/config/communitymc.properties
#javax.jdo.option.Mapping=derby
次のコマンドを使用し、コミュニティースキーマを Oracle にロードします。
cd /var/opt/SUNWportal/portals/portal1/config
/usr/sfw/bin/ant -f config.xml -D"portal.id=portal1" configure
終了後、次のように入力して Oracle にテーブルが作成されていることを確認します。
SQL> connect portal/portal Connected. SQL> select * from cat; TABLE_NAME TABLE_TYPE ------------------------------ ----------- BIN$I3usV+V+I7HgRAgAIMbswQ==$0 TABLE JPOX_TABLES TABLE COMMUNITY TABLE COMMUNITY_USER TABLE COMMUNITY_DP TABLE |
communitymc JDBC リソースを、Oracle にポイントするよう編集します。
Web コンテナ管理コンソールにログインします。
jdbc/communitymc と名付けられた JDBC リソースを検出します。
データソースクラス名を oracle.jdbc.pool.OracleDataSource に設定します。
次のプロパティーを設定します。
user: portal
password: portal
url: jdbc:oracle:thin:@Oracle-Host :Oracle-Port:portal
<jdbc-resource> <jndi-name>jdbc/communitymc</jndi-name> <datasource-class>oracle.jdbc.pool.OracleDataSource</datasource-class> <idle-timeout>30</idle-timeout> <wait-timeout>10</wait-timeout> <property> <name>Password</name> <value>portal</value> </property> <property> <name>portNumber</name> <value>1521</value> </property> <property> <name>databaseName</name> <value>communitymc_portal1</value> </property> <property> <name>User</name> <value>portal</value> </property> <property> <name>serverName</name> <value>machine1.pstest.com</value> <description/> </property> <property> <name>url</name> <value>jdbc:oracle:thin:@machine1.pstest.com:1521:portal</value> <description/> </property> </jdbc-resource> |
いくつかの Web コンテナでは、JDBCリソースの代わりに JDBC 接続プールを編集しなければならないことがあります。
Fileshare、Surveys、および Wiki Portlet Application を設定し、インストールします。
ポートレットアプリケーションを検出します。
Portal-Data-Dir /portals/Portal-ID/portletapps/ Portlet_Application
tokens_ora.properties を設定します。
/portals/portal1/portletapps/ に格納されている各アプリケーションは、 tokens.properties ファイルに加え、独自の tokens_ora.properties ファイルを持ちます。実際のデータベース接続を反映するよう、必要となる Oracle データベースアクセスパラメータを tokens_ora.properties ファイルで修正します。
tokens_ora.properties ファイルの値を使用し、各アプリケーションに対して JDBC リソースを作成します。
Resource JNDI Name: jdbc/OracleFilesharingDBこの値は、tokens_ora.properties ファイルの DB-JNDI-NAME 値と一致する必要があります。
Resource Type: javax.sql.DataSource
Datasource Classname: oracle.jdbc.pool.OracleDataSourceこの値は、tokens_ora.properties ファイルの DB-DATASOURCE 値と一致する必要があります。
User: portalfsこの値は、tokens_ora.properties ファイルの DB-USER 値と一致する必要があります。
Password: portalfsこの値は、tokens_ora.properties ファイルの DB_PASSWORD 値と一致する必要があります。
URL: jdbc:oracle:thin:@oracle.acme.com:1521:portalこの値は、tokens_ora.properties ファイルの DB-URL 値と一致する必要があります。
いくつかの Web コンテナでは、JDBC リソースを設定する前に JDBC 接続プールを定義する必要があります。
データソースとして Derby データベースを使用する既存のポートレットを配備解除します。
/opt/SUNWportal/bin/psadmin undeploy-portlet -u uid=amadmin,ou=people,dc=acme,dc=com -f Password-File -p Portal ID -g portlet
新たに設定されたポートレットを配備します。
cd Portal-Data-Dir/portals/Portal-ID/portletapps/ Portlet_Application
/usr/sfw/bin/ant -D"portal.id=portal1" -Dapp.version=ora