Service Registry 3.1 发行说明

兼容性问题

本节介绍了与兼容性相关的以下问题:

使用期限即将终止的功能

用户注册机制

此发行版的 Service Registry 依赖其自身的用户管理和验证机制。计划在将来的发行版中将 Registry 更新为基于 SAML 的机制(如 ebXML Registry 标准中所指定,此组件是该标准中的一个实现)。

与兼容性相关的错误

Service Registry 3.1 中的下列错误与兼容性相关。

6422192:将 Service Registry 3.1 管理工具用在 Service Registry 3.0 上时会导致 NullPointerException

问题摘要:如果将 Service Registry 3.1 管理工具用在已部署的 Service Registry 3.0 上,则 cprm 等命令将导致 NullPointerException

解决方法:Service Registry 3.1 管理工具只能用在 Service Registry 3.1 上,而 Service Registry 3.0 管理工具只能用在 Service Registry 3.0 上。

6463868:使用 JDK 1.6 的客户机程序或服务器会导致错误

问题摘要:如果在 JDK 1.6 环境中运行 JAXR 客户机程序,或将 Service Registry 部署在正在运行 JDK 1.6 的系统上,则程序执行查询或发布操作时,将导致运行时错误。根本问题在于 JDK 1.6 使用 1.3 版的 SOAP with Attachments API for Java (SAAJ),而 Application Server 使用 1.2 版。

解决方法:需要两种类型的解决方法,一种用于客户机系统,一种用于服务器。

Procedure执行客户机系统解决方法

如果客户机系统在运行 JDK 1.6,则需要客户机系统解决方法。该解决方法包括以下任务:

  1. 请确保您的类路径包括以下 JAR 文件:

    在 Solaris 操作系统上:

    /usr/share/lib/saaj-api.jar
    /usr/share/lib/saaj-impl.jar

    在 Linux 和 HP-UX 系统上:

    /opt/sun/share/lib/saaj-api.jar
    /opt/sun/share/lib/saaj-impl.jar

    例如,如果您的 Linux 系统的 Ant 目标包括如下设置,则类路径正确:

    <path id="classpath">
      <fileset dir="/opt/sun/share/lib">
        <include name="*.jar"/>
      </fileset>
      ...
    </path>
  2. 将以下 <sysproperty> 标记添加到 build.xml 文件中的 <java> 目标中:

    <sysproperty key="javax.xml.soap.MessageFactory" 
       value="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/>
    <sysproperty key="javax.xml.soap.MetaFactory" 
       value="com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl"/>
    <sysproperty key="javax.xml.soap.SOAPConnectionFactory" 
       value="com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory"/>
    <sysproperty key="javax.xml.soap.SOAPFactory" 
       value="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl"/>

Procedure执行服务器系统解决方法

服务器系统解决方法包括以下任务:

  1. 更改到 Application Server lib 目录。

    在 Solaris 操作系统上:cd /opt/SUNWappserver/appserver/lib

    在 Linux 和 HP-UX 系统上:cd /opt/sun/appserver/lib

  2. 在 Application Server lib 目录中建立两个 SAAJ JAR 文件的备份副本。例如:


    cp saaj-api.jar saaj-api.jar.v1.2
    cp saaj-impl.jar saaj-impl.jar.v1.2
    
  3. 将 SAAJ 1.3 JAR 文件复制到 Application Server lib 目录中。

    在 Solaris 操作系统上:


    cp /usr/share/lib/saaj-api.jar .
    cp /usr/share/lib/saaj-impl.jar .
    

    在 Linux 和 HP-UX 系统上:


    cp /opt/sun/share/lib/saaj-api.jar .
    cp /opt/sun/share/lib/saaj-impl.jar .
    
  4. 《Service Registry 3.1 Administration Guide》中的“To Use the Application Server Admin Console”所述,登录 Application Server 管理控制台。

  5. 展开“配置”节点。

  6. 展开服务器节点 server-config (Admin Config)

  7. 单击“JVM 设置”。

  8. 单击“JVM 选项”选项卡。

  9. 单击“添加 JVM 选项”。

  10. 在文本字段中键入以下内容:


    -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl
    
  11. 再次单击“添加 JVM 选项”。

  12. 在文本字段中键入以下内容:


    -Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl
    
  13. 单击“保存”。

  14. 按照《Service Registry 3.1 Administration Guide》中的“To Stop and Restart the Application Server Domain for the Registry”的说明进行操作。

6475651:Application Server 升级后,Java ES 2005Q4 Service Registry 登录失败

问题摘要:如果已安装并使用先前版本的 Service Registry(从 Java ES 2005Q4),并且现在已升级到 Java ES 5 版本的 Application Server,但未升级到 Java ES 5 版本的 Service Registry,则尝试使用先前通过 Web 控制台创建的同一证书时会导致登录失败。

解决方法:编辑 web.xml 文件和 Service Registry 的安全策略文件。

    要停止 Registry 的 Application Server 域并编辑 web.xml 文件,请执行以下步骤:

  1. 更改到 Service Registry 安装目录:

    在 Solaris 操作系统上:cd /opt/SUNWsoar/install

    在 Linux 和 HP-UX 系统上:cd /opt/sun/SUNWsoar/install

  2. 停止 Registry 的 Application Server 域:

    Ant-base/ant -f build-install.xml appserver.domain.stop

  3. 更改到目录 RegistryDomain-base /domains/registry/applications/j2ee-modules/soar/WEB-INF/

  4. 在文本编辑器中打开文件 web.xml

  5. </web-resource-collection> 标记后的 <security-constraint> 标记内,插入以下内容:

    <auth-constraint>
      <role-name>have.client.cert</role-name>
    </auth-constraint>
  6. </security-constraints> 标记后,插入以下内容:

    <error-page>
      <error-code>400</error-code>
      <location>/registry/thin/AuthenticateError.jsp</location>
    </error-page>
    <security-role>
      <description>all subjects who have client certificates</description>
      <role-name>have.client.cert</role-name>
    </security-role>
  7. 保存并关闭 web.xml 文件。

    要编辑安全策略文件并重新启动域,请执行以下步骤:

  1. 更改到以下目录:

    在 Solaris 操作系统上:cd /var/opt/SUNWsoar/domains/registry/config

    在 Linux 和 HP-UX 系统上:cd /var/opt/sun/SUNWsoar/domains/registry/config

  2. 在文本编辑器中打开文件 server.policy

  3. 向此文件中添加以下授权:

    grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-modules/soar/WEB-INF/lib/-"{
           permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
    };
    
    grant codeBase "file:${com.sun.aas.instanceRoot}/generated/jsp/j2ee-modules/soar/-" {
          permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
    };
  4. 保存并关闭 server.policy 文件。

  5. 重新启动 Registry 的 Application Server 域:

    Ant-base/ant -f build-install.xml appserver.domain.start

  6. 打开 Web 浏览器,转至 URL http://localhost:6060/soar。现在,您应可以登录和发布。

6491246:在 HP-UX 平台上升级失败

问题摘要:如果在 HP-UX 系统上已安装并使用先前版本的 Service Registry(从 Java ES 2005Q4),并且现在已升级到 Java ES 5 版本的 Service Registry,则安装将失败,并显示错误消息,指出 HADB(High Availability Database,高可用性数据库)出现问题。出现的问题就是 HADB 软件包的安装位置并不是 Java ES 5 安装程序所视为的默认位置。

如果卸载Application Server的 Java ES 2005Q4 版本,然后安装 Service Registry 和Application Server的 Java ES 5 版本,也会出现此问题。

解决方法:如果已卸载Application Server,必须删除 sun-hadb 软件包,然后才能进行重新安装。

如果要直接从 Service Registry 的 Java ES 2005Q4 版本升级到 Java ES 5 版本,则步骤较为复杂:

  1. 删除 sun-hadb 软件包。

  2. 安装 Service Registry 和Application Server的 Java ES 5 版本。

  3. 按如下所示编辑文件 /opt/sun/appserver/config/asenv.conf

    • 将行

      AS_ANT="/opt/sun/share/lib/ant/bin"

      更改为

      AS_ANT="/opt/sun/bin"
    • 将行

      AS_ANT_LIB="/opt/sun/share/lib/ant/lib"

      更改为

      AS_ANT_LIB="/opt/sun/share/lib"
    • 添加以下两行:

      AS_DERBY_INSTALL="/opt/sun/javadb"
      AS_MFWK_HOME=/opt/sun/mfwk/share
  4. 在目录 /opt/sun/appserver/lib 中,创建名为 endorsed 的子目录。

  5. 将文件 /opt/sun/javadb/lib/derby.jar 复制到目录 /opt/sun/appserver/lib/endorsed 中。