选择Factory类的提供者

时间:2017-08-11 14:33:49

标签: java factory tibco-business-works

我从我的Tibco进程中调用java类的方法。该类使用DocumentBuilderFactroy抽象类。

DocumentBuilderFactroy documentBuilderFactroy = DocumentBuilderFactroy.neInstance ();

当我在eclipse中本地运行应用程序时,一切正常。但在部署模式下,我有以下错误:

  

javax.xml.parsers.DocumentBuilderFactory的提供者不能   创建

所以我通过指定实现类改变了在代码中实例化documentBuilderFactroy对象的方式。

String providerDBF = "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl";
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance (providerDBF, null);

我的问题是:如何在没有硬编码的情况下指定实现类来避免问题?

我没有使用Maven。

感谢。

1 个答案:

答案 0 :(得分:0)

JavaDocs个州,可以在哪里设置:

  

此方法使用以下有序查找过程来确定   要加载的DocumentBuilderFactory实现类:

     
      
  • 使用javax.xml.parsers.DocumentBuilderFactory系统属性。
  •   
  • 使用JRE目录中的属性文件“lib / jaxp.properties”。此配置文件位于标准java.util.Properties中   format并包含实现的完全限定名称   密钥是上面定义的系统属性的类。该   jaxp.properties文件只能由JAXP实现读取一次   然后缓存它的值以供将来使用。如果该文件不存在   当第一次尝试从中读取时,不再进行尝试   是为了检查它的存在。无法改变   读取之后jaxp.properties中任何属性的值   第一次。
  •   
  • 使用ServiceLoader类定义的服务提供者加载工具来尝试查找和加载实现   使用默认加载机制的服务:   服务提供者加载工具将使用当前线程   上下文类加载器尝试加载服务。如果是上下文   class loader为null,将使用系统类加载器。
  •   
  • 否则,将返回系统默认实现。
  •