33.4 JBoss 的安装后步骤

要在 JBoss Enterprise Application Platform(EAP)上部署 Identity Applications,需要执行几个手动安装步骤。

  1. 安装 JBoss EAP。

  2. 按照使用引导式过程安装 Identity Applications或部分 33.3, 以无提示模式安装 Identity Applications中所述安装 Identity Applications。

  3. 创建包含以下内容的新 messaging-jboss-beans.xml 文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--
     ========================================================================
    
     Copyright (c) 2014 NetIQ Corporation. 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>
    
  4. 将 IDMProv/deploy/messaging 文件夹中的现有 messaging-jboss-beans.xml 文件替换为您在步骤 3 中创建的文件。

  5. 找到 JBoss 的持久性服务配置文件。例如,对于 PostgreSQL 数据库,该文件为 novell\\jboss\docs\examples\jms 目录中的 postgresql-persistence-service.xml。

  6. 将现有的持久性服务配置文件替换为数据库示例文件夹中的文件。例如,对于 PostgreSQL,请替换为 %jboss-root%/docs/examples/jms/postgresql-persistence-service.xml 文件。

  7. 将新的持久性服务配置文件的副本添加到 %jboss-root%/server/IDMProv/deploy/messaging/ 目录中。

  8. 打开持久性服务配置文件,然后完成以下步骤:

    1. 将文本 DefaultDS 替换为文本 IDMUADataSource。

    2. 在 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>
      
    3. 将以下行替换为指定的文本:

      将此文本

      替换为此文本

      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')

    4. 保存并关闭持久性服务配置文件。

  9. 启动 JBoss。

  10. (视情况而定)如果无法在 Windows 服务器上启动 JBoss,请执行解决方案 310273:“System properties cannot be set via run.bat script in EAP 5.2”(在 EAP 5.2 中无法通过 run.bat 脚本设置系统属性)中指定的解决方法。

    发生此问题时,server.log 文件将记录 AbstractKernelController 的异常错误。有关详细信息,请参见 JBoss 社区论坛中有关 JBPAAP-10938 和 JBPAAP-9581 的讨论。

  11. 完成以下步骤,将 JBoss 管理员帐户添加到 stop-jboss.sh 脚本:

    1. 打开 stop-jboss.sh 脚本。

    2. 在 shutdown.sh 命令的末尾,追加 JBoss 管理员的用户帐户和口令。使用以下语法:

      shutdown.sh -s jnp://localhost:1199 -u %user_account% -p %password%
      

      例如:

      shutdown.sh -s jnp://localhost:1199 -u admin -p novell
      
    3. 保存并关闭脚本。

  12. (可选)为确认配置正确,请确保服务器日志包含以下信息:

    INFO  [ServerPeer] JBoss Messaging 1.4.7.GA server [0] started
    
    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