Roles Based Provisioning ModuleをJBoss 5.1.2 Enterprise Application Platform (EAP)上に展開するには、手動でのセットアップステップをいくつか実行する必要があります。このセットアッププロセスについて次に説明します。
JBoss 5.1.2 EAPをインストールします。
RBPMユーザアプリケーションインストーラを起動する前に、jbosssx.jarファイルを%jboss-root%/libディレクトリから%jboss-root%/common/libディレクトリにコピーします。
RBPMユーザアプリケーションをインストールします。
現在のmessaging-jboss-beans.xmlファイルを、変更したXMLファイルに置き換えます。
messaging-jboss-beans.xmlファイルを置き換えずにRBPMをJBoss 5.1.2 EAPに展開すると、スタートアップログに警告やエラーが複数記録される場合があります。
問題は、RBPMインストーラがファイルの固有バージョンを生成するためのテンプレートとして、messaging-jboss-beans.xmlファイルのコミュニティバージョンを使用することです。残念ながら、EAPバージョンは、QueueMODefinitionおよびTopicMODefinitionの定義を含む多くの点で異なっています。
この問題を回避するには、以下に示した変更済みのXMLファイルでmessaging-jboss-beans.xmlファイルを置換することです。このファイルは、「IDMProv/deploy/messaging」フォルダになければなりません。
<?xml version="1.0" encoding="UTF-8"?>
<!--
========================================================================
Copyright (c) 2009 Novell, Inc. All Rights Reserved.
THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES
NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED COPIED, DISTRIBUTED,
REVISED, MODIFIED, TRANSLATED, ABRIDGED, CONDENSED, EXPANDED, COLLECTED,
COMPILED, LINKED, RECAST, TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN
CONSENT OF NOVELL, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT
AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND CIVIL
LIABILITY.
========================================================================
-->
<!--
Messaging beans
$Id: messaging-jboss-beans.xml 88672 2009-05-11 20:49:47Z anil.saldhana@jboss.com $
-->
<deployment xmlns="urn:jboss:bean-deployer:2.0">
<!-- messaging application-policy definition -->
<application-policy xmlns="urn:jboss:security-beans:1.0" name="messaging">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="unauthenticatedIdentity">guest</module-option>
<module-option name="dsJndiName">java:/IDMUADataSource</module-option>
<module-option name="principalsQuery">SELECT PASSWD FROM JBM_USER WHERE USER_ID=?</module-option>
<module-option name="rolesQuery">SELECT ROLE_ID, 'Roles' FROM JBM_ROLE WHERE USER_ID=?</module-option>
</login-module>
</authentication>
</application-policy>
<bean name="SecurityStore" class="org.jboss.jms.server.jbosssx.JBossASSecurityMetadataStore">
<!-- default security configuration -->
<property name="defaultSecurityConfig">
<![CDATA[
<security>
<role name="guest" read="true" write="true" create="true"/>
</security>
]]>
</property>
<property name="suckerPassword">changeit</property>
<property name="securityDomain">messaging</property>
<property name="securityManagement"><inject bean="JNDIBasedSecurityManagement"/></property>
<!-- @JMX annotation to export the management view of this bean -->
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.messaging:service=SecurityStore",exposedInterface=org.jboss.jms.server.jbosssx.JBossASSecurityMetadataStoreMBean.class)</annotation>
<!-- Password Annotation to inject the password from the common password utility
<annotation>@org.jboss.security.integration.password.Password(securityDomain="messaging",methodName="setSuckerPassword")</annotation>
-->
</bean>
<bean name="MessagingDeploymentTemplateInfoFactory"
class="org.jboss.managed.plugins.factory.DeploymentTemplateInfoFactory"/>
<bean name="QueueTemplate" class="org.jboss.profileservice.management.templates.JmsDestinationTemplate">
<property name="info"><inject bean="QueueTemplateInfo"/></property>
</bean>
<bean name="QueueTemplateInfo"
class="org.jboss.profileservice.management.templates.JmsDestinationTemplateInfo">
<constructor factoryMethod="createTemplateInfo">
<factory bean="DSDeploymentTemplateInfoFactory"/>
<parameter class="java.lang.Class">org.jboss.profileservice.management.templates.JmsDestinationTemplateInfo</parameter>
<parameter class="java.lang.Class">org.jboss.jms.server.destination.QueueServiceMO</parameter>
<parameter class="java.lang.String">QueueTemplate</parameter>
<parameter class="java.lang.String">A template for JMS queue *-service.xml deployments</parameter>
</constructor>
<property name="destinationType">QueueTemplate</property>
</bean>
<bean name="TopicTemplate" class="org.jboss.profileservice.management.templates.JmsDestinationTemplate">
<property name="info"><inject bean="TopicTemplateInfo"/></property>
</bean>
<bean name="TopicTemplateInfo"
class="org.jboss.profileservice.management.templates.JmsDestinationTemplateInfo">
<constructor factoryMethod="createTemplateInfo">
<factory bean="DSDeploymentTemplateInfoFactory"/>
<parameter class="java.lang.Class">org.jboss.profileservice.management.templates.JmsDestinationTemplateInfo</parameter>
<parameter class="java.lang.Class">org.jboss.jms.server.destination.TopicServiceMO</parameter>
<parameter class="java.lang.String">TopicTemplate</parameter>
<parameter class="java.lang.String">A template for JMS topic *-service.xml deployments</parameter>
</constructor>
<property name="destinationType">TopicTemplate</property>
</bean>
</deployment>
postgresql-persistence-service.xmlファイルを%jboss-root%/docs/examples/jms/postgresql-persistence-service.xmlファイルで置き換え、それを%jboss-root%/server/IDMProv/deploy/messaging/にコピーします。
postgresql-persistence-service.xmlファイルを編集して、DefaultDSというテキストをIDMUADataSourceというテキストに置き換えます。
postgresql-persistence-service.xmlファイルで、Clustered属性内にある次の行もコメント化します。
<attribute name="Clustered">false</attribute>
<!-- All the remaining properties only have to be specified if the post
office is clustered.
You can safely comment them out if your post office is non clustered
-->
<!-- The JGroups group name that the post office will use -->
<!--attribute
name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>-->
<!-- Max time to wait for state to arrive when the post office joins the
cluster -->
<!--attribute name="StateTimeout">30000</attribute>-->
<!-- Max time to wait for a synchronous call to node members using the
MessageDispatcher -->
<!--attribute name="CastTimeout">30000</attribute>-->
<!-- Set this to true if you want failover of connections to occur when a
node is shut down -->
<!--<attribute name="FailoverOnNodeLeave">false</attribute>
<depends
optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>
<attribute name="ControlChannelName">jbm-control</attribute>
<attribute name="DataChannelName">jbm-data</attribute>
<attribute
name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>-->
</mbean>
さらに、postgresql-persistence-service.xmlで、次の作業を行います。
次の行を見つけます。
POPULATE.TABLES.3 = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID)
VALUES ('john', 'needle', 'DurableSubscriberExample')
これを次の行に置き換えます。
POPULATE.TABLES.3 = INSERT INTO JBM_USER (USER_ID, PASSWD,
CLIENTID) VALUES ('p_user', 'changeit', 'IDMNotificationDurableTopic')
次の行を見つけます。
POPULATE.TABLES.8 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES
('john','guest')
これを次の行に置き換えます。
POPULATE.TABLES.8 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID)
VALUES ('p_user','guest')
次の行を見つけます。
POPULATE.TABLES.9 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES
('subscriber','john')
これを次の行に置き換えます。
POPULATE.TABLES.9 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID)
VALUES ('subscriber','p_user')
次の行を見つけます。
POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES
('publisher','john')
これを次の行に置き換えます。
POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID)
VALUES ('durpublisher','p_user')
JBossを起動します。
正しく設定されていれば、サーバログに次の情報が記録されます。
INFO [ServerPeer] JBoss Messaging 1.4.7.GA server [0] started
{About 7 lines down}
INFO [TopicService] Topic[/topic/IDMNotificationDurableTopic] started,
fullSize=200000, pageSize=2000, downCacheSize=2000
また、同じログのさらに下の方に、次の情報も記録されます。
INFO [RBPM] [com.novell.soa.notification.impl.jms.JMSConnectionMediator:init] Starting JMS notification system INFO [STDOUT] INFO [RBPM] [com.novell.soa.notification.impl.NotificationThread:run] Starting asynchronous notification system
これら以外に、インストール処理中に作成されるstop-jboss.shスクリプトも変更する必要があります。次のように、JBoss管理者のユーザIDとパスワードをshutdownコマンドの末尾に追加する必要があります。
shutdown.sh -s jnp://localhost:1199 -u %value% -p %value%
次に例を示します。
shutdown.sh -s jnp://localhost:1199 -u admin -p novell