本节介绍了与兼容性相关的以下问题:
此发行版的 Service Registry 依赖其自身的用户管理和验证机制。计划在将来的发行版中将 Registry 更新为基于 SAML 的机制(如 ebXML Registry 标准中所指定,此组件是该标准中的一个实现)。
Service Registry 3.1 中的下列错误与兼容性相关。
问题摘要:如果将 Service Registry 3.1 管理工具用在已部署的 Service Registry 3.0 上,则 cp 和 rm 等命令将导致 NullPointerException。
解决方法:Service Registry 3.1 管理工具只能用在 Service Registry 3.1 上,而 Service Registry 3.0 管理工具只能用在 Service Registry 3.0 上。
问题摘要:如果在 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 版。
解决方法:需要两种类型的解决方法,一种用于客户机系统,一种用于服务器。
如果客户机运行 JDK 1.6 而服务器运行 JDK 1.5,请执行执行客户机系统解决方法中的步骤。
如果客户机运行 JDK 1.5 而服务器运行 JDK 1.6,请执行执行服务器系统解决方法中的步骤。
如果客户机和服务器都在运行 JDK 1.6,请执行这两种解决方法的步骤。
如果客户机系统在运行 JDK 1.6,则需要客户机系统解决方法。该解决方法包括以下任务:
如果 SAAJ 1.3 JAR 文件还不存在,则将其添加到类路径
在 Ant 构建文件中为客户机程序设置四个系统属性
请确保您的类路径包括以下 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>
将以下 <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"/>
服务器系统解决方法包括以下任务:
将 SAAJ 1.3 JAR 文件置于 Application Server lib 目录中
添加两个 JVM 选项以设置系统属性
停止并重新启动 Application Server
更改到 Application Server lib 目录。
在 Solaris 操作系统上:cd /opt/SUNWappserver/appserver/lib
在 Linux 和 HP-UX 系统上:cd /opt/sun/appserver/lib
在 Application Server lib 目录中建立两个 SAAJ JAR 文件的备份副本。例如:
cp saaj-api.jar saaj-api.jar.v1.2 cp saaj-impl.jar saaj-impl.jar.v1.2 |
将 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 . |
如《Service Registry 3.1 Administration Guide》中的“To Use the Application Server Admin Console”所述,登录 Application Server 管理控制台。
展开“配置”节点。
展开服务器节点 server-config (Admin Config)。
单击“JVM 设置”。
单击“JVM 选项”选项卡。
单击“添加 JVM 选项”。
在文本字段中键入以下内容:
-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl |
再次单击“添加 JVM 选项”。
在文本字段中键入以下内容:
-Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl |
单击“保存”。
问题摘要:如果已安装并使用先前版本的 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 文件,请执行以下步骤:
更改到 Service Registry 安装目录:
在 Solaris 操作系统上:cd /opt/SUNWsoar/install
在 Linux 和 HP-UX 系统上:cd /opt/sun/SUNWsoar/install
停止 Registry 的 Application Server 域:
Ant-base/ant -f build-install.xml appserver.domain.stop
更改到目录 RegistryDomain-base /domains/registry/applications/j2ee-modules/soar/WEB-INF/。
在文本编辑器中打开文件 web.xml。
在 </web-resource-collection> 标记后的 <security-constraint> 标记内,插入以下内容:
<auth-constraint> <role-name>have.client.cert</role-name> </auth-constraint>
在 </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>
保存并关闭 web.xml 文件。
要编辑安全策略文件并重新启动域,请执行以下步骤:
更改到以下目录:
在 Solaris 操作系统上:cd /var/opt/SUNWsoar/domains/registry/config
在 Linux 和 HP-UX 系统上:cd /var/opt/sun/SUNWsoar/domains/registry/config
在文本编辑器中打开文件 server.policy。
向此文件中添加以下授权:
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"; };
保存并关闭 server.policy 文件。
重新启动 Registry 的 Application Server 域:
Ant-base/ant -f build-install.xml appserver.domain.start
打开 Web 浏览器,转至 URL http://localhost:6060/soar。现在,您应可以登录和发布。
问题摘要:如果在 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 版本,则步骤较为复杂: