Java的许多部分因平台默认值不同而工作不同,例如,从SAXParserFactory创建Sax解析器使用基于系统属性"javax.xml.parsers.SAXParserFactory“的不同工厂实现。但是,如果未定义该属性,则使用"platform default“。
我很难找到任何给定JVM/平台的平台缺省值。这对于了解何时需要部署到多个平台,或者何时调试某些东西,以及需要了解更多有关特定实现的知识,都非常有用。
在哪里可以找到这些默认值(通常是系统属性名称)和各种平台的默认值的列表?
发布于 2009-09-08 20:57:20
Tolstoy.com过去有一个带有各种操作系统默认值的页面,但是现在它已经消失了.但是你可以用因特网的回传机器来取回它!
http://web.archive.org/web/20070724075948/http://tolstoy.com/samizdat/sysprops.html
发布于 2009-09-08 22:55:28
在大多数情况下,平台默认实现恰好是“Platform”中始终可用的回退类。在这些情况下,平台被解释为Java运行时环境安装(我必须添加)。毕竟,只有平台提供者才能声明默认情况。对于应用服务器,定义可以扩展到包括应用服务器提供的环境,而不仅仅是Java运行时。
例如,Sun 5及更高版本中的JRE将使用"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl“作为SAXParserFactory的后备实现。这主要是因为Sun的JRE(至少从Java1.4开始)附带了完整的JAXP实现。
您可以参考SAXParserFactory和FactoryFinder类的源代码(在javax.xml.parsers包中)来了解如何做到这一点。很想知道Sun在Java1.3中曾经做过什么,但我不确定这些源代码是否可用。
由于在此上下文中已经提到了应用程序服务器,所以最好记住,某些应用服务器(例如Weblogic)将SAXParserFactory设置为所有应用程序在服务器级别上使用。应用程序可以在应用程序级别覆盖它;Weblogic允许您通过weblog-application.xml配置文件完成此操作。它可以在服务器级别(多个服务器构成Weblogic域)或域级别本身被重写,其中最底层(最适用的)配置优先。
获取平台默认列表的(更确切地说,尝试)
正如您现在可能已经知道的,获得不同平台的默认值可能会很困难,特别是当您不得不担心运行时环境(Sun、IBM、Oracle有它们自己的运行时;您还可以添加Apache Harmony、GCJ、Kaffe等)和应用服务器时。平台的默认设置也可能因平台而异,对于应用程序服务器而不是实际的Java运行时更是如此( IBM AIX上的应用服务器不会寻找Sun Java平台的回退)。
发布于 2009-09-08 20:20:57
作为一个一般性问题,这在很大程度上取决于讨论中的具体违约。在SAX解析器的特定情况下,您必须认识到Java规范的编写思想不仅仅是Sun (现在的Oracle)将实现它。因此,当它说“平台默认”SAXParserFactory时,它意味着JVM实现者决定作为缺省值返回的任何东西。在Sun中,这是一个修改过的Apache实现。
我不知道来自任何JVM实现者的“这些是我们的默认实现”列表。但对于给定的违约,不难找到。
在其他情况下,平台默认值可以引用操作系统(类似时区、文件分隔符等)。
https://stackoverflow.com/questions/1396056
复制相似问题