i!!为何在从 Internet 脱机的情况下运行 GlassFish 会收到错误消息? 实际上,您*可以*在从 Internet 断开时运行 GlassFish。在服务器断开时,如果您在部署应用程序或重新启动服务器时收到错误消息,则可能是由于在应用程序的描述符中将名称空间 URL 或系统 ID 拼写错了。 例如,使用不正确的 DOCTYPE <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.1 EJB 2.1//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-ejb-jar_2_1-1.dtd"> 而不是 <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 EJB 2.1//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-ejb-jar_2_1-1.dtd"> (请注意第一个系统 ID 中多余的 "Sun ONE")的 sun-ejb-jar.xml 描述符可能会针对_连接的_ GlassFish 服务器正常工作(虽然更慢),因为它可以使用 URL 通过 Internet 获取 DTD。但如果同一服务器后来_断开_且必须再次解析该描述符,则将无法解析。 断开的服务器之所以能够运行,是因为 GlassFish 具有针对标准 J2EE 和 Java EE 描述符以及针对特定于 GlassFish 的描述符的 DTD 和 XSD 文件的本地盘上副本(目前位于 $
Unknown macro: {install-dir}
/lib/dtds 和 .../schemas,但这些位置可能会更改)。当 GlassFish 解析描述符时,它会使用应用程序描述符中的系统 ID 或名称空间 URL 来定位正确的本地 DTD 或模式副本。 如果描述符不引用这些已知系统 ID 或名称空间 URL 之一,则 GlassFish 将找不到相应的本地 DTD 或 XSD 副本,进而会尝试使用 URL(即通过网络)获取该文件。此时,如果 GlassFish 是在从 Internet 断开的情况下运行,则无法访问 www.sun.com 站点,因此在部署或重新启动过程中解析描述符时会报告错误。 这为什么很重要? 某些 GlassFish 安装(从机场候机室中的开发者一直到高安全性安装,都必须与外部环境隔绝)可能需要在断开的情况下运行。如果描述符正确,GlassFish 将在这种情况下运行良好...... |